From 6666b3d46b0275c4bcc43264b4abb82b010697bc Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Mon, 18 Aug 2025 11:18:26 +0000 Subject: [PATCH 01/17] fix: pre-audit build-info Signed-off-by: Reinis Martinsons --- old-builds/build-info-v1/b216d03a13a7aeb5.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 old-builds/build-info-v1/b216d03a13a7aeb5.json diff --git a/old-builds/build-info-v1/b216d03a13a7aeb5.json b/old-builds/build-info-v1/b216d03a13a7aeb5.json new file mode 100644 index 0000000..1a6cf28 --- /dev/null +++ b/old-builds/build-info-v1/b216d03a13a7aeb5.json @@ -0,0 +1 @@ +{"id":"b216d03a13a7aeb5","source_id_to_path":{"0":"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol","1":"lib/openzeppelin-contracts-upgradeable/contracts/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol","2":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","3":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol","4":"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol","5":"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol","6":"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol","7":"lib/openzeppelin-contracts/contracts/access/Ownable.sol","8":"lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol","9":"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol","10":"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol","11":"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol","12":"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol","13":"lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol","14":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","15":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol","16":"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","17":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","18":"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol","19":"lib/openzeppelin-contracts/contracts/utils/Address.sol","20":"lib/openzeppelin-contracts/contracts/utils/Context.sol","21":"lib/openzeppelin-contracts/contracts/utils/Errors.sol","22":"lib/openzeppelin-contracts/contracts/utils/Panic.sol","23":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","24":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","25":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol","26":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","27":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","28":"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol","29":"lib/protocol/packages/core/contracts/common/implementation/AncillaryData.sol","30":"lib/protocol/packages/core/contracts/common/implementation/Lockable.sol","31":"lib/protocol/packages/core/contracts/data-verification-mechanism/implementation/Constants.sol","32":"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/FinderInterface.sol","33":"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/IdentifierWhitelistInterface.sol","34":"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/OracleAncillaryInterface.sol","35":"src/common/implementation/AddressLegacy.sol","36":"src/common/implementation/AddressWhitelist.sol","37":"src/common/implementation/DisabledAddressWhitelist.sol","38":"src/common/implementation/LockableUpgradeable.sol","39":"src/common/implementation/MultiCaller.sol","40":"src/common/interfaces/AddressWhitelistInterface.sol","41":"src/common/interfaces/FixedPointInterface.sol","42":"src/data-verification-mechanism/interfaces/StoreInterface.sol","43":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol","44":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol","45":"src/optimistic-oracle-v2/interfaces/ManagedOptimisticOracleV2Interface.sol","46":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol"},"language":"Solidity","_format":"ethers-rs-sol-build-info-1","input":{"version":"0.8.30","language":"Solidity","sources":{"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (access/IAccessControl.sol)\n\npragma solidity >=0.8.4;\n\n/**\n * @dev External interface of AccessControl declared to support ERC-165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev The `account` is missing a role.\n */\n error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);\n\n /**\n * @dev The caller of a function is not the expected one.\n *\n * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\n */\n error AccessControlBadConfirmation();\n\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted to signal this.\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call. This account bears the admin role (for the granted role).\n * Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n */\n function renounceRole(bytes32 role, address callerConfirmation) external;\n}\n"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../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 * The initial owner is set to the address provided by the deployer. This can\n * 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 /**\n * @dev The caller account is not authorized to perform an operation.\n */\n error OwnableUnauthorizedAccount(address account);\n\n /**\n * @dev The owner is not a valid owner account. (eg. `address(0)`)\n */\n error OwnableInvalidOwner(address owner);\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n */\n constructor(address initialOwner) {\n if (initialOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(initialOwner);\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 if (owner() != _msgSender()) {\n revert OwnableUnauthorizedAccount(_msgSender());\n }\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 if (newOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\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"},"lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (access/extensions/IAccessControlDefaultAdminRules.sol)\n\npragma solidity >=0.8.4;\n\nimport {IAccessControl} from \"../IAccessControl.sol\";\n\n/**\n * @dev External interface of AccessControlDefaultAdminRules declared to support ERC-165 detection.\n */\ninterface IAccessControlDefaultAdminRules is IAccessControl {\n /**\n * @dev The new default admin is not a valid default admin.\n */\n error AccessControlInvalidDefaultAdmin(address defaultAdmin);\n\n /**\n * @dev At least one of the following rules was violated:\n *\n * - The `DEFAULT_ADMIN_ROLE` must only be managed by itself.\n * - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time.\n * - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps.\n */\n error AccessControlEnforcedDefaultAdminRules();\n\n /**\n * @dev The delay for transferring the default admin delay is enforced and\n * the operation must wait until `schedule`.\n *\n * NOTE: `schedule` can be 0 indicating there's no transfer scheduled.\n */\n error AccessControlEnforcedDefaultAdminDelay(uint48 schedule);\n\n /**\n * @dev Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next\n * address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule`\n * passes.\n */\n event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule);\n\n /**\n * @dev Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule.\n */\n event DefaultAdminTransferCanceled();\n\n /**\n * @dev Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next\n * delay to be applied between default admin transfer after `effectSchedule` has passed.\n */\n event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule);\n\n /**\n * @dev Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass.\n */\n event DefaultAdminDelayChangeCanceled();\n\n /**\n * @dev Returns the address of the current `DEFAULT_ADMIN_ROLE` holder.\n */\n function defaultAdmin() external view returns (address);\n\n /**\n * @dev Returns a tuple of a `newAdmin` and an accept schedule.\n *\n * After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role\n * by calling {acceptDefaultAdminTransfer}, completing the role transfer.\n *\n * A zero value only in `acceptSchedule` indicates no pending admin transfer.\n *\n * NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced.\n */\n function pendingDefaultAdmin() external view returns (address newAdmin, uint48 acceptSchedule);\n\n /**\n * @dev Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started.\n *\n * This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set\n * the acceptance schedule.\n *\n * NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this\n * function returns the new delay. See {changeDefaultAdminDelay}.\n */\n function defaultAdminDelay() external view returns (uint48);\n\n /**\n * @dev Returns a tuple of `newDelay` and an effect schedule.\n *\n * After the `schedule` passes, the `newDelay` will get into effect immediately for every\n * new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}.\n *\n * A zero value only in `effectSchedule` indicates no pending delay change.\n *\n * NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay}\n * will be zero after the effect schedule.\n */\n function pendingDefaultAdminDelay() external view returns (uint48 newDelay, uint48 effectSchedule);\n\n /**\n * @dev Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance\n * after the current timestamp plus a {defaultAdminDelay}.\n *\n * Requirements:\n *\n * - Only can be called by the current {defaultAdmin}.\n *\n * Emits a DefaultAdminRoleChangeStarted event.\n */\n function beginDefaultAdminTransfer(address newAdmin) external;\n\n /**\n * @dev Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}.\n *\n * A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function.\n *\n * Requirements:\n *\n * - Only can be called by the current {defaultAdmin}.\n *\n * May emit a DefaultAdminTransferCanceled event.\n */\n function cancelDefaultAdminTransfer() external;\n\n /**\n * @dev Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}.\n *\n * After calling the function:\n *\n * - `DEFAULT_ADMIN_ROLE` should be granted to the caller.\n * - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder.\n * - {pendingDefaultAdmin} should be reset to zero values.\n *\n * Requirements:\n *\n * - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`.\n * - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed.\n */\n function acceptDefaultAdminTransfer() external;\n\n /**\n * @dev Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting\n * into effect after the current timestamp plus a {defaultAdminDelay}.\n *\n * This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this\n * method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay}\n * set before calling.\n *\n * The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then\n * calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin}\n * complete transfer (including acceptance).\n *\n * The schedule is designed for two scenarios:\n *\n * - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by\n * {defaultAdminDelayIncreaseWait}.\n * - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`.\n *\n * A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change.\n *\n * Requirements:\n *\n * - Only can be called by the current {defaultAdmin}.\n *\n * Emits a DefaultAdminDelayChangeScheduled event and may emit a DefaultAdminDelayChangeCanceled event.\n */\n function changeDefaultAdminDelay(uint48 newDelay) external;\n\n /**\n * @dev Cancels a scheduled {defaultAdminDelay} change.\n *\n * Requirements:\n *\n * - Only can be called by the current {defaultAdmin}.\n *\n * May emit a DefaultAdminDelayChangeCanceled event.\n */\n function rollbackDefaultAdminDelay() external;\n\n /**\n * @dev Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay})\n * to take effect. Default to 5 days.\n *\n * When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with\n * the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds)\n * that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can\n * be overrode for a custom {defaultAdminDelay} increase scheduling.\n *\n * IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise,\n * there's a risk of setting a high new delay that goes into effect almost immediately without the\n * possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds).\n */\n function defaultAdminDelayIncreaseWait() external view returns (uint48);\n}\n"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC1363.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @title IERC1363\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n *\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\n */\ninterface IERC1363 is IERC20, IERC165 {\n /*\n * Note: the ERC-165 identifier for this interface is 0xb0202a11.\n * 0xb0202a11 ===\n * bytes4(keccak256('transferAndCall(address,uint256)')) ^\n * bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\n * bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\n * bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\n * bytes4(keccak256('approveAndCall(address,uint256)')) ^\n * bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\n */\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferAndCall(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @param data Additional data with no specified format, sent in call to `to`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param from The address which you want to send tokens from.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param from The address which you want to send tokens from.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @param data Additional data with no specified format, sent in call to `to`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n * @param spender The address which will spend the funds.\n * @param value The amount of tokens to be spent.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function approveAndCall(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n * @param spender The address which will spend the funds.\n * @param value The amount of tokens to be spent.\n * @param data Additional data with no specified format, sent in call to `spender`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\n}\n"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC165.sol)\n\npragma solidity >=0.4.16;\n\nimport {IERC165} from \"../utils/introspection/IERC165.sol\";\n"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC1967.sol)\n\npragma solidity >=0.4.11;\n\n/**\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n */\ninterface IERC1967 {\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n}\n"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC20.sol)\n\npragma solidity >=0.4.16;\n\nimport {IERC20} from \"../token/ERC20/IERC20.sol\";\n"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC5313.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface for the Light Contract Ownership Standard.\n *\n * A standardized minimal interface required to identify an account that controls a contract\n */\ninterface IERC5313 {\n /**\n * @dev Gets the address of the owner.\n */\n function owner() external view returns (address);\n}\n"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev ERC-1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (proxy/ERC1967/ERC1967Utils.sol)\n\npragma solidity ^0.8.21;\n\nimport {IBeacon} from \"../beacon/IBeacon.sol\";\nimport {IERC1967} from \"../../interfaces/IERC1967.sol\";\nimport {Address} from \"../../utils/Address.sol\";\nimport {StorageSlot} from \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This library provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\n */\nlibrary ERC1967Utils {\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev The `implementation` of the proxy is invalid.\n */\n error ERC1967InvalidImplementation(address implementation);\n\n /**\n * @dev The `admin` of the proxy is invalid.\n */\n error ERC1967InvalidAdmin(address admin);\n\n /**\n * @dev The `beacon` of the proxy is invalid.\n */\n error ERC1967InvalidBeacon(address beacon);\n\n /**\n * @dev An upgrade function sees `msg.value > 0` that may be lost.\n */\n error ERC1967NonPayable();\n\n /**\n * @dev Returns the current implementation address.\n */\n function getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the ERC-1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n if (newImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(newImplementation);\n }\n StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Performs implementation upgrade with additional setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-Upgraded} event.\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) internal {\n _setImplementation(newImplementation);\n emit IERC1967.Upgraded(newImplementation);\n\n if (data.length > 0) {\n Address.functionDelegateCall(newImplementation, data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */\n function getAdmin() internal view returns (address) {\n return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the ERC-1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n if (newAdmin == address(0)) {\n revert ERC1967InvalidAdmin(address(0));\n }\n StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {IERC1967-AdminChanged} event.\n */\n function changeAdmin(address newAdmin) internal {\n emit IERC1967.AdminChanged(getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the ERC-1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n if (newBeacon.code.length == 0) {\n revert ERC1967InvalidBeacon(newBeacon);\n }\n\n StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\n\n address beaconImplementation = IBeacon(newBeacon).implementation();\n if (beaconImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(beaconImplementation);\n }\n }\n\n /**\n * @dev Change the beacon and trigger a setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-BeaconUpgraded} event.\n *\n * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n * efficiency.\n */\n function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\n _setBeacon(newBeacon);\n emit IERC1967.BeaconUpgraded(newBeacon);\n\n if (data.length > 0) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n * if an upgrade doesn't perform an initialization call.\n */\n function _checkNonPayable() private {\n if (msg.value > 0) {\n revert ERC1967NonPayable();\n }\n }\n}\n"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (proxy/beacon/IBeacon.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {UpgradeableBeacon} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\nimport {IERC1363} from \"../../../interfaces/IERC1363.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n /**\n * @dev An operation with an ERC-20 token failed.\n */\n error SafeERC20FailedOperation(address token);\n\n /**\n * @dev Indicates a failed `decreaseAllowance` request.\n */\n error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\n\n /**\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\n }\n\n /**\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n */\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\n }\n\n /**\n * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\n */\n function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\n return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\n }\n\n /**\n * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\n */\n function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\n return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\n }\n\n /**\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n *\n * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n */\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 oldAllowance = token.allowance(address(this), spender);\n forceApprove(token, spender, oldAllowance + value);\n }\n\n /**\n * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n * value, non-reverting calls are assumed to be successful.\n *\n * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n */\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\n unchecked {\n uint256 currentAllowance = token.allowance(address(this), spender);\n if (currentAllowance < requestedDecrease) {\n revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\n }\n forceApprove(token, spender, currentAllowance - requestedDecrease);\n }\n }\n\n /**\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n * to be set to zero before setting it to a non-zero value, such as USDT.\n *\n * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n * only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n * set here.\n */\n function forceApprove(IERC20 token, address spender, uint256 value) internal {\n bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\n\n if (!_callOptionalReturnBool(token, approvalCall)) {\n _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\n _callOptionalReturn(token, approvalCall);\n }\n }\n\n /**\n * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n * targeting contracts.\n *\n * Reverts if the returned value is other than `true`.\n */\n function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n if (to.code.length == 0) {\n safeTransfer(token, to, value);\n } else if (!token.transferAndCall(to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n * targeting contracts.\n *\n * Reverts if the returned value is other than `true`.\n */\n function transferFromAndCallRelaxed(\n IERC1363 token,\n address from,\n address to,\n uint256 value,\n bytes memory data\n ) internal {\n if (to.code.length == 0) {\n safeTransferFrom(token, from, to, value);\n } else if (!token.transferFromAndCall(from, to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n * targeting contracts.\n *\n * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n * once without retrying, and relies on the returned value to be true.\n *\n * Reverts if the returned value is other than `true`.\n */\n function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n if (to.code.length == 0) {\n forceApprove(token, to, value);\n } else if (!token.approveAndCall(to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n *\n * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\n */\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\n uint256 returnSize;\n uint256 returnValue;\n assembly (\"memory-safe\") {\n let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\n // bubble errors\n if iszero(success) {\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize())\n revert(ptr, returndatasize())\n }\n returnSize := returndatasize()\n returnValue := mload(0)\n }\n\n if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n *\n * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\n */\n function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\n bool success;\n uint256 returnSize;\n uint256 returnValue;\n assembly (\"memory-safe\") {\n success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\n returnSize := returndatasize()\n returnValue := mload(0)\n }\n return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\n }\n}\n"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\nimport {Errors} from \"./Errors.sol\";\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev There's no code at `target` (it is not a contract).\n */\n error AddressEmptyCode(address target);\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n if (address(this).balance < amount) {\n revert Errors.InsufficientBalance(address(this).balance, amount);\n }\n\n (bool success, bytes memory returndata) = recipient.call{value: amount}(\"\");\n if (!success) {\n _revert(returndata);\n }\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason or custom error, it is bubbled\n * up by this function (like regular Solidity function calls). However, if\n * the call reverted with no returned reason, this function reverts with a\n * {Errors.FailedCall} error.\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n if (address(this).balance < value) {\n revert Errors.InsufficientBalance(address(this).balance, value);\n }\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n * was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case\n * of an unsuccessful call.\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata\n ) internal view returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n // only check if target is a contract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n if (returndata.length == 0 && target.code.length == 0) {\n revert AddressEmptyCode(target);\n }\n return returndata;\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n * revert reason or with a default {Errors.FailedCall} error.\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n return returndata;\n }\n }\n\n /**\n * @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}.\n */\n function _revert(bytes memory returndata) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n assembly (\"memory-safe\") {\n revert(add(returndata, 0x20), mload(returndata))\n }\n } else {\n revert Errors.FailedCall();\n }\n }\n}\n"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\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"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of common custom errors used in multiple contracts\n *\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n * It is recommended to avoid relying on the error API for critical functionality.\n *\n * _Available since v5.1._\n */\nlibrary Errors {\n /**\n * @dev The ETH balance of the account is not enough to perform the operation.\n */\n error InsufficientBalance(uint256 balance, uint256 needed);\n\n /**\n * @dev A call to an address target failed. The target may have reverted.\n */\n error FailedCall();\n\n /**\n * @dev The deployment failed.\n */\n error FailedDeployment();\n\n /**\n * @dev A necessary precompile is missing.\n */\n error MissingPrecompile(address);\n}\n"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Helper library for emitting standardized panic codes.\n *\n * ```solidity\n * contract Example {\n * using Panic for uint256;\n *\n * // Use any of the declared internal constants\n * function foo() { Panic.GENERIC.panic(); }\n *\n * // Alternatively\n * function foo() { Panic.panic(Panic.GENERIC); }\n * }\n * ```\n *\n * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n *\n * _Available since v5.1._\n */\n// slither-disable-next-line unused-state\nlibrary Panic {\n /// @dev generic / unspecified error\n uint256 internal constant GENERIC = 0x00;\n /// @dev used by the assert() builtin\n uint256 internal constant ASSERT = 0x01;\n /// @dev arithmetic underflow or overflow\n uint256 internal constant UNDER_OVERFLOW = 0x11;\n /// @dev division or modulo by zero\n uint256 internal constant DIVISION_BY_ZERO = 0x12;\n /// @dev enum conversion error\n uint256 internal constant ENUM_CONVERSION_ERROR = 0x21;\n /// @dev invalid encoding in storage\n uint256 internal constant STORAGE_ENCODING_ERROR = 0x22;\n /// @dev empty array pop\n uint256 internal constant EMPTY_ARRAY_POP = 0x31;\n /// @dev array out of bounds access\n uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32;\n /// @dev resource error (too large allocation or too large array)\n uint256 internal constant RESOURCE_ERROR = 0x41;\n /// @dev calling invalid internal function\n uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51;\n\n /// @dev Reverts with a panic code. Recommended to use with\n /// the internal constants with predefined codes.\n function panic(uint256 code) internal pure {\n assembly (\"memory-safe\") {\n mstore(0x00, 0x4e487b71)\n mstore(0x20, code)\n revert(0x1c, 0x24)\n }\n }\n}\n"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC-1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(newImplementation.code.length > 0);\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * TIP: Consider using this library along with {SlotDerivation}.\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct Int256Slot {\n int256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Int256Slot` with member `value` located at `slot`.\n */\n function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns a `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := store.slot\n }\n }\n}\n"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n */\nabstract contract ERC165 is IERC165 {\n /// @inheritdoc IERC165\n function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165Checker.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @dev Library used to query support of an interface declared via {IERC165}.\n *\n * Note that these functions return the actual result of the query: they do not\n * `revert` if an interface is not supported. It is up to the caller to decide\n * what to do in these cases.\n */\nlibrary ERC165Checker {\n // As per the ERC-165 spec, no interface should ever match 0xffffffff\n bytes4 private constant INTERFACE_ID_INVALID = 0xffffffff;\n\n /**\n * @dev Returns true if `account` supports the {IERC165} interface.\n */\n function supportsERC165(address account) internal view returns (bool) {\n // Any contract that implements ERC-165 must explicitly indicate support of\n // InterfaceId_ERC165 and explicitly indicate non-support of InterfaceId_Invalid\n return\n supportsERC165InterfaceUnchecked(account, type(IERC165).interfaceId) &&\n !supportsERC165InterfaceUnchecked(account, INTERFACE_ID_INVALID);\n }\n\n /**\n * @dev Returns true if `account` supports the interface defined by\n * `interfaceId`. Support for {IERC165} itself is queried automatically.\n *\n * See {IERC165-supportsInterface}.\n */\n function supportsInterface(address account, bytes4 interfaceId) internal view returns (bool) {\n // query support of both ERC-165 as per the spec and support of _interfaceId\n return supportsERC165(account) && supportsERC165InterfaceUnchecked(account, interfaceId);\n }\n\n /**\n * @dev Returns a boolean array where each value corresponds to the\n * interfaces passed in and whether they're supported or not. This allows\n * you to batch check interfaces for a contract where your expectation\n * is that some interfaces may not be supported.\n *\n * See {IERC165-supportsInterface}.\n */\n function getSupportedInterfaces(\n address account,\n bytes4[] memory interfaceIds\n ) internal view returns (bool[] memory) {\n // an array of booleans corresponding to interfaceIds and whether they're supported or not\n bool[] memory interfaceIdsSupported = new bool[](interfaceIds.length);\n\n // query support of ERC-165 itself\n if (supportsERC165(account)) {\n // query support of each interface in interfaceIds\n for (uint256 i = 0; i < interfaceIds.length; i++) {\n interfaceIdsSupported[i] = supportsERC165InterfaceUnchecked(account, interfaceIds[i]);\n }\n }\n\n return interfaceIdsSupported;\n }\n\n /**\n * @dev Returns true if `account` supports all the interfaces defined in\n * `interfaceIds`. Support for {IERC165} itself is queried automatically.\n *\n * Batch-querying can lead to gas savings by skipping repeated checks for\n * {IERC165} support.\n *\n * See {IERC165-supportsInterface}.\n */\n function supportsAllInterfaces(address account, bytes4[] memory interfaceIds) internal view returns (bool) {\n // query support of ERC-165 itself\n if (!supportsERC165(account)) {\n return false;\n }\n\n // query support of each interface in interfaceIds\n for (uint256 i = 0; i < interfaceIds.length; i++) {\n if (!supportsERC165InterfaceUnchecked(account, interfaceIds[i])) {\n return false;\n }\n }\n\n // all interfaces supported\n return true;\n }\n\n /**\n * @notice Query if a contract implements an interface, does not check ERC-165 support\n * @param account The address of the contract to query for support of an interface\n * @param interfaceId The interface identifier, as specified in ERC-165\n * @return true if the contract at account indicates support of the interface with\n * identifier interfaceId, false otherwise\n * @dev Assumes that account contains a contract that supports ERC-165, otherwise\n * the behavior of this method is undefined. This precondition can be checked\n * with {supportsERC165}.\n *\n * Some precompiled contracts will falsely indicate support for a given interface, so caution\n * should be exercised when using this function.\n *\n * Interface identification is specified in ERC-165.\n */\n function supportsERC165InterfaceUnchecked(address account, bytes4 interfaceId) internal view returns (bool) {\n // prepare call\n bytes memory encodedParams = abi.encodeCall(IERC165.supportsInterface, (interfaceId));\n\n // perform static call\n bool success;\n uint256 returnSize;\n uint256 returnValue;\n assembly (\"memory-safe\") {\n success := staticcall(30000, account, add(encodedParams, 0x20), mload(encodedParams), 0x00, 0x20)\n returnSize := returndatasize()\n returnValue := mload(0x00)\n }\n\n return success && returnSize >= 0x20 && returnValue > 0;\n }\n}\n"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/IERC165.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.20;\n\nimport {Panic} from \"../Panic.sol\";\nimport {SafeCast} from \"./SafeCast.sol\";\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n enum Rounding {\n Floor, // Toward negative infinity\n Ceil, // Toward positive infinity\n Trunc, // Toward zero\n Expand // Away from zero\n }\n\n /**\n * @dev Return the 512-bit addition of two uint256.\n *\n * The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low.\n */\n function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\n assembly (\"memory-safe\") {\n low := add(a, b)\n high := lt(low, a)\n }\n }\n\n /**\n * @dev Return the 512-bit multiplication of two uint256.\n *\n * The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low.\n */\n function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\n // 512-bit multiply [high low] = x * y. Compute the product mod 2²⁵⁶ and mod 2²⁵⁶ - 1, then use\n // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = high * 2²⁵⁶ + low.\n assembly (\"memory-safe\") {\n let mm := mulmod(a, b, not(0))\n low := mul(a, b)\n high := sub(sub(mm, low), lt(mm, low))\n }\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, with a success flag (no overflow).\n */\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n uint256 c = a + b;\n success = c >= a;\n result = c * SafeCast.toUint(success);\n }\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow).\n */\n function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n uint256 c = a - b;\n success = c <= a;\n result = c * SafeCast.toUint(success);\n }\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow).\n */\n function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n uint256 c = a * b;\n assembly (\"memory-safe\") {\n // Only true when the multiplication doesn't overflow\n // (c / a == b) || (a == 0)\n success := or(eq(div(c, a), b), iszero(a))\n }\n // equivalent to: success ? c : 0\n result = c * SafeCast.toUint(success);\n }\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a success flag (no division by zero).\n */\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n success = b > 0;\n assembly (\"memory-safe\") {\n // The `DIV` opcode returns zero when the denominator is 0.\n result := div(a, b)\n }\n }\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero).\n */\n function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n success = b > 0;\n assembly (\"memory-safe\") {\n // The `MOD` opcode returns zero when the denominator is 0.\n result := mod(a, b)\n }\n }\n }\n\n /**\n * @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing.\n */\n function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) {\n (bool success, uint256 result) = tryAdd(a, b);\n return ternary(success, result, type(uint256).max);\n }\n\n /**\n * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing.\n */\n function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) {\n (, uint256 result) = trySub(a, b);\n return result;\n }\n\n /**\n * @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing.\n */\n function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) {\n (bool success, uint256 result) = tryMul(a, b);\n return ternary(success, result, type(uint256).max);\n }\n\n /**\n * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n *\n * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n * one branch when needed, making this function more expensive.\n */\n function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) {\n unchecked {\n // branchless ternary works because:\n // b ^ (a ^ b) == a\n // b ^ 0 == b\n return b ^ ((a ^ b) * SafeCast.toUint(condition));\n }\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return ternary(a > b, a, b);\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return ternary(a < b, a, b);\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds towards infinity instead\n * of rounding towards zero.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n if (b == 0) {\n // Guarantee the same behavior as in a regular Solidity division.\n Panic.panic(Panic.DIVISION_BY_ZERO);\n }\n\n // The following calculation ensures accurate ceiling division without overflow.\n // Since a is non-zero, (a - 1) / b will not overflow.\n // The largest possible result occurs when (a - 1) / b is type(uint256).max,\n // but the largest value we can obtain is type(uint256).max - 1, which happens\n // when a = type(uint256).max and b = 1.\n unchecked {\n return SafeCast.toUint(a > 0) * ((a - 1) / b + 1);\n }\n }\n\n /**\n * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n * denominator == 0.\n *\n * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n * Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n (uint256 high, uint256 low) = mul512(x, y);\n\n // Handle non-overflow cases, 256 by 256 division.\n if (high == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return low / denominator;\n }\n\n // Make sure the result is less than 2²⁵⁶. Also prevents denominator == 0.\n if (denominator <= high) {\n Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW));\n }\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [high low].\n uint256 remainder;\n assembly (\"memory-safe\") {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n high := sub(high, gt(remainder, low))\n low := sub(low, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\n // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\n\n uint256 twos = denominator & (0 - denominator);\n assembly (\"memory-safe\") {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [high low] by twos.\n low := div(low, twos)\n\n // Flip twos such that it is 2²⁵⁶ / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from high into low.\n low |= high * twos;\n\n // Invert denominator mod 2²⁵⁶. Now that denominator is an odd number, it has an inverse modulo 2²⁵⁶ such\n // that denominator * inv ≡ 1 mod 2²⁵⁶. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv ≡ 1 mod 2⁴.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\n // works in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2⁸\n inverse *= 2 - denominator * inverse; // inverse mod 2¹⁶\n inverse *= 2 - denominator * inverse; // inverse mod 2³²\n inverse *= 2 - denominator * inverse; // inverse mod 2⁶⁴\n inverse *= 2 - denominator * inverse; // inverse mod 2¹²⁸\n inverse *= 2 - denominator * inverse; // inverse mod 2²⁵⁶\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2²⁵⁶. Since the preconditions guarantee that the outcome is\n // less than 2²⁵⁶, this is the final result. We don't need to compute the high bits of the result and high\n // is no longer required.\n result = low * inverse;\n return result;\n }\n }\n\n /**\n * @dev Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0);\n }\n\n /**\n * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256.\n */\n function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) {\n unchecked {\n (uint256 high, uint256 low) = mul512(x, y);\n if (high >= 1 << n) {\n Panic.panic(Panic.UNDER_OVERFLOW);\n }\n return (high << (256 - n)) | (low >> n);\n }\n }\n\n /**\n * @dev Calculates x * y >> n with full precision, following the selected rounding direction.\n */\n function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) {\n return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0);\n }\n\n /**\n * @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n *\n * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n *\n * If the input value is not inversible, 0 is returned.\n *\n * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}.\n */\n function invMod(uint256 a, uint256 n) internal pure returns (uint256) {\n unchecked {\n if (n == 0) return 0;\n\n // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version)\n // Used to compute integers x and y such that: ax + ny = gcd(a, n).\n // When the gcd is 1, then the inverse of a modulo n exists and it's x.\n // ax + ny = 1\n // ax = 1 + (-y)n\n // ax ≡ 1 (mod n) # x is the inverse of a modulo n\n\n // If the remainder is 0 the gcd is n right away.\n uint256 remainder = a % n;\n uint256 gcd = n;\n\n // Therefore the initial coefficients are:\n // ax + ny = gcd(a, n) = n\n // 0a + 1n = n\n int256 x = 0;\n int256 y = 1;\n\n while (remainder != 0) {\n uint256 quotient = gcd / remainder;\n\n (gcd, remainder) = (\n // The old remainder is the next gcd to try.\n remainder,\n // Compute the next remainder.\n // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd\n // where gcd is at most n (capped to type(uint256).max)\n gcd - remainder * quotient\n );\n\n (x, y) = (\n // Increment the coefficient of a.\n y,\n // Decrement the coefficient of n.\n // Can overflow, but the result is casted to uint256 so that the\n // next value of y is \"wrapped around\" to a value between 0 and n - 1.\n x - y * int256(quotient)\n );\n }\n\n if (gcd != 1) return 0; // No inverse exists.\n return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative.\n }\n }\n\n /**\n * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n *\n * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n * prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n * `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n *\n * NOTE: this function does NOT check that `p` is a prime greater than `2`.\n */\n function invModPrime(uint256 a, uint256 p) internal view returns (uint256) {\n unchecked {\n return Math.modExp(a, p - 2, p);\n }\n }\n\n /**\n * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n *\n * Requirements:\n * - modulus can't be zero\n * - underlying staticcall to precompile must succeed\n *\n * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n * sure the chain you're using it on supports the precompiled contract for modular exponentiation\n * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n * the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n * interpreted as 0.\n */\n function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {\n (bool success, uint256 result) = tryModExp(b, e, m);\n if (!success) {\n Panic.panic(Panic.DIVISION_BY_ZERO);\n }\n return result;\n }\n\n /**\n * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n * to operate modulo 0 or if the underlying precompile reverted.\n *\n * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n * of a revert, but the result may be incorrectly interpreted as 0.\n */\n function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) {\n if (m == 0) return (false, 0);\n assembly (\"memory-safe\") {\n let ptr := mload(0x40)\n // | Offset | Content | Content (Hex) |\n // |-----------|------------|--------------------------------------------------------------------|\n // | 0x00:0x1f | size of b | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n // | 0x20:0x3f | size of e | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n // | 0x40:0x5f | size of m | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n // | 0x60:0x7f | value of b | 0x<.............................................................b> |\n // | 0x80:0x9f | value of e | 0x<.............................................................e> |\n // | 0xa0:0xbf | value of m | 0x<.............................................................m> |\n mstore(ptr, 0x20)\n mstore(add(ptr, 0x20), 0x20)\n mstore(add(ptr, 0x40), 0x20)\n mstore(add(ptr, 0x60), b)\n mstore(add(ptr, 0x80), e)\n mstore(add(ptr, 0xa0), m)\n\n // Given the result < m, it's guaranteed to fit in 32 bytes,\n // so we can use the memory scratch space located at offset 0.\n success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20)\n result := mload(0x00)\n }\n }\n\n /**\n * @dev Variant of {modExp} that supports inputs of arbitrary length.\n */\n function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) {\n (bool success, bytes memory result) = tryModExp(b, e, m);\n if (!success) {\n Panic.panic(Panic.DIVISION_BY_ZERO);\n }\n return result;\n }\n\n /**\n * @dev Variant of {tryModExp} that supports inputs of arbitrary length.\n */\n function tryModExp(\n bytes memory b,\n bytes memory e,\n bytes memory m\n ) internal view returns (bool success, bytes memory result) {\n if (_zeroBytes(m)) return (false, new bytes(0));\n\n uint256 mLen = m.length;\n\n // Encode call args in result and move the free memory pointer\n result = abi.encodePacked(b.length, e.length, mLen, b, e, m);\n\n assembly (\"memory-safe\") {\n let dataPtr := add(result, 0x20)\n // Write result on top of args to avoid allocating extra memory.\n success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen)\n // Overwrite the length.\n // result.length > returndatasize() is guaranteed because returndatasize() == m.length\n mstore(result, mLen)\n // Set the memory pointer after the returned data.\n mstore(0x40, add(dataPtr, mLen))\n }\n }\n\n /**\n * @dev Returns whether the provided byte array is zero.\n */\n function _zeroBytes(bytes memory byteArray) private pure returns (bool) {\n for (uint256 i = 0; i < byteArray.length; ++i) {\n if (byteArray[i] != 0) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n * towards zero.\n *\n * This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n * using integer operations.\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n unchecked {\n // Take care of easy edge cases when a == 0 or a == 1\n if (a <= 1) {\n return a;\n }\n\n // In this function, we use Newton's method to get a root of `f(x) := x² - a`. It involves building a\n // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between\n // the current value as `ε_n = | x_n - sqrt(a) |`.\n //\n // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root\n // of the target. (i.e. `2**(e-1) ≤ sqrt(a) < 2**e`). We know that `e ≤ 128` because `(2¹²⁸)² = 2²⁵⁶` is\n // bigger than any uint256.\n //\n // By noticing that\n // `2**(e-1) ≤ sqrt(a) < 2**e → (2**(e-1))² ≤ a < (2**e)² → 2**(2*e-2) ≤ a < 2**(2*e)`\n // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar\n // to the msb function.\n uint256 aa = a;\n uint256 xn = 1;\n\n if (aa >= (1 << 128)) {\n aa >>= 128;\n xn <<= 64;\n }\n if (aa >= (1 << 64)) {\n aa >>= 64;\n xn <<= 32;\n }\n if (aa >= (1 << 32)) {\n aa >>= 32;\n xn <<= 16;\n }\n if (aa >= (1 << 16)) {\n aa >>= 16;\n xn <<= 8;\n }\n if (aa >= (1 << 8)) {\n aa >>= 8;\n xn <<= 4;\n }\n if (aa >= (1 << 4)) {\n aa >>= 4;\n xn <<= 2;\n }\n if (aa >= (1 << 2)) {\n xn <<= 1;\n }\n\n // We now have x_n such that `x_n = 2**(e-1) ≤ sqrt(a) < 2**e = 2 * x_n`. This implies ε_n ≤ 2**(e-1).\n //\n // We can refine our estimation by noticing that the middle of that interval minimizes the error.\n // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to ε_n ≤ 2**(e-2).\n // This is going to be our x_0 (and ε_0)\n xn = (3 * xn) >> 1; // ε_0 := | x_0 - sqrt(a) | ≤ 2**(e-2)\n\n // From here, Newton's method give us:\n // x_{n+1} = (x_n + a / x_n) / 2\n //\n // One should note that:\n // x_{n+1}² - a = ((x_n + a / x_n) / 2)² - a\n // = ((x_n² + a) / (2 * x_n))² - a\n // = (x_n⁴ + 2 * a * x_n² + a²) / (4 * x_n²) - a\n // = (x_n⁴ + 2 * a * x_n² + a² - 4 * a * x_n²) / (4 * x_n²)\n // = (x_n⁴ - 2 * a * x_n² + a²) / (4 * x_n²)\n // = (x_n² - a)² / (2 * x_n)²\n // = ((x_n² - a) / (2 * x_n))²\n // ≥ 0\n // Which proves that for all n ≥ 1, sqrt(a) ≤ x_n\n //\n // This gives us the proof of quadratic convergence of the sequence:\n // ε_{n+1} = | x_{n+1} - sqrt(a) |\n // = | (x_n + a / x_n) / 2 - sqrt(a) |\n // = | (x_n² + a - 2*x_n*sqrt(a)) / (2 * x_n) |\n // = | (x_n - sqrt(a))² / (2 * x_n) |\n // = | ε_n² / (2 * x_n) |\n // = ε_n² / | (2 * x_n) |\n //\n // For the first iteration, we have a special case where x_0 is known:\n // ε_1 = ε_0² / | (2 * x_0) |\n // ≤ (2**(e-2))² / (2 * (2**(e-1) + 2**(e-2)))\n // ≤ 2**(2*e-4) / (3 * 2**(e-1))\n // ≤ 2**(e-3) / 3\n // ≤ 2**(e-3-log2(3))\n // ≤ 2**(e-4.5)\n //\n // For the following iterations, we use the fact that, 2**(e-1) ≤ sqrt(a) ≤ x_n:\n // ε_{n+1} = ε_n² / | (2 * x_n) |\n // ≤ (2**(e-k))² / (2 * 2**(e-1))\n // ≤ 2**(2*e-2*k) / 2**e\n // ≤ 2**(e-2*k)\n xn = (xn + a / xn) >> 1; // ε_1 := | x_1 - sqrt(a) | ≤ 2**(e-4.5) -- special case, see above\n xn = (xn + a / xn) >> 1; // ε_2 := | x_2 - sqrt(a) | ≤ 2**(e-9) -- general case with k = 4.5\n xn = (xn + a / xn) >> 1; // ε_3 := | x_3 - sqrt(a) | ≤ 2**(e-18) -- general case with k = 9\n xn = (xn + a / xn) >> 1; // ε_4 := | x_4 - sqrt(a) | ≤ 2**(e-36) -- general case with k = 18\n xn = (xn + a / xn) >> 1; // ε_5 := | x_5 - sqrt(a) | ≤ 2**(e-72) -- general case with k = 36\n xn = (xn + a / xn) >> 1; // ε_6 := | x_6 - sqrt(a) | ≤ 2**(e-144) -- general case with k = 72\n\n // Because e ≤ 128 (as discussed during the first estimation phase), we know have reached a precision\n // ε_6 ≤ 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either\n // sqrt(a) or sqrt(a) + 1.\n return xn - SafeCast.toUint(xn > a / xn);\n }\n }\n\n /**\n * @dev Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a);\n }\n }\n\n /**\n * @dev Return the log in base 2 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n */\n function log2(uint256 x) internal pure returns (uint256 r) {\n // If value has upper 128 bits set, log2 result is at least 128\n r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\n // If upper 64 bits of 128-bit half set, add 64 to result\n r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\n // If upper 32 bits of 64-bit half set, add 32 to result\n r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\n // If upper 16 bits of 32-bit half set, add 16 to result\n r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\n // If upper 8 bits of 16-bit half set, add 8 to result\n r |= SafeCast.toUint((x >> r) > 0xff) << 3;\n // If upper 4 bits of 8-bit half set, add 4 to result\n r |= SafeCast.toUint((x >> r) > 0xf) << 2;\n\n // Shifts value right by the current result and use it as an index into this lookup table:\n //\n // | x (4 bits) | index | table[index] = MSB position |\n // |------------|---------|-----------------------------|\n // | 0000 | 0 | table[0] = 0 |\n // | 0001 | 1 | table[1] = 0 |\n // | 0010 | 2 | table[2] = 1 |\n // | 0011 | 3 | table[3] = 1 |\n // | 0100 | 4 | table[4] = 2 |\n // | 0101 | 5 | table[5] = 2 |\n // | 0110 | 6 | table[6] = 2 |\n // | 0111 | 7 | table[7] = 2 |\n // | 1000 | 8 | table[8] = 3 |\n // | 1001 | 9 | table[9] = 3 |\n // | 1010 | 10 | table[10] = 3 |\n // | 1011 | 11 | table[11] = 3 |\n // | 1100 | 12 | table[12] = 3 |\n // | 1101 | 13 | table[13] = 3 |\n // | 1110 | 14 | table[14] = 3 |\n // | 1111 | 15 | table[15] = 3 |\n //\n // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the last 16 bytes.\n assembly (\"memory-safe\") {\n r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000))\n }\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value);\n }\n }\n\n /**\n * @dev Return the log in base 10 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value);\n }\n }\n\n /**\n * @dev Return the log in base 256 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 x) internal pure returns (uint256 r) {\n // If value has upper 128 bits set, log2 result is at least 128\n r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\n // If upper 64 bits of 128-bit half set, add 64 to result\n r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\n // If upper 32 bits of 64-bit half set, add 32 to result\n r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\n // If upper 16 bits of 32-bit half set, add 16 to result\n r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\n // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8\n return (r >> 3) | SafeCast.toUint((x >> r) > 0xff);\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value);\n }\n }\n\n /**\n * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\n */\n function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\n return uint8(rounding) % 2 == 1;\n }\n}\n"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeCast {\n /**\n * @dev Value doesn't fit in an uint of `bits` size.\n */\n error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\n\n /**\n * @dev An int value doesn't fit in an uint of `bits` size.\n */\n error SafeCastOverflowedIntToUint(int256 value);\n\n /**\n * @dev Value doesn't fit in an int of `bits` size.\n */\n error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\n\n /**\n * @dev An uint value doesn't fit in an int of `bits` size.\n */\n error SafeCastOverflowedUintToInt(uint256 value);\n\n /**\n * @dev Returns the downcasted uint248 from uint256, reverting on\n * overflow (when the input is greater than largest uint248).\n *\n * Counterpart to Solidity's `uint248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n */\n function toUint248(uint256 value) internal pure returns (uint248) {\n if (value > type(uint248).max) {\n revert SafeCastOverflowedUintDowncast(248, value);\n }\n return uint248(value);\n }\n\n /**\n * @dev Returns the downcasted uint240 from uint256, reverting on\n * overflow (when the input is greater than largest uint240).\n *\n * Counterpart to Solidity's `uint240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n */\n function toUint240(uint256 value) internal pure returns (uint240) {\n if (value > type(uint240).max) {\n revert SafeCastOverflowedUintDowncast(240, value);\n }\n return uint240(value);\n }\n\n /**\n * @dev Returns the downcasted uint232 from uint256, reverting on\n * overflow (when the input is greater than largest uint232).\n *\n * Counterpart to Solidity's `uint232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n */\n function toUint232(uint256 value) internal pure returns (uint232) {\n if (value > type(uint232).max) {\n revert SafeCastOverflowedUintDowncast(232, value);\n }\n return uint232(value);\n }\n\n /**\n * @dev Returns the downcasted uint224 from uint256, reverting on\n * overflow (when the input is greater than largest uint224).\n *\n * Counterpart to Solidity's `uint224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n */\n function toUint224(uint256 value) internal pure returns (uint224) {\n if (value > type(uint224).max) {\n revert SafeCastOverflowedUintDowncast(224, value);\n }\n return uint224(value);\n }\n\n /**\n * @dev Returns the downcasted uint216 from uint256, reverting on\n * overflow (when the input is greater than largest uint216).\n *\n * Counterpart to Solidity's `uint216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n */\n function toUint216(uint256 value) internal pure returns (uint216) {\n if (value > type(uint216).max) {\n revert SafeCastOverflowedUintDowncast(216, value);\n }\n return uint216(value);\n }\n\n /**\n * @dev Returns the downcasted uint208 from uint256, reverting on\n * overflow (when the input is greater than largest uint208).\n *\n * Counterpart to Solidity's `uint208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n */\n function toUint208(uint256 value) internal pure returns (uint208) {\n if (value > type(uint208).max) {\n revert SafeCastOverflowedUintDowncast(208, value);\n }\n return uint208(value);\n }\n\n /**\n * @dev Returns the downcasted uint200 from uint256, reverting on\n * overflow (when the input is greater than largest uint200).\n *\n * Counterpart to Solidity's `uint200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n */\n function toUint200(uint256 value) internal pure returns (uint200) {\n if (value > type(uint200).max) {\n revert SafeCastOverflowedUintDowncast(200, value);\n }\n return uint200(value);\n }\n\n /**\n * @dev Returns the downcasted uint192 from uint256, reverting on\n * overflow (when the input is greater than largest uint192).\n *\n * Counterpart to Solidity's `uint192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n */\n function toUint192(uint256 value) internal pure returns (uint192) {\n if (value > type(uint192).max) {\n revert SafeCastOverflowedUintDowncast(192, value);\n }\n return uint192(value);\n }\n\n /**\n * @dev Returns the downcasted uint184 from uint256, reverting on\n * overflow (when the input is greater than largest uint184).\n *\n * Counterpart to Solidity's `uint184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n */\n function toUint184(uint256 value) internal pure returns (uint184) {\n if (value > type(uint184).max) {\n revert SafeCastOverflowedUintDowncast(184, value);\n }\n return uint184(value);\n }\n\n /**\n * @dev Returns the downcasted uint176 from uint256, reverting on\n * overflow (when the input is greater than largest uint176).\n *\n * Counterpart to Solidity's `uint176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n */\n function toUint176(uint256 value) internal pure returns (uint176) {\n if (value > type(uint176).max) {\n revert SafeCastOverflowedUintDowncast(176, value);\n }\n return uint176(value);\n }\n\n /**\n * @dev Returns the downcasted uint168 from uint256, reverting on\n * overflow (when the input is greater than largest uint168).\n *\n * Counterpart to Solidity's `uint168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n */\n function toUint168(uint256 value) internal pure returns (uint168) {\n if (value > type(uint168).max) {\n revert SafeCastOverflowedUintDowncast(168, value);\n }\n return uint168(value);\n }\n\n /**\n * @dev Returns the downcasted uint160 from uint256, reverting on\n * overflow (when the input is greater than largest uint160).\n *\n * Counterpart to Solidity's `uint160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n */\n function toUint160(uint256 value) internal pure returns (uint160) {\n if (value > type(uint160).max) {\n revert SafeCastOverflowedUintDowncast(160, value);\n }\n return uint160(value);\n }\n\n /**\n * @dev Returns the downcasted uint152 from uint256, reverting on\n * overflow (when the input is greater than largest uint152).\n *\n * Counterpart to Solidity's `uint152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n */\n function toUint152(uint256 value) internal pure returns (uint152) {\n if (value > type(uint152).max) {\n revert SafeCastOverflowedUintDowncast(152, value);\n }\n return uint152(value);\n }\n\n /**\n * @dev Returns the downcasted uint144 from uint256, reverting on\n * overflow (when the input is greater than largest uint144).\n *\n * Counterpart to Solidity's `uint144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n */\n function toUint144(uint256 value) internal pure returns (uint144) {\n if (value > type(uint144).max) {\n revert SafeCastOverflowedUintDowncast(144, value);\n }\n return uint144(value);\n }\n\n /**\n * @dev Returns the downcasted uint136 from uint256, reverting on\n * overflow (when the input is greater than largest uint136).\n *\n * Counterpart to Solidity's `uint136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n */\n function toUint136(uint256 value) internal pure returns (uint136) {\n if (value > type(uint136).max) {\n revert SafeCastOverflowedUintDowncast(136, value);\n }\n return uint136(value);\n }\n\n /**\n * @dev Returns the downcasted uint128 from uint256, reverting on\n * overflow (when the input is greater than largest uint128).\n *\n * Counterpart to Solidity's `uint128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n */\n function toUint128(uint256 value) internal pure returns (uint128) {\n if (value > type(uint128).max) {\n revert SafeCastOverflowedUintDowncast(128, value);\n }\n return uint128(value);\n }\n\n /**\n * @dev Returns the downcasted uint120 from uint256, reverting on\n * overflow (when the input is greater than largest uint120).\n *\n * Counterpart to Solidity's `uint120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n */\n function toUint120(uint256 value) internal pure returns (uint120) {\n if (value > type(uint120).max) {\n revert SafeCastOverflowedUintDowncast(120, value);\n }\n return uint120(value);\n }\n\n /**\n * @dev Returns the downcasted uint112 from uint256, reverting on\n * overflow (when the input is greater than largest uint112).\n *\n * Counterpart to Solidity's `uint112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n */\n function toUint112(uint256 value) internal pure returns (uint112) {\n if (value > type(uint112).max) {\n revert SafeCastOverflowedUintDowncast(112, value);\n }\n return uint112(value);\n }\n\n /**\n * @dev Returns the downcasted uint104 from uint256, reverting on\n * overflow (when the input is greater than largest uint104).\n *\n * Counterpart to Solidity's `uint104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n */\n function toUint104(uint256 value) internal pure returns (uint104) {\n if (value > type(uint104).max) {\n revert SafeCastOverflowedUintDowncast(104, value);\n }\n return uint104(value);\n }\n\n /**\n * @dev Returns the downcasted uint96 from uint256, reverting on\n * overflow (when the input is greater than largest uint96).\n *\n * Counterpart to Solidity's `uint96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n */\n function toUint96(uint256 value) internal pure returns (uint96) {\n if (value > type(uint96).max) {\n revert SafeCastOverflowedUintDowncast(96, value);\n }\n return uint96(value);\n }\n\n /**\n * @dev Returns the downcasted uint88 from uint256, reverting on\n * overflow (when the input is greater than largest uint88).\n *\n * Counterpart to Solidity's `uint88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n */\n function toUint88(uint256 value) internal pure returns (uint88) {\n if (value > type(uint88).max) {\n revert SafeCastOverflowedUintDowncast(88, value);\n }\n return uint88(value);\n }\n\n /**\n * @dev Returns the downcasted uint80 from uint256, reverting on\n * overflow (when the input is greater than largest uint80).\n *\n * Counterpart to Solidity's `uint80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n */\n function toUint80(uint256 value) internal pure returns (uint80) {\n if (value > type(uint80).max) {\n revert SafeCastOverflowedUintDowncast(80, value);\n }\n return uint80(value);\n }\n\n /**\n * @dev Returns the downcasted uint72 from uint256, reverting on\n * overflow (when the input is greater than largest uint72).\n *\n * Counterpart to Solidity's `uint72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n */\n function toUint72(uint256 value) internal pure returns (uint72) {\n if (value > type(uint72).max) {\n revert SafeCastOverflowedUintDowncast(72, value);\n }\n return uint72(value);\n }\n\n /**\n * @dev Returns the downcasted uint64 from uint256, reverting on\n * overflow (when the input is greater than largest uint64).\n *\n * Counterpart to Solidity's `uint64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n */\n function toUint64(uint256 value) internal pure returns (uint64) {\n if (value > type(uint64).max) {\n revert SafeCastOverflowedUintDowncast(64, value);\n }\n return uint64(value);\n }\n\n /**\n * @dev Returns the downcasted uint56 from uint256, reverting on\n * overflow (when the input is greater than largest uint56).\n *\n * Counterpart to Solidity's `uint56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n */\n function toUint56(uint256 value) internal pure returns (uint56) {\n if (value > type(uint56).max) {\n revert SafeCastOverflowedUintDowncast(56, value);\n }\n return uint56(value);\n }\n\n /**\n * @dev Returns the downcasted uint48 from uint256, reverting on\n * overflow (when the input is greater than largest uint48).\n *\n * Counterpart to Solidity's `uint48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n */\n function toUint48(uint256 value) internal pure returns (uint48) {\n if (value > type(uint48).max) {\n revert SafeCastOverflowedUintDowncast(48, value);\n }\n return uint48(value);\n }\n\n /**\n * @dev Returns the downcasted uint40 from uint256, reverting on\n * overflow (when the input is greater than largest uint40).\n *\n * Counterpart to Solidity's `uint40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n */\n function toUint40(uint256 value) internal pure returns (uint40) {\n if (value > type(uint40).max) {\n revert SafeCastOverflowedUintDowncast(40, value);\n }\n return uint40(value);\n }\n\n /**\n * @dev Returns the downcasted uint32 from uint256, reverting on\n * overflow (when the input is greater than largest uint32).\n *\n * Counterpart to Solidity's `uint32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n */\n function toUint32(uint256 value) internal pure returns (uint32) {\n if (value > type(uint32).max) {\n revert SafeCastOverflowedUintDowncast(32, value);\n }\n return uint32(value);\n }\n\n /**\n * @dev Returns the downcasted uint24 from uint256, reverting on\n * overflow (when the input is greater than largest uint24).\n *\n * Counterpart to Solidity's `uint24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n */\n function toUint24(uint256 value) internal pure returns (uint24) {\n if (value > type(uint24).max) {\n revert SafeCastOverflowedUintDowncast(24, value);\n }\n return uint24(value);\n }\n\n /**\n * @dev Returns the downcasted uint16 from uint256, reverting on\n * overflow (when the input is greater than largest uint16).\n *\n * Counterpart to Solidity's `uint16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n */\n function toUint16(uint256 value) internal pure returns (uint16) {\n if (value > type(uint16).max) {\n revert SafeCastOverflowedUintDowncast(16, value);\n }\n return uint16(value);\n }\n\n /**\n * @dev Returns the downcasted uint8 from uint256, reverting on\n * overflow (when the input is greater than largest uint8).\n *\n * Counterpart to Solidity's `uint8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n */\n function toUint8(uint256 value) internal pure returns (uint8) {\n if (value > type(uint8).max) {\n revert SafeCastOverflowedUintDowncast(8, value);\n }\n return uint8(value);\n }\n\n /**\n * @dev Converts a signed int256 into an unsigned uint256.\n *\n * Requirements:\n *\n * - input must be greater than or equal to 0.\n */\n function toUint256(int256 value) internal pure returns (uint256) {\n if (value < 0) {\n revert SafeCastOverflowedIntToUint(value);\n }\n return uint256(value);\n }\n\n /**\n * @dev Returns the downcasted int248 from int256, reverting on\n * overflow (when the input is less than smallest int248 or\n * greater than largest int248).\n *\n * Counterpart to Solidity's `int248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n */\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\n downcasted = int248(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(248, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int240 from int256, reverting on\n * overflow (when the input is less than smallest int240 or\n * greater than largest int240).\n *\n * Counterpart to Solidity's `int240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n */\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\n downcasted = int240(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(240, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int232 from int256, reverting on\n * overflow (when the input is less than smallest int232 or\n * greater than largest int232).\n *\n * Counterpart to Solidity's `int232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n */\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\n downcasted = int232(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(232, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int224 from int256, reverting on\n * overflow (when the input is less than smallest int224 or\n * greater than largest int224).\n *\n * Counterpart to Solidity's `int224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n */\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\n downcasted = int224(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(224, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int216 from int256, reverting on\n * overflow (when the input is less than smallest int216 or\n * greater than largest int216).\n *\n * Counterpart to Solidity's `int216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n */\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\n downcasted = int216(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(216, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int208 from int256, reverting on\n * overflow (when the input is less than smallest int208 or\n * greater than largest int208).\n *\n * Counterpart to Solidity's `int208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n */\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\n downcasted = int208(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(208, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int200 from int256, reverting on\n * overflow (when the input is less than smallest int200 or\n * greater than largest int200).\n *\n * Counterpart to Solidity's `int200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n */\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\n downcasted = int200(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(200, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int192 from int256, reverting on\n * overflow (when the input is less than smallest int192 or\n * greater than largest int192).\n *\n * Counterpart to Solidity's `int192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n */\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\n downcasted = int192(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(192, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int184 from int256, reverting on\n * overflow (when the input is less than smallest int184 or\n * greater than largest int184).\n *\n * Counterpart to Solidity's `int184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n */\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\n downcasted = int184(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(184, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int176 from int256, reverting on\n * overflow (when the input is less than smallest int176 or\n * greater than largest int176).\n *\n * Counterpart to Solidity's `int176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n */\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\n downcasted = int176(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(176, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int168 from int256, reverting on\n * overflow (when the input is less than smallest int168 or\n * greater than largest int168).\n *\n * Counterpart to Solidity's `int168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n */\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\n downcasted = int168(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(168, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int160 from int256, reverting on\n * overflow (when the input is less than smallest int160 or\n * greater than largest int160).\n *\n * Counterpart to Solidity's `int160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n */\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\n downcasted = int160(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(160, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int152 from int256, reverting on\n * overflow (when the input is less than smallest int152 or\n * greater than largest int152).\n *\n * Counterpart to Solidity's `int152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n */\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\n downcasted = int152(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(152, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int144 from int256, reverting on\n * overflow (when the input is less than smallest int144 or\n * greater than largest int144).\n *\n * Counterpart to Solidity's `int144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n */\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\n downcasted = int144(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(144, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int136 from int256, reverting on\n * overflow (when the input is less than smallest int136 or\n * greater than largest int136).\n *\n * Counterpart to Solidity's `int136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n */\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\n downcasted = int136(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(136, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int128 from int256, reverting on\n * overflow (when the input is less than smallest int128 or\n * greater than largest int128).\n *\n * Counterpart to Solidity's `int128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n */\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\n downcasted = int128(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(128, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int120 from int256, reverting on\n * overflow (when the input is less than smallest int120 or\n * greater than largest int120).\n *\n * Counterpart to Solidity's `int120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n */\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\n downcasted = int120(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(120, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int112 from int256, reverting on\n * overflow (when the input is less than smallest int112 or\n * greater than largest int112).\n *\n * Counterpart to Solidity's `int112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n */\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\n downcasted = int112(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(112, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int104 from int256, reverting on\n * overflow (when the input is less than smallest int104 or\n * greater than largest int104).\n *\n * Counterpart to Solidity's `int104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n */\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\n downcasted = int104(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(104, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int96 from int256, reverting on\n * overflow (when the input is less than smallest int96 or\n * greater than largest int96).\n *\n * Counterpart to Solidity's `int96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n */\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\n downcasted = int96(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(96, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int88 from int256, reverting on\n * overflow (when the input is less than smallest int88 or\n * greater than largest int88).\n *\n * Counterpart to Solidity's `int88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n */\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\n downcasted = int88(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(88, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int80 from int256, reverting on\n * overflow (when the input is less than smallest int80 or\n * greater than largest int80).\n *\n * Counterpart to Solidity's `int80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n */\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\n downcasted = int80(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(80, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int72 from int256, reverting on\n * overflow (when the input is less than smallest int72 or\n * greater than largest int72).\n *\n * Counterpart to Solidity's `int72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n */\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\n downcasted = int72(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(72, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int64 from int256, reverting on\n * overflow (when the input is less than smallest int64 or\n * greater than largest int64).\n *\n * Counterpart to Solidity's `int64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n */\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\n downcasted = int64(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(64, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int56 from int256, reverting on\n * overflow (when the input is less than smallest int56 or\n * greater than largest int56).\n *\n * Counterpart to Solidity's `int56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n */\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\n downcasted = int56(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(56, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int48 from int256, reverting on\n * overflow (when the input is less than smallest int48 or\n * greater than largest int48).\n *\n * Counterpart to Solidity's `int48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n */\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\n downcasted = int48(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(48, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int40 from int256, reverting on\n * overflow (when the input is less than smallest int40 or\n * greater than largest int40).\n *\n * Counterpart to Solidity's `int40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n */\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\n downcasted = int40(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(40, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int32 from int256, reverting on\n * overflow (when the input is less than smallest int32 or\n * greater than largest int32).\n *\n * Counterpart to Solidity's `int32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n */\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\n downcasted = int32(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(32, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int24 from int256, reverting on\n * overflow (when the input is less than smallest int24 or\n * greater than largest int24).\n *\n * Counterpart to Solidity's `int24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n */\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\n downcasted = int24(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(24, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int16 from int256, reverting on\n * overflow (when the input is less than smallest int16 or\n * greater than largest int16).\n *\n * Counterpart to Solidity's `int16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n */\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\n downcasted = int16(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(16, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int8 from int256, reverting on\n * overflow (when the input is less than smallest int8 or\n * greater than largest int8).\n *\n * Counterpart to Solidity's `int8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n */\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\n downcasted = int8(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(8, value);\n }\n }\n\n /**\n * @dev Converts an unsigned uint256 into a signed int256.\n *\n * Requirements:\n *\n * - input must be less than or equal to maxInt256.\n */\n function toInt256(uint256 value) internal pure returns (int256) {\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\n if (value > uint256(type(int256).max)) {\n revert SafeCastOverflowedUintToInt(value);\n }\n return int256(value);\n }\n\n /**\n * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\n */\n function toUint(bool b) internal pure returns (uint256 u) {\n assembly (\"memory-safe\") {\n u := iszero(iszero(b))\n }\n }\n}\n"},"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControl} from \"@openzeppelin/contracts/access/IAccessControl.sol\";\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {ERC165Upgradeable} from \"../utils/introspection/ERC165Upgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```solidity\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```solidity\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n * to enforce additional security measures for this role.\n */\nabstract contract AccessControlUpgradeable is Initializable, ContextUpgradeable, IAccessControl, ERC165Upgradeable {\n struct RoleData {\n mapping(address account => bool) hasRole;\n bytes32 adminRole;\n }\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n\n /// @custom:storage-location erc7201:openzeppelin.storage.AccessControl\n struct AccessControlStorage {\n mapping(bytes32 role => RoleData) _roles;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.AccessControl\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant AccessControlStorageLocation = 0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800;\n\n function _getAccessControlStorage() private pure returns (AccessControlStorage storage $) {\n assembly {\n $.slot := AccessControlStorageLocation\n }\n }\n\n /**\n * @dev Modifier that checks that an account has a specific role. Reverts\n * with an {AccessControlUnauthorizedAccount} error including the required role.\n */\n modifier onlyRole(bytes32 role) {\n _checkRole(role);\n _;\n }\n\n function __AccessControl_init() internal onlyInitializing {\n }\n\n function __AccessControl_init_unchained() internal onlyInitializing {\n }\n /// @inheritdoc IERC165\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n return $._roles[role].hasRole[account];\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier.\n */\n function _checkRole(bytes32 role) internal view virtual {\n _checkRole(role, _msgSender());\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n * is missing `role`.\n */\n function _checkRole(bytes32 role, address account) internal view virtual {\n if (!hasRole(role, account)) {\n revert AccessControlUnauthorizedAccount(account, role);\n }\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n return $._roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleGranted} event.\n */\n function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleRevoked} event.\n */\n function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n *\n * May emit a {RoleRevoked} event.\n */\n function renounceRole(bytes32 role, address callerConfirmation) public virtual {\n if (callerConfirmation != _msgSender()) {\n revert AccessControlBadConfirmation();\n }\n\n _revokeRole(role, callerConfirmation);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n AccessControlStorage storage $ = _getAccessControlStorage();\n bytes32 previousAdminRole = getRoleAdmin(role);\n $._roles[role].adminRole = adminRole;\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\n }\n\n /**\n * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleGranted} event.\n */\n function _grantRole(bytes32 role, address account) internal virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n if (!hasRole(role, account)) {\n $._roles[role].hasRole[account] = true;\n emit RoleGranted(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Attempts to revoke `role` from `account` and returns a boolean indicating if `role` was revoked.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleRevoked} event.\n */\n function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n if (hasRole(role, account)) {\n $._roles[role].hasRole[account] = false;\n emit RoleRevoked(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n}\n"},"lib/openzeppelin-contracts-upgradeable/contracts/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (access/extensions/AccessControlDefaultAdminRules.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControlDefaultAdminRules} from \"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol\";\nimport {AccessControlUpgradeable} from \"../AccessControlUpgradeable.sol\";\nimport {IAccessControl} from \"@openzeppelin/contracts/access/IAccessControl.sol\";\nimport {SafeCast} from \"@openzeppelin/contracts/utils/math/SafeCast.sol\";\nimport {Math} from \"@openzeppelin/contracts/utils/math/Math.sol\";\nimport {IERC5313} from \"@openzeppelin/contracts/interfaces/IERC5313.sol\";\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Extension of {AccessControl} that allows specifying special rules to manage\n * the `DEFAULT_ADMIN_ROLE` holder, which is a sensitive role with special permissions\n * over other roles that may potentially have privileged rights in the system.\n *\n * If a specific role doesn't have an admin role assigned, the holder of the\n * `DEFAULT_ADMIN_ROLE` will have the ability to grant it and revoke it.\n *\n * This contract implements the following risk mitigations on top of {AccessControl}:\n *\n * * Only one account holds the `DEFAULT_ADMIN_ROLE` since deployment until it's potentially renounced.\n * * Enforces a 2-step process to transfer the `DEFAULT_ADMIN_ROLE` to another account.\n * * Enforces a configurable delay between the two steps, with the ability to cancel before the transfer is accepted.\n * * The delay can be changed by scheduling, see {changeDefaultAdminDelay}.\n * * Role transfers must wait at least one block after scheduling before it can be accepted.\n * * It is not possible to use another role to manage the `DEFAULT_ADMIN_ROLE`.\n *\n * Example usage:\n *\n * ```solidity\n * contract MyToken is AccessControlDefaultAdminRules {\n * constructor() AccessControlDefaultAdminRules(\n * 3 days,\n * msg.sender // Explicit initial `DEFAULT_ADMIN_ROLE` holder\n * ) {}\n * }\n * ```\n */\nabstract contract AccessControlDefaultAdminRulesUpgradeable is Initializable, IAccessControlDefaultAdminRules, IERC5313, AccessControlUpgradeable {\n /// @custom:storage-location erc7201:openzeppelin.storage.AccessControlDefaultAdminRules\n struct AccessControlDefaultAdminRulesStorage {\n // pending admin pair read/written together frequently\n address _pendingDefaultAdmin;\n uint48 _pendingDefaultAdminSchedule; // 0 == unset\n\n uint48 _currentDelay;\n address _currentDefaultAdmin;\n\n // pending delay pair read/written together frequently\n uint48 _pendingDelay;\n uint48 _pendingDelaySchedule; // 0 == unset\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.AccessControlDefaultAdminRules\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant AccessControlDefaultAdminRulesStorageLocation = 0xeef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400;\n\n function _getAccessControlDefaultAdminRulesStorage() private pure returns (AccessControlDefaultAdminRulesStorage storage $) {\n assembly {\n $.slot := AccessControlDefaultAdminRulesStorageLocation\n }\n }\n\n /**\n * @dev Sets the initial values for {defaultAdminDelay} and {defaultAdmin} address.\n */\n function __AccessControlDefaultAdminRules_init(uint48 initialDelay, address initialDefaultAdmin) internal onlyInitializing {\n __AccessControlDefaultAdminRules_init_unchained(initialDelay, initialDefaultAdmin);\n }\n\n function __AccessControlDefaultAdminRules_init_unchained(uint48 initialDelay, address initialDefaultAdmin) internal onlyInitializing {\n AccessControlDefaultAdminRulesStorage storage $ = _getAccessControlDefaultAdminRulesStorage();\n if (initialDefaultAdmin == address(0)) {\n revert AccessControlInvalidDefaultAdmin(address(0));\n }\n $._currentDelay = initialDelay;\n _grantRole(DEFAULT_ADMIN_ROLE, initialDefaultAdmin);\n }\n\n /// @inheritdoc IERC165\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControlDefaultAdminRules).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /// @inheritdoc IERC5313\n function owner() public view virtual returns (address) {\n return defaultAdmin();\n }\n\n ///\n /// Override AccessControl role management\n ///\n\n /**\n * @dev See {AccessControl-grantRole}. Reverts for `DEFAULT_ADMIN_ROLE`.\n */\n function grantRole(bytes32 role, address account) public virtual override(AccessControlUpgradeable, IAccessControl) {\n if (role == DEFAULT_ADMIN_ROLE) {\n revert AccessControlEnforcedDefaultAdminRules();\n }\n super.grantRole(role, account);\n }\n\n /**\n * @dev See {AccessControl-revokeRole}. Reverts for `DEFAULT_ADMIN_ROLE`.\n */\n function revokeRole(bytes32 role, address account) public virtual override(AccessControlUpgradeable, IAccessControl) {\n if (role == DEFAULT_ADMIN_ROLE) {\n revert AccessControlEnforcedDefaultAdminRules();\n }\n super.revokeRole(role, account);\n }\n\n /**\n * @dev See {AccessControl-renounceRole}.\n *\n * For the `DEFAULT_ADMIN_ROLE`, it only allows renouncing in two steps by first calling\n * {beginDefaultAdminTransfer} to the `address(0)`, so it's required that the {pendingDefaultAdmin} schedule\n * has also passed when calling this function.\n *\n * After its execution, it will not be possible to call `onlyRole(DEFAULT_ADMIN_ROLE)` functions.\n *\n * NOTE: Renouncing `DEFAULT_ADMIN_ROLE` will leave the contract without a {defaultAdmin},\n * thereby disabling any functionality that is only available for it, and the possibility of reassigning a\n * non-administrated role.\n */\n function renounceRole(bytes32 role, address account) public virtual override(AccessControlUpgradeable, IAccessControl) {\n AccessControlDefaultAdminRulesStorage storage $ = _getAccessControlDefaultAdminRulesStorage();\n if (role == DEFAULT_ADMIN_ROLE && account == defaultAdmin()) {\n (address newDefaultAdmin, uint48 schedule) = pendingDefaultAdmin();\n if (newDefaultAdmin != address(0) || !_isScheduleSet(schedule) || !_hasSchedulePassed(schedule)) {\n revert AccessControlEnforcedDefaultAdminDelay(schedule);\n }\n delete $._pendingDefaultAdminSchedule;\n }\n super.renounceRole(role, account);\n }\n\n /**\n * @dev See {AccessControl-_grantRole}.\n *\n * For `DEFAULT_ADMIN_ROLE`, it only allows granting if there isn't already a {defaultAdmin} or if the\n * role has been previously renounced.\n *\n * NOTE: Exposing this function through another mechanism may make the `DEFAULT_ADMIN_ROLE`\n * assignable again. Make sure to guarantee this is the expected behavior in your implementation.\n */\n function _grantRole(bytes32 role, address account) internal virtual override returns (bool) {\n AccessControlDefaultAdminRulesStorage storage $ = _getAccessControlDefaultAdminRulesStorage();\n if (role == DEFAULT_ADMIN_ROLE) {\n if (defaultAdmin() != address(0)) {\n revert AccessControlEnforcedDefaultAdminRules();\n }\n $._currentDefaultAdmin = account;\n }\n return super._grantRole(role, account);\n }\n\n /// @inheritdoc AccessControlUpgradeable\n function _revokeRole(bytes32 role, address account) internal virtual override returns (bool) {\n AccessControlDefaultAdminRulesStorage storage $ = _getAccessControlDefaultAdminRulesStorage();\n if (role == DEFAULT_ADMIN_ROLE && account == defaultAdmin()) {\n delete $._currentDefaultAdmin;\n }\n return super._revokeRole(role, account);\n }\n\n /**\n * @dev See {AccessControl-_setRoleAdmin}. Reverts for `DEFAULT_ADMIN_ROLE`.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual override {\n if (role == DEFAULT_ADMIN_ROLE) {\n revert AccessControlEnforcedDefaultAdminRules();\n }\n super._setRoleAdmin(role, adminRole);\n }\n\n ///\n /// AccessControlDefaultAdminRules accessors\n ///\n\n /// @inheritdoc IAccessControlDefaultAdminRules\n function defaultAdmin() public view virtual returns (address) {\n AccessControlDefaultAdminRulesStorage storage $ = _getAccessControlDefaultAdminRulesStorage();\n return $._currentDefaultAdmin;\n }\n\n /// @inheritdoc IAccessControlDefaultAdminRules\n function pendingDefaultAdmin() public view virtual returns (address newAdmin, uint48 schedule) {\n AccessControlDefaultAdminRulesStorage storage $ = _getAccessControlDefaultAdminRulesStorage();\n return ($._pendingDefaultAdmin, $._pendingDefaultAdminSchedule);\n }\n\n /// @inheritdoc IAccessControlDefaultAdminRules\n function defaultAdminDelay() public view virtual returns (uint48) {\n AccessControlDefaultAdminRulesStorage storage $ = _getAccessControlDefaultAdminRulesStorage();\n uint48 schedule = $._pendingDelaySchedule;\n return (_isScheduleSet(schedule) && _hasSchedulePassed(schedule)) ? $._pendingDelay : $._currentDelay;\n }\n\n /// @inheritdoc IAccessControlDefaultAdminRules\n function pendingDefaultAdminDelay() public view virtual returns (uint48 newDelay, uint48 schedule) {\n AccessControlDefaultAdminRulesStorage storage $ = _getAccessControlDefaultAdminRulesStorage();\n schedule = $._pendingDelaySchedule;\n return (_isScheduleSet(schedule) && !_hasSchedulePassed(schedule)) ? ($._pendingDelay, schedule) : (0, 0);\n }\n\n /// @inheritdoc IAccessControlDefaultAdminRules\n function defaultAdminDelayIncreaseWait() public view virtual returns (uint48) {\n return 5 days;\n }\n\n ///\n /// AccessControlDefaultAdminRules public and internal setters for defaultAdmin/pendingDefaultAdmin\n ///\n\n /// @inheritdoc IAccessControlDefaultAdminRules\n function beginDefaultAdminTransfer(address newAdmin) public virtual onlyRole(DEFAULT_ADMIN_ROLE) {\n _beginDefaultAdminTransfer(newAdmin);\n }\n\n /**\n * @dev See {beginDefaultAdminTransfer}.\n *\n * Internal function without access restriction.\n */\n function _beginDefaultAdminTransfer(address newAdmin) internal virtual {\n uint48 newSchedule = SafeCast.toUint48(block.timestamp) + defaultAdminDelay();\n _setPendingDefaultAdmin(newAdmin, newSchedule);\n emit DefaultAdminTransferScheduled(newAdmin, newSchedule);\n }\n\n /// @inheritdoc IAccessControlDefaultAdminRules\n function cancelDefaultAdminTransfer() public virtual onlyRole(DEFAULT_ADMIN_ROLE) {\n _cancelDefaultAdminTransfer();\n }\n\n /**\n * @dev See {cancelDefaultAdminTransfer}.\n *\n * Internal function without access restriction.\n */\n function _cancelDefaultAdminTransfer() internal virtual {\n _setPendingDefaultAdmin(address(0), 0);\n }\n\n /// @inheritdoc IAccessControlDefaultAdminRules\n function acceptDefaultAdminTransfer() public virtual {\n (address newDefaultAdmin, ) = pendingDefaultAdmin();\n if (_msgSender() != newDefaultAdmin) {\n // Enforce newDefaultAdmin explicit acceptance.\n revert AccessControlInvalidDefaultAdmin(_msgSender());\n }\n _acceptDefaultAdminTransfer();\n }\n\n /**\n * @dev See {acceptDefaultAdminTransfer}.\n *\n * Internal function without access restriction.\n */\n function _acceptDefaultAdminTransfer() internal virtual {\n AccessControlDefaultAdminRulesStorage storage $ = _getAccessControlDefaultAdminRulesStorage();\n (address newAdmin, uint48 schedule) = pendingDefaultAdmin();\n if (!_isScheduleSet(schedule) || !_hasSchedulePassed(schedule)) {\n revert AccessControlEnforcedDefaultAdminDelay(schedule);\n }\n _revokeRole(DEFAULT_ADMIN_ROLE, defaultAdmin());\n _grantRole(DEFAULT_ADMIN_ROLE, newAdmin);\n delete $._pendingDefaultAdmin;\n delete $._pendingDefaultAdminSchedule;\n }\n\n ///\n /// AccessControlDefaultAdminRules public and internal setters for defaultAdminDelay/pendingDefaultAdminDelay\n ///\n\n /// @inheritdoc IAccessControlDefaultAdminRules\n function changeDefaultAdminDelay(uint48 newDelay) public virtual onlyRole(DEFAULT_ADMIN_ROLE) {\n _changeDefaultAdminDelay(newDelay);\n }\n\n /**\n * @dev See {changeDefaultAdminDelay}.\n *\n * Internal function without access restriction.\n */\n function _changeDefaultAdminDelay(uint48 newDelay) internal virtual {\n uint48 newSchedule = SafeCast.toUint48(block.timestamp) + _delayChangeWait(newDelay);\n _setPendingDelay(newDelay, newSchedule);\n emit DefaultAdminDelayChangeScheduled(newDelay, newSchedule);\n }\n\n /// @inheritdoc IAccessControlDefaultAdminRules\n function rollbackDefaultAdminDelay() public virtual onlyRole(DEFAULT_ADMIN_ROLE) {\n _rollbackDefaultAdminDelay();\n }\n\n /**\n * @dev See {rollbackDefaultAdminDelay}.\n *\n * Internal function without access restriction.\n */\n function _rollbackDefaultAdminDelay() internal virtual {\n _setPendingDelay(0, 0);\n }\n\n /**\n * @dev Returns the amount of seconds to wait after the `newDelay` will\n * become the new {defaultAdminDelay}.\n *\n * The value returned guarantees that if the delay is reduced, it will go into effect\n * after a wait that honors the previously set delay.\n *\n * See {defaultAdminDelayIncreaseWait}.\n */\n function _delayChangeWait(uint48 newDelay) internal view virtual returns (uint48) {\n uint48 currentDelay = defaultAdminDelay();\n\n // When increasing the delay, we schedule the delay change to occur after a period of \"new delay\" has passed, up\n // to a maximum given by defaultAdminDelayIncreaseWait, by default 5 days. For example, if increasing from 1 day\n // to 3 days, the new delay will come into effect after 3 days. If increasing from 1 day to 10 days, the new\n // delay will come into effect after 5 days. The 5 day wait period is intended to be able to fix an error like\n // using milliseconds instead of seconds.\n //\n // When decreasing the delay, we wait the difference between \"current delay\" and \"new delay\". This guarantees\n // that an admin transfer cannot be made faster than \"current delay\" at the time the delay change is scheduled.\n // For example, if decreasing from 10 days to 3 days, the new delay will come into effect after 7 days.\n return\n newDelay > currentDelay\n ? uint48(Math.min(newDelay, defaultAdminDelayIncreaseWait())) // no need to safecast, both inputs are uint48\n : currentDelay - newDelay;\n }\n\n ///\n /// Private setters\n ///\n\n /**\n * @dev Setter of the tuple for pending admin and its schedule.\n *\n * May emit a DefaultAdminTransferCanceled event.\n */\n function _setPendingDefaultAdmin(address newAdmin, uint48 newSchedule) private {\n AccessControlDefaultAdminRulesStorage storage $ = _getAccessControlDefaultAdminRulesStorage();\n (, uint48 oldSchedule) = pendingDefaultAdmin();\n\n $._pendingDefaultAdmin = newAdmin;\n $._pendingDefaultAdminSchedule = newSchedule;\n\n // An `oldSchedule` from `pendingDefaultAdmin()` is only set if it hasn't been accepted.\n if (_isScheduleSet(oldSchedule)) {\n // Emit for implicit cancellations when another default admin was scheduled.\n emit DefaultAdminTransferCanceled();\n }\n }\n\n /**\n * @dev Setter of the tuple for pending delay and its schedule.\n *\n * May emit a DefaultAdminDelayChangeCanceled event.\n */\n function _setPendingDelay(uint48 newDelay, uint48 newSchedule) private {\n AccessControlDefaultAdminRulesStorage storage $ = _getAccessControlDefaultAdminRulesStorage();\n uint48 oldSchedule = $._pendingDelaySchedule;\n\n if (_isScheduleSet(oldSchedule)) {\n if (_hasSchedulePassed(oldSchedule)) {\n // Materialize a virtual delay\n $._currentDelay = $._pendingDelay;\n } else {\n // Emit for implicit cancellations when another delay was scheduled.\n emit DefaultAdminDelayChangeCanceled();\n }\n }\n\n $._pendingDelay = newDelay;\n $._pendingDelaySchedule = newSchedule;\n }\n\n ///\n /// Private helpers\n ///\n\n /**\n * @dev Defines if an `schedule` is considered set. For consistency purposes.\n */\n function _isScheduleSet(uint48 schedule) private pure returns (bool) {\n return schedule != 0;\n }\n\n /**\n * @dev Defines if an `schedule` is considered passed. For consistency purposes.\n */\n function _hasSchedulePassed(uint48 schedule) private view returns (bool) {\n return schedule < block.timestamp;\n }\n}\n"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Storage of the initializable contract.\n *\n * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n * when using with upgradeable contracts.\n *\n * @custom:storage-location erc7201:openzeppelin.storage.Initializable\n */\n struct InitializableStorage {\n /**\n * @dev Indicates that the contract has been initialized.\n */\n uint64 _initialized;\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool _initializing;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Initializable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\n\n /**\n * @dev The contract is already initialized.\n */\n error InvalidInitialization();\n\n /**\n * @dev The contract is not initializing.\n */\n error NotInitializing();\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint64 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n * production.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n // Cache values to avoid duplicated sloads\n bool isTopLevelCall = !$._initializing;\n uint64 initialized = $._initialized;\n\n // Allowed calls:\n // - initialSetup: the contract is not in the initializing state and no previous version was\n // initialized\n // - construction: the contract is initialized at version 1 (no reinitialization) and the\n // current contract is just being deployed\n bool initialSetup = initialized == 0 && isTopLevelCall;\n bool construction = initialized == 1 && address(this).code.length == 0;\n\n if (!initialSetup && !construction) {\n revert InvalidInitialization();\n }\n $._initialized = 1;\n if (isTopLevelCall) {\n $._initializing = true;\n }\n _;\n if (isTopLevelCall) {\n $._initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint64 version) {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing || $._initialized >= version) {\n revert InvalidInitialization();\n }\n $._initialized = version;\n $._initializing = true;\n _;\n $._initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n _checkInitializing();\n _;\n }\n\n /**\n * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\n */\n function _checkInitializing() internal view virtual {\n if (!_isInitializing()) {\n revert NotInitializing();\n }\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing) {\n revert InvalidInitialization();\n }\n if ($._initialized != type(uint64).max) {\n $._initialized = type(uint64).max;\n emit Initialized(type(uint64).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint64) {\n return _getInitializableStorage()._initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _getInitializableStorage()._initializing;\n }\n\n /**\n * @dev Pointer to storage slot. Allows integrators to override it with a custom storage location.\n *\n * NOTE: Consider following the ERC-7201 formula to derive storage locations.\n */\n function _initializableStorageSlot() internal pure virtual returns (bytes32) {\n return INITIALIZABLE_STORAGE;\n }\n\n /**\n * @dev Returns a pointer to the storage namespace.\n */\n // solhint-disable-next-line var-name-mixedcase\n function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\n bytes32 slot = _initializableStorageSlot();\n assembly {\n $.slot := slot\n }\n }\n}\n"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.22;\n\nimport {IERC1822Proxiable} from \"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\";\nimport {ERC1967Utils} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\";\nimport {Initializable} from \"./Initializable.sol\";\n\n/**\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n *\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n * `UUPSUpgradeable` with a custom implementation of upgrades.\n *\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n */\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address private immutable __self = address(this);\n\n /**\n * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n * If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n * during an upgrade.\n */\n string public constant UPGRADE_INTERFACE_VERSION = \"5.0.0\";\n\n /**\n * @dev The call is from an unauthorized context.\n */\n error UUPSUnauthorizedCallContext();\n\n /**\n * @dev The storage `slot` is unsupported as a UUID.\n */\n error UUPSUnsupportedProxiableUUID(bytes32 slot);\n\n /**\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n * a proxy contract with an implementation (as defined in ERC-1967) pointing to self. This should only be the case\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n * function through ERC-1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n * fail.\n */\n modifier onlyProxy() {\n _checkProxy();\n _;\n }\n\n /**\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n * callable on the implementing contract but not through proxies.\n */\n modifier notDelegated() {\n _checkNotDelegated();\n _;\n }\n\n function __UUPSUpgradeable_init() internal onlyInitializing {\n }\n\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\n */\n function proxiableUUID() external view virtual notDelegated returns (bytes32) {\n return ERC1967Utils.IMPLEMENTATION_SLOT;\n }\n\n /**\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n * encoded in `data`.\n *\n * Calls {_authorizeUpgrade}.\n *\n * Emits an {Upgraded} event.\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\n _authorizeUpgrade(newImplementation);\n _upgradeToAndCallUUPS(newImplementation, data);\n }\n\n /**\n * @dev Reverts if the execution is not performed via delegatecall or the execution\n * context is not of a proxy with an ERC-1967 compliant implementation pointing to self.\n */\n function _checkProxy() internal view virtual {\n if (\n address(this) == __self || // Must be called through delegatecall\n ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\n ) {\n revert UUPSUnauthorizedCallContext();\n }\n }\n\n /**\n * @dev Reverts if the execution is performed via delegatecall.\n * See {notDelegated}.\n */\n function _checkNotDelegated() internal view virtual {\n if (address(this) != __self) {\n // Must not be called through delegatecall\n revert UUPSUnauthorizedCallContext();\n }\n }\n\n /**\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n * {upgradeToAndCall}.\n *\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n *\n * ```solidity\n * function _authorizeUpgrade(address) internal onlyOwner {}\n * ```\n */\n function _authorizeUpgrade(address newImplementation) internal virtual;\n\n /**\n * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n *\n * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n * is expected to be the implementation slot in ERC-1967.\n *\n * Emits an {IERC1967-Upgraded} event.\n */\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\n revert UUPSUnsupportedProxiableUUID(slot);\n }\n ERC1967Utils.upgradeToAndCall(newImplementation, data);\n } catch {\n // The implementation is not UUPS\n revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\n }\n }\n}\n"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n */\nabstract contract ERC165Upgradeable is Initializable, IERC165 {\n function __ERC165_init() internal onlyInitializing {\n }\n\n function __ERC165_init_unchained() internal onlyInitializing {\n }\n /// @inheritdoc IERC165\n function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"lib/protocol/packages/core/contracts/common/implementation/AncillaryData.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title Library for encoding and decoding ancillary data for DVM price requests.\n * @notice We assume that on-chain ancillary data can be formatted directly from bytes to utf8 encoding via\n * web3.utils.hexToUtf8, and that clients will parse the utf8-encoded ancillary data as a comma-delimitted key-value\n * dictionary. Therefore, this library provides internal methods that aid appending to ancillary data from Solidity\n * smart contracts. More details on UMA's ancillary data guidelines below:\n * https://docs.google.com/document/d/1zhKKjgY1BupBGPPrY_WOJvui0B6DMcd-xDR8-9-SPDw/edit\n */\nlibrary AncillaryData {\n // This converts the bottom half of a bytes32 input to hex in a highly gas-optimized way.\n // Source: the brilliant implementation at https://gitter.im/ethereum/solidity?at=5840d23416207f7b0ed08c9b.\n function toUtf8Bytes32Bottom(bytes32 bytesIn) private pure returns (bytes32) {\n unchecked {\n uint256 x = uint256(bytesIn);\n\n // Nibble interleave\n x = x & 0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff;\n x = (x | (x * 2**64)) & 0x0000000000000000ffffffffffffffff0000000000000000ffffffffffffffff;\n x = (x | (x * 2**32)) & 0x00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff;\n x = (x | (x * 2**16)) & 0x0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff;\n x = (x | (x * 2**8)) & 0x00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff;\n x = (x | (x * 2**4)) & 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f;\n\n // Hex encode\n uint256 h = (x & 0x0808080808080808080808080808080808080808080808080808080808080808) / 8;\n uint256 i = (x & 0x0404040404040404040404040404040404040404040404040404040404040404) / 4;\n uint256 j = (x & 0x0202020202020202020202020202020202020202020202020202020202020202) / 2;\n x = x + (h & (i | j)) * 0x27 + 0x3030303030303030303030303030303030303030303030303030303030303030;\n\n // Return the result.\n return bytes32(x);\n }\n }\n\n /**\n * @notice Returns utf8-encoded bytes32 string that can be read via web3.utils.hexToUtf8.\n * @dev Will return bytes32 in all lower case hex characters and without the leading 0x.\n * This has minor changes from the toUtf8BytesAddress to control for the size of the input.\n * @param bytesIn bytes32 to encode.\n * @return utf8 encoded bytes32.\n */\n function toUtf8Bytes(bytes32 bytesIn) internal pure returns (bytes memory) {\n return abi.encodePacked(toUtf8Bytes32Bottom(bytesIn >> 128), toUtf8Bytes32Bottom(bytesIn));\n }\n\n /**\n * @notice Returns utf8-encoded address that can be read via web3.utils.hexToUtf8.\n * Source: https://ethereum.stackexchange.com/questions/8346/convert-address-to-string/8447#8447\n * @dev Will return address in all lower case characters and without the leading 0x.\n * @param x address to encode.\n * @return utf8 encoded address bytes.\n */\n function toUtf8BytesAddress(address x) internal pure returns (bytes memory) {\n return\n abi.encodePacked(toUtf8Bytes32Bottom(bytes32(bytes20(x)) >> 128), bytes8(toUtf8Bytes32Bottom(bytes20(x))));\n }\n\n /**\n * @notice Converts a uint into a base-10, UTF-8 representation stored in a `string` type.\n * @dev This method is based off of this code: https://stackoverflow.com/a/65707309.\n */\n function toUtf8BytesUint(uint256 x) internal pure returns (bytes memory) {\n if (x == 0) {\n return \"0\";\n }\n uint256 j = x;\n uint256 len;\n while (j != 0) {\n len++;\n j /= 10;\n }\n bytes memory bstr = new bytes(len);\n uint256 k = len;\n while (x != 0) {\n k = k - 1;\n uint8 temp = (48 + uint8(x - (x / 10) * 10));\n bytes1 b1 = bytes1(temp);\n bstr[k] = b1;\n x /= 10;\n }\n return bstr;\n }\n\n function appendKeyValueBytes32(\n bytes memory currentAncillaryData,\n bytes memory key,\n bytes32 value\n ) internal pure returns (bytes memory) {\n bytes memory prefix = constructPrefix(currentAncillaryData, key);\n return abi.encodePacked(currentAncillaryData, prefix, toUtf8Bytes(value));\n }\n\n /**\n * @notice Adds \"key:value\" to `currentAncillaryData` where `value` is an address that first needs to be converted\n * to utf8 bytes. For example, if `utf8(currentAncillaryData)=\"k1:v1\"`, then this function will return\n * `utf8(k1:v1,key:value)`, and if `currentAncillaryData` is blank, then this will return `utf8(key:value)`.\n * @param currentAncillaryData This bytes data should ideally be able to be utf8-decoded, but its OK if not.\n * @param key Again, this bytes data should ideally be able to be utf8-decoded, but its OK if not.\n * @param value An address to set as the value in the key:value pair to append to `currentAncillaryData`.\n * @return Newly appended ancillary data.\n */\n function appendKeyValueAddress(\n bytes memory currentAncillaryData,\n bytes memory key,\n address value\n ) internal pure returns (bytes memory) {\n bytes memory prefix = constructPrefix(currentAncillaryData, key);\n return abi.encodePacked(currentAncillaryData, prefix, toUtf8BytesAddress(value));\n }\n\n /**\n * @notice Adds \"key:value\" to `currentAncillaryData` where `value` is a uint that first needs to be converted\n * to utf8 bytes. For example, if `utf8(currentAncillaryData)=\"k1:v1\"`, then this function will return\n * `utf8(k1:v1,key:value)`, and if `currentAncillaryData` is blank, then this will return `utf8(key:value)`.\n * @param currentAncillaryData This bytes data should ideally be able to be utf8-decoded, but its OK if not.\n * @param key Again, this bytes data should ideally be able to be utf8-decoded, but its OK if not.\n * @param value A uint to set as the value in the key:value pair to append to `currentAncillaryData`.\n * @return Newly appended ancillary data.\n */\n function appendKeyValueUint(\n bytes memory currentAncillaryData,\n bytes memory key,\n uint256 value\n ) internal pure returns (bytes memory) {\n bytes memory prefix = constructPrefix(currentAncillaryData, key);\n return abi.encodePacked(currentAncillaryData, prefix, toUtf8BytesUint(value));\n }\n\n /**\n * @notice Helper method that returns the left hand side of a \"key:value\" pair plus the colon \":\" and a leading\n * comma \",\" if the `currentAncillaryData` is not empty. The return value is intended to be prepended as a prefix to\n * some utf8 value that is ultimately added to a comma-delimited, key-value dictionary.\n */\n function constructPrefix(bytes memory currentAncillaryData, bytes memory key) internal pure returns (bytes memory) {\n if (currentAncillaryData.length > 0) {\n return abi.encodePacked(\",\", key, \":\");\n } else {\n return abi.encodePacked(key, \":\");\n }\n }\n}\n"},"lib/protocol/packages/core/contracts/common/implementation/Lockable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\n */\ncontract Lockable {\n bool private _notEntered;\n\n constructor() {\n // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\n // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\n // refund coming into effect.\n _notEntered = true;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\n * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\n * function that does the actual state modification.\n */\n modifier nonReentrant() {\n _preEntranceCheck();\n _preEntranceSet();\n _;\n _postEntranceReset();\n }\n\n /**\n * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\n */\n modifier nonReentrantView() {\n _preEntranceCheck();\n _;\n }\n\n // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\n // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\n // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\n // then call `_postEntranceReset()`.\n // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\n function _preEntranceCheck() internal view {\n // On the first call to nonReentrant, _notEntered will be true\n require(_notEntered, \"ReentrancyGuard: reentrant call\");\n }\n\n function _preEntranceSet() internal {\n // Any calls to nonReentrant after this point will fail\n _notEntered = false;\n }\n\n function _postEntranceReset() internal {\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _notEntered = true;\n }\n\n // These functions are intended to be used by child contracts to temporarily disable and re-enable the guard.\n // Intended use:\n // _startReentrantGuardDisabled();\n // ...\n // _endReentrantGuardDisabled();\n //\n // IMPORTANT: these should NEVER be used in a method that isn't inside a nonReentrant block. Otherwise, it's\n // possible to permanently lock your contract.\n function _startReentrantGuardDisabled() internal {\n _notEntered = true;\n }\n\n function _endReentrantGuardDisabled() internal {\n _notEntered = false;\n }\n}\n"},"lib/protocol/packages/core/contracts/data-verification-mechanism/implementation/Constants.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title Stores common interface names used throughout the DVM by registration in the Finder.\n */\nlibrary OracleInterfaces {\n bytes32 public constant Oracle = \"Oracle\";\n bytes32 public constant IdentifierWhitelist = \"IdentifierWhitelist\";\n bytes32 public constant Store = \"Store\";\n bytes32 public constant FinancialContractsAdmin = \"FinancialContractsAdmin\";\n bytes32 public constant Registry = \"Registry\";\n bytes32 public constant CollateralWhitelist = \"CollateralWhitelist\";\n bytes32 public constant OptimisticOracle = \"OptimisticOracle\";\n bytes32 public constant OptimisticOracleV2 = \"OptimisticOracleV2\";\n bytes32 public constant OptimisticOracleV3 = \"OptimisticOracleV3\";\n bytes32 public constant Bridge = \"Bridge\";\n bytes32 public constant GenericHandler = \"GenericHandler\";\n bytes32 public constant SkinnyOptimisticOracle = \"SkinnyOptimisticOracle\";\n bytes32 public constant ChildMessenger = \"ChildMessenger\";\n bytes32 public constant OracleHub = \"OracleHub\";\n bytes32 public constant OracleSpoke = \"OracleSpoke\";\n}\n\n/**\n * @title Commonly re-used values for contracts associated with the OptimisticOracle.\n */\nlibrary OptimisticOracleConstraints {\n // Any price request submitted to the OptimisticOracle must contain ancillary data no larger than this value.\n // This value must be <= the Voting contract's `ancillaryBytesLimit` constant value otherwise it is possible\n // that a price can be requested to the OptimisticOracle successfully, but cannot be resolved by the DVM which\n // refuses to accept a price request made with ancillary data length over a certain size.\n uint256 public constant ancillaryBytesLimit = 8192;\n}\n"},"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/FinderInterface.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title Provides addresses of the live contracts implementing certain interfaces.\n * @dev Examples are the Oracle or Store interfaces.\n */\ninterface FinderInterface {\n /**\n * @notice Updates the address of the contract that implements `interfaceName`.\n * @param interfaceName bytes32 encoding of the interface name that is either changed or registered.\n * @param implementationAddress address of the deployed contract that implements the interface.\n */\n function changeImplementationAddress(bytes32 interfaceName, address implementationAddress) external;\n\n /**\n * @notice Gets the address of the contract that implements the given `interfaceName`.\n * @param interfaceName queried interface.\n * @return implementationAddress address of the deployed contract that implements the interface.\n */\n function getImplementationAddress(bytes32 interfaceName) external view returns (address);\n}\n"},"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/IdentifierWhitelistInterface.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title Interface for whitelists of supported identifiers that the oracle can provide prices for.\n */\ninterface IdentifierWhitelistInterface {\n /**\n * @notice Adds the provided identifier as a supported identifier.\n * @dev Price requests using this identifier will succeed after this call.\n * @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD.\n */\n function addSupportedIdentifier(bytes32 identifier) external;\n\n /**\n * @notice Removes the identifier from the whitelist.\n * @dev Price requests using this identifier will no longer succeed after this call.\n * @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD.\n */\n function removeSupportedIdentifier(bytes32 identifier) external;\n\n /**\n * @notice Checks whether an identifier is on the whitelist.\n * @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD.\n * @return bool if the identifier is supported (or not).\n */\n function isIdentifierSupported(bytes32 identifier) external view returns (bool);\n}\n"},"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/OracleAncillaryInterface.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title Financial contract facing Oracle interface.\n * @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.\n */\nabstract contract OracleAncillaryInterface {\n /**\n * @notice Enqueues a request (if a request isn't already present) for the given `identifier`, `time` pair.\n * @dev Time must be in the past and the identifier must be supported.\n * @param identifier uniquely identifies the price requested. eg BTC/USD (encoded as bytes32) could be requested.\n * @param ancillaryData arbitrary data appended to a price request to give the voters more info from the caller.\n * @param time unix timestamp for the price request.\n */\n\n function requestPrice(\n bytes32 identifier,\n uint256 time,\n bytes memory ancillaryData\n ) public virtual;\n\n /**\n * @notice Whether the price for `identifier` and `time` is available.\n * @dev Time must be in the past and the identifier must be supported.\n * @param identifier uniquely identifies the price requested. eg BTC/USD (encoded as bytes32) could be requested.\n * @param time unix timestamp for the price request.\n * @param ancillaryData arbitrary data appended to a price request to give the voters more info from the caller.\n * @return bool if the DVM has resolved to a price for the given identifier and timestamp.\n */\n function hasPrice(\n bytes32 identifier,\n uint256 time,\n bytes memory ancillaryData\n ) public view virtual returns (bool);\n\n /**\n * @notice Gets the price for `identifier` and `time` if it has already been requested and resolved.\n * @dev If the price is not available, the method reverts.\n * @param identifier uniquely identifies the price requested. eg BTC/USD (encoded as bytes32) could be requested.\n * @param time unix timestamp for the price request.\n * @param ancillaryData arbitrary data appended to a price request to give the voters more info from the caller.\n * @return int256 representing the resolved price for the given identifier and timestamp.\n */\n\n function getPrice(\n bytes32 identifier,\n uint256 time,\n bytes memory ancillaryData\n ) public view virtual returns (int256);\n}\n"},"src/common/implementation/AddressLegacy.sol":{"content":"// SPDX-License-Identifier: MIT\n// Copied from OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol) to make isContract function available\n// as it has been deprecated in OpenZeppelin Contracts v5.x\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressLegacy {\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"},"src/common/implementation/AddressWhitelist.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\n// Based on https://github.com/UMAprotocol/protocol/blob/%40uma/core%402.62.0/packages/core/contracts/common/implementation/AddressWhitelist.sol\n// adding the functionality to check if the whitelist is enabled and to be compatible with OpenZeppelin v5.x. This also\n// uses named imports and linting from Foundry.\n\npragma solidity ^0.8.0;\n\nimport {AddressWhitelistInterface} from \"../interfaces/AddressWhitelistInterface.sol\";\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\nimport {Ownable} from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport {Lockable} from \"@uma/contracts/common/implementation/Lockable.sol\";\n\n/**\n * @title A contract to track a whitelist of addresses.\n * @custom:security-contact bugs@umaproject.org\n */\ncontract AddressWhitelist is AddressWhitelistInterface, Ownable, Lockable, ERC165 {\n enum Status {\n None,\n In,\n Out\n }\n\n mapping(address => Status) public whitelist;\n\n address[] public whitelistIndices;\n\n event AddedToWhitelist(address indexed addedAddress);\n event RemovedFromWhitelist(address indexed removedAddress);\n\n /**\n * @notice Constructor to initialize the contract.\n * @dev This makes it compatible with v5.x of OpenZeppelin's Ownable contract.\n */\n constructor() Ownable(msg.sender) {}\n\n /**\n * @notice Adds an address to the whitelist.\n * @param newElement the new address to add.\n */\n function addToWhitelist(address newElement) external override nonReentrant onlyOwner {\n // Ignore if address is already included\n if (whitelist[newElement] == Status.In) {\n return;\n }\n\n // Only append new addresses to the array, never a duplicate\n if (whitelist[newElement] == Status.None) {\n whitelistIndices.push(newElement);\n }\n\n whitelist[newElement] = Status.In;\n\n emit AddedToWhitelist(newElement);\n }\n\n /**\n * @notice Removes an address from the whitelist.\n * @param elementToRemove the existing address to remove.\n */\n function removeFromWhitelist(address elementToRemove) external override nonReentrant onlyOwner {\n if (whitelist[elementToRemove] != Status.Out) {\n whitelist[elementToRemove] = Status.Out;\n emit RemovedFromWhitelist(elementToRemove);\n }\n }\n\n /**\n * @notice Checks whether an address is on the whitelist.\n * @param elementToCheck the address to check.\n * @return True if `elementToCheck` is on the whitelist, or False.\n */\n function isOnWhitelist(address elementToCheck) public view virtual override nonReentrantView returns (bool) {\n return whitelist[elementToCheck] == Status.In;\n }\n\n /**\n * @notice Gets all addresses that are currently included in the whitelist.\n * @dev Note: This method skips over, but still iterates through addresses. It is possible for this call to run out\n * of gas if a large number of addresses have been removed. To reduce the likelihood of this unlikely scenario, we\n * can modify the implementation so that when addresses are removed, the last addresses in the array is moved to\n * the empty index.\n * @return activeWhitelist the list of addresses on the whitelist.\n */\n function getWhitelist() external view override nonReentrantView returns (address[] memory activeWhitelist) {\n // Determine size of whitelist first\n uint256 activeCount = 0;\n for (uint256 i = 0; i < whitelistIndices.length; i++) {\n if (whitelist[whitelistIndices[i]] == Status.In) {\n activeCount++;\n }\n }\n\n // Populate whitelist\n activeWhitelist = new address[](activeCount);\n activeCount = 0;\n for (uint256 i = 0; i < whitelistIndices.length; i++) {\n address addr = whitelistIndices[i];\n if (whitelist[addr] == Status.In) {\n activeWhitelist[activeCount] = addr;\n activeCount++;\n }\n }\n }\n\n /**\n * @notice Checks if the whitelist is enabled.\n * @dev For this implementation, the whitelist is always considered enabled.\n * @return enabled Always returns true.\n */\n function isWhitelistEnabled() external pure returns (bool enabled) {\n return true;\n }\n\n /**\n * @notice Returns true if this contract implements the interface defined by interfaceId.\n * @param interfaceId The interface identifier, as specified in ERC-165.\n * @return True if the contract implements the interface defined by interfaceId.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(AddressWhitelistInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n}\n"},"src/common/implementation/DisabledAddressWhitelist.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.4;\n\nimport {ERC165} from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\nimport {AddressWhitelistInterface} from \"../interfaces/AddressWhitelistInterface.sol\";\n\n/**\n * @notice This contract is an implementation of AddressWhitelistInterface where the whitelist is permanently disabled.\n * @dev All addresses are considered to be on this whitelist.\n * @custom:security-contact bugs@umaproject.org\n */\ncontract DisabledAddressWhitelist is AddressWhitelistInterface, ERC165 {\n error CannotAddToDisabledAddressWhitelist();\n error CannotRemoveFromDisabledAddressWhitelist();\n\n function addToWhitelist(address) external pure {\n revert CannotAddToDisabledAddressWhitelist();\n }\n\n function removeFromWhitelist(address) external pure {\n revert CannotRemoveFromDisabledAddressWhitelist();\n }\n\n function isOnWhitelist(address) external pure returns (bool) {\n return true;\n }\n\n function getWhitelist() external pure returns (address[] memory) {\n return new address[](0);\n }\n\n function isWhitelistEnabled() external pure returns (bool enabled) {\n return false;\n }\n\n /**\n * @notice Returns true if this contract implements the interface defined by interfaceId.\n * @param interfaceId The interface identifier, as specified in ERC-165.\n * @return True if the contract implements the interface defined by interfaceId.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(AddressWhitelistInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n}\n"},"src/common/implementation/LockableUpgradeable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\n// Ported from https://github.com/UMAprotocol/protocol/blob/%40uma/core%402.62.0/packages/core/contracts/common/implementation/Lockable.sol\n// to be compatible for use in upgradeable contracts and using custom errors.\n\npragma solidity ^0.8.27;\n\nimport {Initializable} from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\n\n/**\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\n */\nabstract contract LockableUpgradeable is Initializable {\n error ReentrancyGuardReentrantCall();\n\n bool private _notEntered;\n\n /**\n * @notice initializes the LockableUpgradeable contract\n */\n function __LockableUpgradeable_init() internal onlyInitializing {\n // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\n // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\n // refund coming into effect.\n _notEntered = true;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\n * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\n * function that does the actual state modification.\n */\n modifier nonReentrant() {\n _preEntranceCheck();\n _preEntranceSet();\n _;\n _postEntranceReset();\n }\n\n /**\n * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\n */\n modifier nonReentrantView() {\n _preEntranceCheck();\n _;\n }\n\n // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\n // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\n // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\n // then call `_postEntranceReset()`.\n // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\n function _preEntranceCheck() internal view {\n // On the first call to nonReentrant, _notEntered will be true\n require(_notEntered, ReentrancyGuardReentrantCall());\n }\n\n function _preEntranceSet() internal {\n // Any calls to nonReentrant after this point will fail\n _notEntered = false;\n }\n\n function _postEntranceReset() internal {\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _notEntered = true;\n }\n\n // These functions are intended to be used by child contracts to temporarily disable and re-enable the guard.\n // Intended use:\n // _startReentrantGuardDisabled();\n // ...\n // _endReentrantGuardDisabled();\n //\n // IMPORTANT: these should NEVER be used in a method that isn't inside a nonReentrant block. Otherwise, it's\n // possible to permanently lock your contract.\n function _startReentrantGuardDisabled() internal {\n _notEntered = true;\n }\n\n function _endReentrantGuardDisabled() internal {\n _notEntered = false;\n }\n\n /**\n * @dev Reserve storage slots for future versions of this base contract to add state variables without affecting the\n * storage layout of child contracts. Decrement the size of __gap whenever state variables are added. This is at the\n * bottom of contract to make sure its always at the end of storage.\n * See https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable#storage-gaps\n */\n uint256[49] private __gap;\n}\n"},"src/common/implementation/MultiCaller.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\n// Ported from https://github.com/UMAprotocol/protocol/blob/%40uma/core%402.62.0/packages/core/contracts/common/implementation/MultiCaller.sol\n// to be compatible for use in upgradeable contracts.\n\npragma solidity ^0.8.0;\n\n/**\n * @title MultiCaller\n * @notice Logic is 100% copied from \"@uma/core/contracts/common/implementation/MultiCaller.sol\" but a\n * comment is added to clarify why we allow delegatecall() in this contract, which is typically unsafe for use in\n * upgradeable implementation contracts.\n * @dev See https://docs.openzeppelin.com/upgrades-plugins/1.x/faq#delegatecall-selfdestruct for more details.\n */\nabstract contract MultiCaller {\n function multicall(bytes[] calldata data) external returns (bytes[] memory results) {\n results = new bytes[](data.length);\n for (uint256 i = 0; i < data.length; i++) {\n // Typically, implementation contracts used in the upgradeable proxy pattern shouldn't call `delegatecall`\n // because it could allow a malicious actor to call this implementation contract directly (rather than\n // through a proxy contract) and then selfdestruct() the contract, thereby freezing the upgradeable\n // proxy. However, since we're only delegatecall-ing into this contract, then we can consider this\n // use of delegatecall() safe.\n\n /// @custom:oz-upgrades-unsafe-allow delegatecall\n (bool success, bytes memory result) = address(this).delegatecall(data[i]);\n\n if (!success) {\n // Next 5 lines from https://ethereum.stackexchange.com/a/83577\n if (result.length < 68) revert();\n assembly {\n result := add(result, 0x04)\n }\n revert(abi.decode(result, (string)));\n }\n\n results[i] = result;\n }\n }\n\n /**\n * @dev Reserve storage slots for future versions of this base contract to add state variables without affecting the\n * storage layout of child contracts. Decrement the size of __gap whenever state variables are added. This is at the\n * bottom of contract to make sure its always at the end of storage.\n * See https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable#storage-gaps\n */\n uint256[50] private __gap;\n}\n"},"src/common/interfaces/AddressWhitelistInterface.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\n// Based on https://github.com/UMAprotocol/protocol/blob/%40uma/core%402.62.0/packages/core/contracts/common/interfaces/AddressWhitelistInterface.sol\n// adding the functionality to check if the whitelist is enabled.\n\npragma solidity ^0.8.0;\n\ninterface AddressWhitelistInterface {\n function addToWhitelist(address newElement) external;\n\n function removeFromWhitelist(address newElement) external;\n\n function isOnWhitelist(address newElement) external view returns (bool);\n\n function getWhitelist() external view returns (address[] memory);\n\n function isWhitelistEnabled() external view returns (bool);\n}\n"},"src/common/interfaces/FixedPointInterface.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\n// Derived from https://github.com/UMAprotocol/protocol/blob/%40uma/core%402.62.0/packages/core/contracts/common/implementation/FixedPoint.sol\n// to expose the Unsigned struct for use in other contracts. The rest of the FixedPoint library logic is not required\n// here and any porting would require significant changes to the codebase related to the removed support of SafeMath in\n// OpenZeppelin 5.x.\n\npragma solidity ^0.8.0;\n\n/**\n * @title Interface for fixed point arithmetic on uints\n */\ninterface FixedPointInterface {\n struct Unsigned {\n uint256 rawValue;\n }\n}\n"},"src/data-verification-mechanism/interfaces/StoreInterface.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\n// Ported from https://github.com/UMAprotocol/protocol/blob/%40uma/core%402.62.0/packages/core/contracts/data-verification-mechanism/interfaces/StoreInterface.sol\n// to use FixedPointInterface.Unsigned as the FixedPoint library is not compatible with OpenZeppelin v5.x. This also\n// uses named imports.\n\npragma solidity ^0.8.0;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport {FixedPointInterface} from \"../../common/interfaces/FixedPointInterface.sol\";\n\n/**\n * @title Interface that allows financial contracts to pay oracle fees for their use of the system.\n */\ninterface StoreInterface {\n /**\n * @notice Pays Oracle fees in ETH to the store.\n * @dev To be used by contracts whose margin currency is ETH.\n */\n function payOracleFees() external payable;\n\n /**\n * @notice Pays oracle fees in the margin currency, erc20Address, to the store.\n * @dev To be used if the margin currency is an ERC20 token rather than ETH.\n * @param erc20Address address of the ERC20 token used to pay the fee.\n * @param amount number of tokens to transfer. An approval for at least this amount must exist.\n */\n function payOracleFeesErc20(address erc20Address, FixedPointInterface.Unsigned calldata amount) external;\n\n /**\n * @notice Computes the regular oracle fees that a contract should pay for a period.\n * @param startTime defines the beginning time from which the fee is paid.\n * @param endTime end time until which the fee is paid.\n * @param pfc \"profit from corruption\", or the maximum amount of margin currency that a\n * token sponsor could extract from the contract through corrupting the price feed in their favor.\n * @return regularFee amount owed for the duration from start to end time for the given pfc.\n * @return latePenalty for paying the fee after the deadline.\n */\n function computeRegularFee(uint256 startTime, uint256 endTime, FixedPointInterface.Unsigned calldata pfc)\n external\n view\n returns (FixedPointInterface.Unsigned memory regularFee, FixedPointInterface.Unsigned memory latePenalty);\n\n /**\n * @notice Computes the final oracle fees that a contract should pay at settlement.\n * @param currency token used to pay the final fee.\n * @return finalFee amount due.\n */\n function computeFinalFee(address currency) external view returns (FixedPointInterface.Unsigned memory);\n}\n"},"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.27;\n\nimport {ERC165Checker} from \"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\";\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport {AddressWhitelistInterface} from \"../../common/interfaces/AddressWhitelistInterface.sol\";\nimport {ManagedOptimisticOracleV2Interface} from \"../interfaces/ManagedOptimisticOracleV2Interface.sol\";\nimport {MultiCaller} from \"../../common/implementation/MultiCaller.sol\";\nimport {OptimisticOracleV2} from \"./OptimisticOracleV2.sol\";\n\n/**\n * @title Managed Optimistic Oracle V2.\n * @notice Pre-DVM escalation contract that allows faster settlement and management of price requests.\n * @custom:security-contact bugs@umaproject.org\n */\ncontract ManagedOptimisticOracleV2 is ManagedOptimisticOracleV2Interface, OptimisticOracleV2, MultiCaller {\n struct BondRange {\n uint128 minimumBond;\n uint128 maximumBond;\n }\n\n struct CurrencyBondRange {\n IERC20 currency;\n BondRange range;\n }\n\n struct CustomBond {\n uint256 amount;\n bool isSet;\n }\n\n struct CustomLiveness {\n uint256 liveness;\n bool isSet;\n }\n\n // Config admin role is used to manage request managers and set other default parameters.\n bytes32 public constant CONFIG_ADMIN_ROLE = keccak256(\"CONFIG_ADMIN_ROLE\");\n\n // Request manager role is used to manage proposer whitelists, bonds, and liveness for individual requests.\n bytes32 public constant REQUEST_MANAGER_ROLE = keccak256(\"REQUEST_MANAGER_ROLE\");\n\n // Default whitelist for proposers.\n AddressWhitelistInterface public defaultProposerWhitelist;\n AddressWhitelistInterface public requesterWhitelist;\n\n // Custom bonds set by request managers for specific request and currency combinations.\n mapping(bytes32 => mapping(IERC20 => CustomBond)) public customBonds;\n\n // Custom liveness values set by request managers for specific requests.\n mapping(bytes32 => CustomLiveness) public customLivenessValues;\n\n // Custom proposer whitelists set by request managers for specific requests.\n mapping(bytes32 => AddressWhitelistInterface) public customProposerWhitelists;\n\n // Admin controlled ranges limiting the changes that can be made by request managers.\n mapping(IERC20 => BondRange) public allowedBondRanges;\n\n // Admin controlled minimum liveness that can be set by request managers.\n uint256 public minimumLiveness;\n\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /**\n * @notice Initializer.\n * @param _defaultLiveness applied to each price request.\n * @param _finderAddress to use to get addresses of DVM contracts.\n * @param _defaultProposerWhitelist address of the default whitelist.\n * @param _requesterWhitelist address of the requester whitelist.\n * @param _allowedBondRanges array of allowed bond ranges for different currencies.\n * @param _minimumLiveness that can be overridden for a request.\n * @param configAdmin address, which is used for managing request managers and contract parameters.\n * @param upgradeAdmin address, which also can manage the config admin role.\n */\n function initialize(\n uint256 _defaultLiveness,\n address _finderAddress,\n address _defaultProposerWhitelist,\n address _requesterWhitelist,\n CurrencyBondRange[] calldata _allowedBondRanges,\n uint256 _minimumLiveness,\n address configAdmin,\n address upgradeAdmin\n ) external initializer {\n __OptimisticOracleV2_init(_defaultLiveness, _finderAddress, upgradeAdmin);\n\n // Config admin is managing the request manager role.\n // Contract upgrade admin retains the default admin role that can also manage the config admin role.\n _grantRole(CONFIG_ADMIN_ROLE, configAdmin);\n _setRoleAdmin(REQUEST_MANAGER_ROLE, CONFIG_ADMIN_ROLE);\n\n _setDefaultProposerWhitelist(_defaultProposerWhitelist);\n _setRequesterWhitelist(_requesterWhitelist);\n for (uint256 i = 0; i < _allowedBondRanges.length; i++) {\n _setAllowedBondRange(_allowedBondRanges[i].currency, _allowedBondRanges[i].range);\n }\n _setMinimumLiveness(_minimumLiveness);\n }\n\n /**\n * @dev Throws if called by any account other than the config admin.\n */\n modifier onlyConfigAdmin() {\n _checkRole(CONFIG_ADMIN_ROLE);\n _;\n }\n\n /**\n * @dev Throws if called by any account other than the request manager.\n */\n modifier onlyRequestManager() {\n _checkRole(REQUEST_MANAGER_ROLE);\n _;\n }\n\n /**\n * @notice Adds a request manager.\n * @dev Only callable by the config admin (checked in grantRole of AccessControlUpgradeable).\n * @param requestManager address of the request manager to set.\n */\n function addRequestManager(address requestManager) external nonReentrant {\n grantRole(REQUEST_MANAGER_ROLE, requestManager);\n emit RequestManagerAdded(requestManager);\n }\n\n /**\n * @notice Removes a request manager.\n * @dev Only callable by the config admin (checked in revokeRole of AccessControlUpgradeable).\n * @param requestManager address of the request manager to remove.\n */\n function removeRequestManager(address requestManager) external nonReentrant {\n revokeRole(REQUEST_MANAGER_ROLE, requestManager);\n emit RequestManagerRemoved(requestManager);\n }\n\n /**\n * @notice Sets the bounds for a bond that can be set for a request.\n * @dev This can be used to limit the bond amount that can be set by request managers, callable by the config admin.\n * @param currency the ERC20 token used for bonding proposals and disputes. Must be approved for use with the DVM.\n * @param newRange new allowed range for the bond.\n */\n function setAllowedBondRange(IERC20 currency, BondRange calldata newRange) external nonReentrant onlyConfigAdmin {\n _setAllowedBondRange(currency, newRange);\n }\n\n /**\n * @notice Sets the minimum liveness that can be set for a request.\n * @dev This can be used to limit the liveness period that can be set by request managers, callable by the config admin.\n * @param _minimumLiveness new minimum liveness period.\n */\n function setMinimumLiveness(uint256 _minimumLiveness) external nonReentrant onlyConfigAdmin {\n _setMinimumLiveness(_minimumLiveness);\n }\n\n /**\n * @notice Sets the default proposer whitelist.\n * @dev Only callable by the config admin.\n * @param whitelist address of the whitelist to set.\n */\n function setDefaultProposerWhitelist(address whitelist) external nonReentrant onlyConfigAdmin {\n _setDefaultProposerWhitelist(whitelist);\n }\n\n /**\n * @notice Sets the requester whitelist.\n * @dev Only callable by the config admin.\n * @param whitelist address of the whitelist to set.\n */\n function setRequesterWhitelist(address whitelist) external nonReentrant onlyConfigAdmin {\n _setRequesterWhitelist(whitelist);\n }\n\n /**\n * @notice Requests a new price.\n * @param identifier price identifier being requested.\n * @param timestamp timestamp of the price being requested.\n * @param ancillaryData ancillary data representing additional args being passed with the price request.\n * @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n * @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n * which could make sense if the contract requests and proposes the value in the same call or\n * provides its own reward system.\n * @return totalBond default bond (final fee) + final fee that the proposer and disputer will be required to pay.\n * This can be changed with a subsequent call to setBond().\n */\n function requestPrice(\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n IERC20 currency,\n uint256 reward\n ) public override returns (uint256 totalBond) {\n require(requesterWhitelist.isOnWhitelist(msg.sender), RequesterNotWhitelisted());\n return super.requestPrice(identifier, timestamp, ancillaryData, currency, reward);\n }\n\n /**\n * @notice Set the proposal bond associated with a price request.\n * @dev This would also override any subsequent calls to setBond() by the requester.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n * @param bond custom bond amount to set.\n */\n function requestManagerSetBond(\n address requester,\n bytes32 identifier,\n bytes memory ancillaryData,\n IERC20 currency,\n uint256 bond\n ) external nonReentrant onlyRequestManager {\n require(_getCollateralWhitelist().isOnWhitelist(address(currency)), UnsupportedCurrency());\n _validateBond(currency, bond);\n bytes32 managedRequestId = getManagedRequestId(requester, identifier, ancillaryData);\n customBonds[managedRequestId][currency] = CustomBond({amount: bond, isSet: true});\n emit CustomBondSet(managedRequestId, requester, identifier, ancillaryData, currency, bond);\n }\n\n /**\n * @notice Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before\n * being auto-resolved.\n * @dev This would also override any subsequent calls to setLiveness() by the requester.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param customLiveness new custom liveness.\n */\n function requestManagerSetCustomLiveness(\n address requester,\n bytes32 identifier,\n bytes memory ancillaryData,\n uint256 customLiveness\n ) external nonReentrant onlyRequestManager {\n _validateLiveness(customLiveness);\n bytes32 managedRequestId = getManagedRequestId(requester, identifier, ancillaryData);\n customLivenessValues[managedRequestId] = CustomLiveness({liveness: customLiveness, isSet: true});\n emit CustomLivenessSet(managedRequestId, requester, identifier, ancillaryData, customLiveness);\n }\n\n /**\n * @notice Sets the proposer whitelist for a request.\n * @dev This can also be set in advance of the request as the timestamp is omitted from the mapping key derivation.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param whitelist address of the whitelist to set.\n */\n function requestManagerSetProposerWhitelist(\n address requester,\n bytes32 identifier,\n bytes memory ancillaryData,\n address whitelist\n ) external nonReentrant onlyRequestManager {\n // Zero address is allowed to disable the custom proposer whitelist.\n if (whitelist != address(0)) {\n _validateWhitelistInterface(whitelist);\n }\n bytes32 managedRequestId = getManagedRequestId(requester, identifier, ancillaryData);\n customProposerWhitelists[managedRequestId] = AddressWhitelistInterface(whitelist);\n emit CustomProposerWhitelistSet(managedRequestId, requester, identifier, ancillaryData, whitelist);\n }\n\n /**\n * @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\n * from this proposal. However, any bonds are pulled from the caller.\n * @param proposer address to set as the proposer.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param proposedPrice price being proposed.\n * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n * the proposer once settled if the proposal is correct.\n */\n function proposePriceFor(\n address proposer,\n address requester,\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n int256 proposedPrice\n ) public override returns (uint256 totalBond) {\n // Apply the custom bond and liveness overrides if set.\n Request storage request = _getRequest(requester, identifier, timestamp, ancillaryData);\n bytes32 managedRequestId = getManagedRequestId(requester, identifier, ancillaryData);\n if (customBonds[managedRequestId][request.currency].isSet) {\n request.requestSettings.bond = customBonds[managedRequestId][request.currency].amount;\n }\n if (customLivenessValues[managedRequestId].isSet) {\n request.requestSettings.customLiveness = customLivenessValues[managedRequestId].liveness;\n }\n\n AddressWhitelistInterface whitelist = _getEffectiveProposerWhitelist(requester, identifier, ancillaryData);\n\n require(whitelist.isOnWhitelist(proposer), ProposerNotWhitelisted());\n require(whitelist.isOnWhitelist(msg.sender), SenderNotWhitelisted());\n return super.proposePriceFor(proposer, requester, identifier, timestamp, ancillaryData, proposedPrice);\n }\n\n /**\n * @notice Gets the custom proposer whitelist for a request.\n * @dev This omits the timestamp from the key derivation, so the whitelist might have been set in advance of the\n * request.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return AddressWhitelistInterface the custom proposer whitelist for the request or zero address if not set.\n */\n function getCustomProposerWhitelist(address requester, bytes32 identifier, bytes memory ancillaryData)\n external\n view\n returns (AddressWhitelistInterface)\n {\n return customProposerWhitelists[getManagedRequestId(requester, identifier, ancillaryData)];\n }\n\n /**\n * @notice Returns the proposer whitelist and whether whitelist is enabled for a given request.\n * @dev If no custom proposer whitelist is set for the request, the default proposer whitelist is used.\n * If whitelist used is DisabledAddressWhitelist, the returned proposer list will be empty and isEnabled will be false,\n * indicating that any address is allowed to propose.\n * @param requester The address that made or will make the price request.\n * @param identifier The identifier of the price request.\n * @param ancillaryData Additional data used to uniquely identify the request.\n * @return allowedProposers The list of addresses allowed to propose, if whitelist is enabled. Otherwise, an empty array.\n * @return isEnabled A boolean indicating whether whitelist is enabled for this request.\n */\n function getProposerWhitelistWithEnabledStatus(address requester, bytes32 identifier, bytes memory ancillaryData)\n external\n view\n returns (address[] memory allowedProposers, bool isEnabled)\n {\n AddressWhitelistInterface whitelist = _getEffectiveProposerWhitelist(requester, identifier, ancillaryData);\n return (whitelist.getWhitelist(), whitelist.isWhitelistEnabled());\n }\n\n /**\n * @notice Gets the ID for a managed request.\n * @dev This omits the timestamp from the key derivation, so it can be used for managed requests in advance.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return bytes32 the ID for the managed request.\n */\n function getManagedRequestId(address requester, bytes32 identifier, bytes memory ancillaryData)\n public\n pure\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(requester, identifier, ancillaryData));\n }\n\n /**\n * @notice Sets the bounds for a bond that can be set for a request.\n * @dev This can be used to limit the bond amount that can be set by request managers. Setting the minimum and\n * maximum both to 0 effectively blocks the request manager from overriding the bond for a given currency.\n * @param currency the ERC20 token used for bonding proposals and disputes. Must be approved for use with the DVM.\n * @param newRange new allowed range for the bond.\n */\n function _setAllowedBondRange(IERC20 currency, BondRange calldata newRange) internal {\n require(_getCollateralWhitelist().isOnWhitelist(address(currency)), UnsupportedCurrency());\n require(newRange.minimumBond <= newRange.maximumBond, MinimumBondAboveMaximumBond());\n allowedBondRanges[currency] = newRange;\n emit AllowedBondRangeUpdated(currency, newRange.minimumBond, newRange.maximumBond);\n }\n\n /**\n * @notice Sets the minimum liveness that can be set for a request.\n * @dev This can be used to limit the liveness period that can be set by request managers.\n * @param _minimumLiveness new minimum liveness period.\n */\n function _setMinimumLiveness(uint256 _minimumLiveness) internal {\n super._validateLiveness(_minimumLiveness);\n minimumLiveness = _minimumLiveness;\n emit MinimumLivenessUpdated(_minimumLiveness);\n }\n\n /**\n * @notice Sets the default proposer whitelist.\n * @param whitelist address of the whitelist to set.\n */\n function _setDefaultProposerWhitelist(address whitelist) internal {\n _validateWhitelistInterface(whitelist);\n defaultProposerWhitelist = AddressWhitelistInterface(whitelist);\n emit DefaultProposerWhitelistUpdated(whitelist);\n }\n\n /**\n * @notice Sets the requester whitelist.\n * @param whitelist address of the whitelist to set.\n */\n function _setRequesterWhitelist(address whitelist) internal {\n _validateWhitelistInterface(whitelist);\n requesterWhitelist = AddressWhitelistInterface(whitelist);\n emit RequesterWhitelistUpdated(whitelist);\n }\n\n /**\n * @notice Validates that the given address implements the AddressWhitelistInterface.\n * @dev Reverts if the address does not implement the interface.\n * @param whitelist address of the whitelist to validate.\n */\n function _validateWhitelistInterface(address whitelist) internal view {\n require(\n ERC165Checker.supportsInterface(whitelist, type(AddressWhitelistInterface).interfaceId),\n UnsupportedWhitelistInterface()\n );\n }\n\n /**\n * @notice Validates the bond amount.\n * @dev Reverts if the bond is outside the allowed bond range (controllable by the config admin) or it is 0 (which\n * makes sure the allowed bond range was explicitly set).\n * @param currency the ERC20 token used for bonding proposals and disputes. Must be approved for use with the DVM.\n * @param bond the bond amount to validate.\n */\n function _validateBond(IERC20 currency, uint256 bond) internal view {\n require(bond != 0, ZeroBondNotAllowed());\n BondRange memory allowedRange = allowedBondRanges[currency];\n require(bond >= uint256(allowedRange.minimumBond), BondBelowMinimumBond());\n require(bond <= uint256(allowedRange.maximumBond), BondExceedsMaximumBond());\n }\n\n /**\n * @notice Validates the liveness period.\n * @dev Reverts if the liveness period is less than the minimum liveness (controllable by the config admin) or\n * above the maximum liveness (which is set in the parent contract).\n * @param liveness the liveness period to validate.\n */\n function _validateLiveness(uint256 liveness) internal view override {\n require(liveness >= minimumLiveness, LivenessTooLow());\n super._validateLiveness(liveness);\n }\n\n /**\n * @notice Gets the effective proposer whitelist contract for a given request.\n * @dev Returns the custom proposer whitelist if set; otherwise falls back to the default. Timestamp is omitted from\n * the key derivation, so this can be used for checks before the request is made.\n * @param requester The address that made or will make the price request.\n * @param identifier The identifier of the price request.\n * @param ancillaryData Additional data used to uniquely identify the request.\n * @return whitelist The effective AddressWhitelistInterface for the request.\n */\n function _getEffectiveProposerWhitelist(address requester, bytes32 identifier, bytes memory ancillaryData)\n internal\n view\n returns (AddressWhitelistInterface whitelist)\n {\n whitelist = customProposerWhitelists[getManagedRequestId(requester, identifier, ancillaryData)];\n if (address(whitelist) == address(0)) {\n whitelist = defaultProposerWhitelist;\n }\n }\n\n /**\n * @dev Reserve storage slots for future versions of this base contract to add state variables without affecting the\n * storage layout of child contracts. Decrement the size of __gap whenever state variables are added. This is at the\n * bottom of contract to make sure its always at the end of storage.\n * See https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable#storage-gaps\n */\n uint256[993] private __gap;\n}\n"},"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\n// Ported from https://github.com/UMAprotocol/protocol/blob/%40uma/core%402.62.0/packages/core/contracts/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol\n// to be compatible for use in upgradeable contracts and OpenZeppelin v5.x. This also uses custom errors, named imports\n// and linting from Foundry.\n\npragma solidity ^0.8.27;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport {SafeERC20} from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\n\nimport {AccessControlDefaultAdminRulesUpgradeable} from\n \"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol\";\nimport {UUPSUpgradeable} from \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\n\nimport {AncillaryData} from \"@uma/contracts/common/implementation/AncillaryData.sol\";\nimport {FinderInterface} from \"@uma/contracts/data-verification-mechanism/interfaces/FinderInterface.sol\";\nimport {IdentifierWhitelistInterface} from\n \"@uma/contracts/data-verification-mechanism/interfaces/IdentifierWhitelistInterface.sol\";\nimport {OracleAncillaryInterface} from\n \"@uma/contracts/data-verification-mechanism/interfaces/OracleAncillaryInterface.sol\";\nimport {OracleInterfaces} from \"@uma/contracts/data-verification-mechanism/implementation/Constants.sol\";\n\nimport {OptimisticOracleV2Interface} from \"../interfaces/OptimisticOracleV2Interface.sol\";\n\nimport {AddressLegacy} from \"../../common/implementation/AddressLegacy.sol\";\nimport {AddressWhitelist} from \"../../common/implementation/AddressWhitelist.sol\";\nimport {FixedPointInterface} from \"../../common/interfaces/FixedPointInterface.sol\";\nimport {LockableUpgradeable} from \"../../common/implementation/LockableUpgradeable.sol\";\nimport {StoreInterface} from \"../../data-verification-mechanism/interfaces/StoreInterface.sol\";\n\n/**\n * @title Optimistic Requester.\n * @notice Optional interface that requesters can implement to receive callbacks.\n * @dev this contract does _not_ work with ERC777 collateral currencies or any others that call into the receiver on\n * transfer(). Using an ERC777 token would allow a user to maliciously grief other participants (while also losing\n * money themselves).\n */\ninterface OptimisticRequester {\n /**\n * @notice Callback for proposals.\n * @param identifier price identifier being requested.\n * @param timestamp timestamp of the price being requested.\n * @param ancillaryData ancillary data of the price being requested.\n */\n function priceProposed(bytes32 identifier, uint256 timestamp, bytes memory ancillaryData) external;\n\n /**\n * @notice Callback for disputes.\n * @param identifier price identifier being requested.\n * @param timestamp timestamp of the price being requested.\n * @param ancillaryData ancillary data of the price being requested.\n * @param refund refund received in the case that refundOnDispute was enabled.\n */\n function priceDisputed(bytes32 identifier, uint256 timestamp, bytes memory ancillaryData, uint256 refund)\n external;\n\n /**\n * @notice Callback for settlement.\n * @param identifier price identifier being requested.\n * @param timestamp timestamp of the price being requested.\n * @param ancillaryData ancillary data of the price being requested.\n * @param price price that was resolved by the escalation process.\n */\n function priceSettled(bytes32 identifier, uint256 timestamp, bytes memory ancillaryData, int256 price) external;\n}\n\n/**\n * @title Optimistic Oracle.\n * @notice Pre-DVM escalation contract that allows faster settlement.\n * @custom:security-contact bugs@umaproject.org\n */\ncontract OptimisticOracleV2 is\n OptimisticOracleV2Interface,\n UUPSUpgradeable,\n AccessControlDefaultAdminRulesUpgradeable,\n LockableUpgradeable\n{\n using SafeERC20 for IERC20;\n using AddressLegacy for address;\n\n bytes32 public constant UPGRADE_ADMIN_ROLE = DEFAULT_ADMIN_ROLE;\n\n // Finder to provide addresses for DVM contracts.\n FinderInterface public override finder;\n\n // Default liveness value for all price requests.\n uint256 public override defaultLiveness;\n\n // This is effectively the extra ancillary data to add \",ooRequester:0000000000000000000000000000000000000000\".\n uint256 private constant MAX_ADDED_ANCILLARY_DATA = 53;\n uint256 public constant OO_ANCILLARY_DATA_LIMIT = ancillaryBytesLimit - MAX_ADDED_ANCILLARY_DATA;\n int256 public constant TOO_EARLY_RESPONSE = type(int256).min;\n\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /**\n * @notice Initializer (external).\n * @dev Used only for standalone deployments of the OptimisticOracleV2Upgradeable contract.\n * @param _liveness default liveness applied to each price request.\n * @param _finderAddress finder to use to get addresses of DVM contracts.\n */\n function initialize(uint256 _liveness, address _finderAddress, address upgradeAdmin) external initializer {\n __OptimisticOracleV2_init(_liveness, _finderAddress, upgradeAdmin);\n }\n\n /**\n * @notice Initializer (internal, main entry point).\n * @param _liveness default liveness applied to each price request.\n * @param _finderAddress finder to use to get addresses of DVM contracts.\n */\n function __OptimisticOracleV2_init(uint256 _liveness, address _finderAddress, address upgradeAdmin)\n internal\n onlyInitializing\n {\n __UUPSUpgradeable_init();\n __AccessControlDefaultAdminRules_init(3 days, upgradeAdmin); // Initialize `DEFAULT_ADMIN_ROLE`, and by extension, `UPGRADE_ADMIN_ROLE`\n __LockableUpgradeable_init();\n __OptimisticOracleV2_init_unchained(_liveness, _finderAddress);\n }\n\n /**\n * @notice Initializer (internal, unchained).\n * @param _liveness default liveness applied to each price request.\n * @param _finderAddress finder to use to get addresses of DVM contracts.\n */\n function __OptimisticOracleV2_init_unchained(uint256 _liveness, address _finderAddress) internal onlyInitializing {\n finder = FinderInterface(_finderAddress);\n _validateLiveness(_liveness);\n defaultLiveness = _liveness;\n }\n\n /**\n * @dev Throws if called by any account other than the upgrade admin.\n */\n modifier onlyUpgradeAdmin() {\n _checkRole(UPGRADE_ADMIN_ROLE);\n _;\n }\n\n /**\n * @notice Authorizes the upgrade of the contract.\n * @dev This is required for UUPSUpgradeable. Only the upgrade admin can authorize upgrades.\n * @param newImplementation address of the new implementation to upgrade to.\n */\n function _authorizeUpgrade(address newImplementation) internal override onlyUpgradeAdmin {}\n\n /**\n * @notice Requests a new price.\n * @param identifier price identifier being requested.\n * @param timestamp timestamp of the price being requested.\n * @param ancillaryData ancillary data representing additional args being passed with the price request.\n * @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n * @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n * which could make sense if the contract requests and proposes the value in the same call or\n * provides its own reward system.\n * @return totalBond default bond (final fee) + final fee that the proposer and disputer will be required to pay.\n * This can be changed with a subsequent call to setBond().\n */\n function requestPrice(\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n IERC20 currency,\n uint256 reward\n ) public virtual override nonReentrant returns (uint256 totalBond) {\n require(_getState(msg.sender, identifier, timestamp, ancillaryData) == State.Invalid, RequestStateNotInvalid());\n require(_getIdentifierWhitelist().isIdentifierSupported(identifier), UnsupportedIdentifier());\n require(_getCollateralWhitelist().isOnWhitelist(address(currency)), UnsupportedCurrency());\n require(timestamp <= getCurrentTime(), TimestampInFuture());\n\n // This ensures that the ancillary data is <= the OO limit, which is lower than the DVM limit because the\n // OO adds some data before sending to the DVM.\n require(ancillaryData.length <= OO_ANCILLARY_DATA_LIMIT, AncillaryDataTooLong());\n\n uint256 finalFee = _getStore().computeFinalFee(address(currency)).rawValue;\n requests[_getId(msg.sender, identifier, timestamp, ancillaryData)] = Request({\n proposer: address(0),\n disputer: address(0),\n currency: currency,\n settled: false,\n requestSettings: RequestSettings({\n eventBased: false,\n refundOnDispute: false,\n callbackOnPriceProposed: false,\n callbackOnPriceDisputed: false,\n callbackOnPriceSettled: false,\n bond: finalFee,\n customLiveness: 0\n }),\n proposedPrice: 0,\n resolvedPrice: 0,\n expirationTime: 0,\n reward: reward,\n finalFee: finalFee\n });\n\n if (reward > 0) {\n currency.safeTransferFrom(msg.sender, address(this), reward);\n }\n\n emit RequestPrice(msg.sender, identifier, timestamp, ancillaryData, address(currency), reward, finalFee);\n\n // This function returns the initial proposal bond for this request, which can be customized by calling\n // setBond() with the same identifier and timestamp.\n return finalFee * 2;\n }\n\n /**\n * @notice Set the proposal bond associated with a price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param bond custom bond amount to set.\n * @return totalBond new bond + final fee that the proposer and disputer will be required to pay. This can be\n * changed again with a subsequent call to setBond().\n */\n function setBond(bytes32 identifier, uint256 timestamp, bytes memory ancillaryData, uint256 bond)\n external\n override\n nonReentrant\n returns (uint256 totalBond)\n {\n require(\n _getState(msg.sender, identifier, timestamp, ancillaryData) == State.Requested, RequestStateNotRequested()\n );\n Request storage request = _getRequest(msg.sender, identifier, timestamp, ancillaryData);\n request.requestSettings.bond = bond;\n\n // Total bond is the final fee + the newly set bond.\n return bond + request.finalFee;\n }\n\n /**\n * @notice Sets the request to refund the reward if the proposal is disputed. This can help to \"hedge\" the caller\n * in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's\n * bond, so there is still profit to be made even if the reward is refunded.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n */\n function setRefundOnDispute(bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n external\n override\n nonReentrant\n {\n require(\n _getState(msg.sender, identifier, timestamp, ancillaryData) == State.Requested, RequestStateNotRequested()\n );\n _getRequest(msg.sender, identifier, timestamp, ancillaryData).requestSettings.refundOnDispute = true;\n }\n\n /**\n * @notice Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before\n * being auto-resolved.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param customLiveness new custom liveness.\n */\n function setCustomLiveness(\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n uint256 customLiveness\n ) external override nonReentrant {\n require(\n _getState(msg.sender, identifier, timestamp, ancillaryData) == State.Requested, RequestStateNotRequested()\n );\n _validateLiveness(customLiveness);\n _getRequest(msg.sender, identifier, timestamp, ancillaryData).requestSettings.customLiveness = customLiveness;\n }\n\n /**\n * @notice Sets the request to be an \"event-based\" request.\n * @dev Calling this method has a few impacts on the request:\n *\n * 1. The timestamp at which the request is evaluated is the time of the proposal, not the timestamp associated\n * with the request.\n *\n * 2. The proposer cannot propose the \"too early\" value (TOO_EARLY_RESPONSE). This is to ensure that a proposer who\n * prematurely proposes a response loses their bond.\n *\n * 3. RefundoOnDispute is automatically set, meaning disputes trigger the reward to be automatically refunded to\n * the requesting contract.\n *\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n */\n function setEventBased(bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n external\n override\n nonReentrant\n {\n require(\n _getState(msg.sender, identifier, timestamp, ancillaryData) == State.Requested, RequestStateNotRequested()\n );\n Request storage request = _getRequest(msg.sender, identifier, timestamp, ancillaryData);\n request.requestSettings.eventBased = true;\n request.requestSettings.refundOnDispute = true;\n }\n\n /**\n * @notice Sets which callbacks should be enabled for the request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param callbackOnPriceProposed whether to enable the callback onPriceProposed.\n * @param callbackOnPriceDisputed whether to enable the callback onPriceDisputed.\n * @param callbackOnPriceSettled whether to enable the callback onPriceSettled.\n */\n function setCallbacks(\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n bool callbackOnPriceProposed,\n bool callbackOnPriceDisputed,\n bool callbackOnPriceSettled\n ) external override nonReentrant {\n require(\n _getState(msg.sender, identifier, timestamp, ancillaryData) == State.Requested, RequestStateNotRequested()\n );\n Request storage request = _getRequest(msg.sender, identifier, timestamp, ancillaryData);\n request.requestSettings.callbackOnPriceProposed = callbackOnPriceProposed;\n request.requestSettings.callbackOnPriceDisputed = callbackOnPriceDisputed;\n request.requestSettings.callbackOnPriceSettled = callbackOnPriceSettled;\n }\n\n /**\n * @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\n * from this proposal. However, any bonds are pulled from the caller.\n * @param proposer address to set as the proposer.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param proposedPrice price being proposed.\n * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n * the proposer once settled if the proposal is correct.\n */\n function proposePriceFor(\n address proposer,\n address requester,\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n int256 proposedPrice\n ) public virtual override nonReentrant returns (uint256 totalBond) {\n require(proposer != address(0), ProposerAddressCannotBeZero());\n require(\n _getState(requester, identifier, timestamp, ancillaryData) == State.Requested, RequestStateNotRequested()\n );\n Request storage request = _getRequest(requester, identifier, timestamp, ancillaryData);\n if (request.requestSettings.eventBased) {\n require(proposedPrice != TOO_EARLY_RESPONSE, CannotProposeTooEarly());\n }\n request.proposer = proposer;\n request.proposedPrice = proposedPrice;\n\n // If a custom liveness has been set, use it instead of the default.\n request.expirationTime = getCurrentTime()\n + (request.requestSettings.customLiveness != 0 ? request.requestSettings.customLiveness : defaultLiveness);\n\n totalBond = request.requestSettings.bond + request.finalFee;\n if (totalBond > 0) request.currency.safeTransferFrom(msg.sender, address(this), totalBond);\n\n emit ProposePrice(\n requester,\n proposer,\n identifier,\n timestamp,\n ancillaryData,\n proposedPrice,\n request.expirationTime,\n address(request.currency)\n );\n\n // End the re-entrancy guard early to allow the caller to potentially take OO-related actions inside this callback.\n _startReentrantGuardDisabled();\n // Callback.\n if (address(requester).isContract() && request.requestSettings.callbackOnPriceProposed) {\n OptimisticRequester(requester).priceProposed(identifier, timestamp, ancillaryData);\n }\n _endReentrantGuardDisabled();\n }\n\n /**\n * @notice Proposes a price value for an existing price request.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param proposedPrice price being proposed.\n * @return totalBond the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to\n * the proposer once settled if the proposal is correct.\n */\n function proposePrice(\n address requester,\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n int256 proposedPrice\n ) external override returns (uint256 totalBond) {\n // Note: re-entrancy guard is done in the inner call.\n return proposePriceFor(msg.sender, requester, identifier, timestamp, ancillaryData, proposedPrice);\n }\n\n /**\n * @notice Disputes a price request with an active proposal on another address' behalf. Note: this address will\n * receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\n * @param disputer address to set as the disputer.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n * the disputer once settled if the dispute was valid (the proposal was incorrect).\n */\n function disputePriceFor(\n address disputer,\n address requester,\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData\n ) public override nonReentrant returns (uint256 totalBond) {\n require(disputer != address(0), DisputerAddressCannotBeZero());\n require(_getState(requester, identifier, timestamp, ancillaryData) == State.Proposed, RequestStateNotProposed());\n Request storage request = _getRequest(requester, identifier, timestamp, ancillaryData);\n request.disputer = disputer;\n\n uint256 finalFee = request.finalFee;\n uint256 bond = request.requestSettings.bond;\n totalBond = bond + finalFee;\n if (totalBond > 0) {\n request.currency.safeTransferFrom(msg.sender, address(this), totalBond);\n }\n\n StoreInterface store = _getStore();\n\n // Along with the final fee, \"burn\" part of the loser's bond to ensure that a larger bond always makes it\n // proportionally more expensive to delay the resolution even if the proposer and disputer are the same\n // party.\n\n // The total fee is the burned bond and the final fee added together.\n uint256 totalFee = finalFee + _computeBurnedBond(request);\n if (totalFee > 0) {\n request.currency.safeIncreaseAllowance(address(store), totalFee);\n _getStore().payOracleFeesErc20(address(request.currency), FixedPointInterface.Unsigned(totalFee));\n }\n\n _getOracle().requestPrice(\n identifier, _getTimestampForDvmRequest(request, timestamp), _stampAncillaryData(ancillaryData, requester)\n );\n\n // Compute refund.\n uint256 refund = 0;\n if (request.reward > 0 && request.requestSettings.refundOnDispute) {\n refund = request.reward;\n request.reward = 0;\n request.currency.safeTransfer(requester, refund);\n }\n\n emit DisputePrice(\n requester, request.proposer, disputer, identifier, timestamp, ancillaryData, request.proposedPrice\n );\n\n // End the re-entrancy guard early to allow the caller to potentially re-request inside this callback.\n _startReentrantGuardDisabled();\n // Callback.\n if (address(requester).isContract() && request.requestSettings.callbackOnPriceDisputed) {\n OptimisticRequester(requester).priceDisputed(identifier, timestamp, ancillaryData, refund);\n }\n _endReentrantGuardDisabled();\n }\n\n /**\n * @notice Disputes a price value for an existing price request with an active proposal.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return totalBond the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to\n * the disputer once settled if the dispute was valid (the proposal was incorrect).\n */\n function disputePrice(address requester, bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n external\n override\n returns (uint256 totalBond)\n {\n // Note: re-entrancy guard is done in the inner call.\n return disputePriceFor(msg.sender, requester, identifier, timestamp, ancillaryData);\n }\n\n /**\n * @notice Retrieves a price that was previously requested by a caller. Reverts if the request is not settled\n * or settleable. Note: this method is not view so that this call may actually settle the price request if it\n * hasn't been settled.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return resolved price.\n */\n function settleAndGetPrice(bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n external\n override\n nonReentrant\n returns (int256)\n {\n if (_getState(msg.sender, identifier, timestamp, ancillaryData) != State.Settled) {\n _settle(msg.sender, identifier, timestamp, ancillaryData);\n }\n\n return _getRequest(msg.sender, identifier, timestamp, ancillaryData).resolvedPrice;\n }\n\n /**\n * @notice Attempts to settle an outstanding price request. Will revert if it isn't settleable.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return payout the amount that the \"winner\" (proposer or disputer) receives on settlement. This amount includes\n * the returned bonds as well as additional rewards.\n */\n function settle(address requester, bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n external\n override\n nonReentrant\n returns (uint256 payout)\n {\n return _settle(requester, identifier, timestamp, ancillaryData);\n }\n\n /**\n * @notice Gets the current data structure containing all information about a price request.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return the Request data structure.\n */\n function getRequest(address requester, bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n public\n view\n override\n nonReentrantView\n returns (Request memory)\n {\n return _getRequest(requester, identifier, timestamp, ancillaryData);\n }\n\n /**\n * @notice Computes the current state of a price request. See the State enum for more details.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return the State.\n */\n function getState(address requester, bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n public\n view\n override\n nonReentrantView\n returns (State)\n {\n return _getState(requester, identifier, timestamp, ancillaryData);\n }\n\n /**\n * @notice Checks if a given request has resolved, expired or been settled (i.e the optimistic oracle has a price).\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return boolean indicating true if price exists and false if not.\n */\n function hasPrice(address requester, bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n public\n view\n override\n nonReentrantView\n returns (bool)\n {\n State state = _getState(requester, identifier, timestamp, ancillaryData);\n return state == State.Settled || state == State.Resolved || state == State.Expired;\n }\n\n /**\n * @notice Generates stamped ancillary data in the format that it would be used in the case of a price dispute.\n * @param ancillaryData ancillary data of the price being requested.\n * @param requester sender of the initial price request.\n * @return the stamped ancillary bytes.\n */\n function stampAncillaryData(bytes memory ancillaryData, address requester)\n public\n pure\n override\n returns (bytes memory)\n {\n return _stampAncillaryData(ancillaryData, requester);\n }\n\n function _getId(address requester, bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n internal\n pure\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(requester, identifier, timestamp, ancillaryData));\n }\n\n function _settle(address requester, bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n private\n returns (uint256 payout)\n {\n State state = _getState(requester, identifier, timestamp, ancillaryData);\n\n // Set it to settled so this function can never be entered again.\n Request storage request = _getRequest(requester, identifier, timestamp, ancillaryData);\n request.settled = true;\n\n if (state == State.Expired) {\n // In the expiry case, just pay back the proposer's bond and final fee along with the reward.\n request.resolvedPrice = request.proposedPrice;\n payout = request.requestSettings.bond + request.finalFee + request.reward;\n request.currency.safeTransfer(request.proposer, payout);\n } else if (state == State.Resolved) {\n // In the Resolved case, pay either the disputer or the proposer the entire payout (+ bond and reward).\n request.resolvedPrice = _getOracle().getPrice(\n identifier,\n _getTimestampForDvmRequest(request, timestamp),\n _stampAncillaryData(ancillaryData, requester)\n );\n bool disputeSuccess = request.resolvedPrice != request.proposedPrice;\n uint256 bond = request.requestSettings.bond;\n\n // Unburned portion of the loser's bond = 1 - burned bond.\n uint256 unburnedBond = bond - _computeBurnedBond(request);\n\n // Winner gets:\n // - Their bond back.\n // - The unburned portion of the loser's bond.\n // - Their final fee back.\n // - The request reward (if not already refunded -- if refunded, it will be set to 0).\n payout = bond + unburnedBond + request.finalFee + request.reward;\n request.currency.safeTransfer(disputeSuccess ? request.disputer : request.proposer, payout);\n } else {\n revert RequestNotSettleable();\n }\n\n emit Settle(\n requester,\n request.proposer,\n request.disputer,\n identifier,\n timestamp,\n ancillaryData,\n request.resolvedPrice,\n payout\n );\n\n // Temporarily disable the re-entrancy guard early to allow the caller to take an OO-related action inside this callback.\n _startReentrantGuardDisabled();\n // Callback.\n if (address(requester).isContract() && request.requestSettings.callbackOnPriceSettled) {\n OptimisticRequester(requester).priceSettled(identifier, timestamp, ancillaryData, request.resolvedPrice);\n }\n _endReentrantGuardDisabled();\n }\n\n function _getRequest(address requester, bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n internal\n view\n returns (Request storage)\n {\n return requests[_getId(requester, identifier, timestamp, ancillaryData)];\n }\n\n function _computeBurnedBond(Request storage request) private view returns (uint256) {\n // burnedBond = floor(bond / 2)\n return request.requestSettings.bond / 2;\n }\n\n function _validateLiveness(uint256 _liveness) internal view virtual {\n require(_liveness < 5200 weeks, LivenessTooLarge());\n require(_liveness > 0, LivenessCannotBeZero());\n }\n\n function _getState(address requester, bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n internal\n view\n returns (State)\n {\n Request storage request = _getRequest(requester, identifier, timestamp, ancillaryData);\n\n if (address(request.currency) == address(0)) return State.Invalid;\n\n if (request.proposer == address(0)) return State.Requested;\n\n if (request.settled) return State.Settled;\n\n if (request.disputer == address(0)) {\n return request.expirationTime <= getCurrentTime() ? State.Expired : State.Proposed;\n }\n\n return _getOracle().hasPrice(\n identifier, _getTimestampForDvmRequest(request, timestamp), _stampAncillaryData(ancillaryData, requester)\n ) ? State.Resolved : State.Disputed;\n }\n\n function _getOracle() internal view returns (OracleAncillaryInterface) {\n return OracleAncillaryInterface(finder.getImplementationAddress(OracleInterfaces.Oracle));\n }\n\n function _getCollateralWhitelist() internal view returns (AddressWhitelist) {\n return AddressWhitelist(finder.getImplementationAddress(OracleInterfaces.CollateralWhitelist));\n }\n\n function _getStore() internal view returns (StoreInterface) {\n return StoreInterface(finder.getImplementationAddress(OracleInterfaces.Store));\n }\n\n function _getIdentifierWhitelist() internal view returns (IdentifierWhitelistInterface) {\n return IdentifierWhitelistInterface(finder.getImplementationAddress(OracleInterfaces.IdentifierWhitelist));\n }\n\n function _getTimestampForDvmRequest(Request storage request, uint256 requestTimestamp)\n internal\n view\n returns (uint256)\n {\n if (request.requestSettings.eventBased) {\n uint256 liveness =\n request.requestSettings.customLiveness != 0 ? request.requestSettings.customLiveness : defaultLiveness;\n return request.expirationTime - liveness;\n } else {\n return requestTimestamp;\n }\n }\n\n /**\n * @dev We don't handle specifically the case where `ancillaryData` is not already readily translateable in utf8.\n * For those cases, we assume that the client will be able to strip out the utf8-translateable part of the\n * ancillary data that this contract stamps.\n */\n function _stampAncillaryData(bytes memory ancillaryData, address requester) internal pure returns (bytes memory) {\n // Since this contract will be the one to formally submit DVM price requests, its useful for voters to know who\n // the original requester was.\n return AncillaryData.appendKeyValueAddress(ancillaryData, \"ooRequester\", requester);\n }\n\n function getCurrentTime() public view override returns (uint256) {\n return block.timestamp;\n }\n\n /**\n * @dev Reserve storage slots for future versions of this base contract to add state variables without affecting the\n * storage layout of child contracts. Decrement the size of __gap whenever state variables are added. This is at the\n * bottom of contract to make sure its always at the end of storage.\n * See https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable#storage-gaps\n */\n uint256[998] private __gap;\n}\n"},"src/optimistic-oracle-v2/interfaces/ManagedOptimisticOracleV2Interface.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.4;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\n/**\n * @title Events and Errors for the ManagedOptimisticOracleV2 contract.\n * @notice Contains events for request manager management, bond and liveness updates, and whitelists,\n * and custom errors for various conditions.\n */\nabstract contract ManagedOptimisticOracleV2Interface {\n /// @notice Thrown when a requester is not on the requester whitelist.\n error RequesterNotWhitelisted();\n /// @notice Thrown when a zero value bond is set.\n error ZeroBondNotAllowed();\n /// @notice Thrown when a bond is set lower than the minimum allowed bond.\n error BondBelowMinimumBond();\n /// @notice Thrown when a bond is set higher than the maximum allowed bond.\n error BondExceedsMaximumBond();\n /// @notice Thrown when a liveness is set lower than the minimum allowed liveness.\n error LivenessTooLow();\n /// @notice Thrown when a proposer is not on the effective proposer whitelist.\n error ProposerNotWhitelisted();\n /// @notice Thrown when the message sender is not on the effective proposer whitelist for a proposal.\n error SenderNotWhitelisted();\n /// @notice Thrown when a whitelist does not support the required interface.\n error UnsupportedWhitelistInterface();\n /// @notice Thrown when minimum bond is higher than maximum bond.\n error MinimumBondAboveMaximumBond();\n\n event RequestManagerAdded(address indexed requestManager);\n event RequestManagerRemoved(address indexed requestManager);\n event AllowedBondRangeUpdated(IERC20 indexed currency, uint256 newMinimumBond, uint256 newMaximumBond);\n event MinimumLivenessUpdated(uint256 newMinimumLiveness);\n event DefaultProposerWhitelistUpdated(address indexed newWhitelist);\n event RequesterWhitelistUpdated(address indexed newWhitelist);\n event CustomBondSet(\n bytes32 indexed managedRequestId,\n address requester,\n bytes32 indexed identifier,\n bytes ancillaryData,\n IERC20 indexed currency,\n uint256 bond\n );\n event CustomLivenessSet(\n bytes32 indexed managedRequestId,\n address indexed requester,\n bytes32 indexed identifier,\n bytes ancillaryData,\n uint256 customLiveness\n );\n event CustomProposerWhitelistSet(\n bytes32 indexed managedRequestId,\n address requester,\n bytes32 indexed identifier,\n bytes ancillaryData,\n address indexed newWhitelist\n );\n}\n"},"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0-only\n// Ported from https://github.com/UMAprotocol/protocol/blob/%40uma/core%402.62.0/packages/core/contracts/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol\n// to be compatible for use in upgradeable contracts and OpenZeppelin v5.x. This also uses custom errors, named imports\n// and linting from Foundry.\n\npragma solidity ^0.8.4;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport {FinderInterface} from \"@uma/contracts/data-verification-mechanism/interfaces/FinderInterface.sol\";\n\n/**\n * @title Financial contract facing Oracle interface.\n * @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.\n */\nabstract contract OptimisticOracleV2Interface {\n /// @notice Thrown when a request is not in the expected Invalid state.\n error RequestStateNotInvalid();\n /// @notice Thrown when a request is not in the expected Requested state.\n error RequestStateNotRequested();\n /// @notice Thrown when a request is not in the expected Proposed state.\n error RequestStateNotProposed();\n /// @notice Thrown when an identifier is not supported by the identifier whitelist.\n error UnsupportedIdentifier();\n /// @notice Thrown when a currency is not supported by the collateral whitelist.\n error UnsupportedCurrency();\n /// @notice Thrown when a timestamp is in the future.\n error TimestampInFuture();\n /// @notice Thrown when ancillary data exceeds the allowed limit.\n error AncillaryDataTooLong();\n /// @notice Thrown when a proposer address is zero.\n error ProposerAddressCannotBeZero();\n /// @notice Thrown when trying to propose the \"too early\" response for event-based requests.\n error CannotProposeTooEarly();\n /// @notice Thrown when a disputer address is zero.\n error DisputerAddressCannotBeZero();\n /// @notice Thrown when liveness period is too large.\n error LivenessTooLarge();\n /// @notice Thrown when liveness period cannot be zero.\n error LivenessCannotBeZero();\n /// @notice Thrown when trying to settle a request that is not settleable.\n error RequestNotSettleable();\n\n event RequestPrice(\n address indexed requester,\n bytes32 identifier,\n uint256 timestamp,\n bytes ancillaryData,\n address currency,\n uint256 reward,\n uint256 finalFee\n );\n event ProposePrice(\n address indexed requester,\n address indexed proposer,\n bytes32 identifier,\n uint256 timestamp,\n bytes ancillaryData,\n int256 proposedPrice,\n uint256 expirationTimestamp,\n address currency\n );\n event DisputePrice(\n address indexed requester,\n address indexed proposer,\n address indexed disputer,\n bytes32 identifier,\n uint256 timestamp,\n bytes ancillaryData,\n int256 proposedPrice\n );\n event Settle(\n address indexed requester,\n address indexed proposer,\n address indexed disputer,\n bytes32 identifier,\n uint256 timestamp,\n bytes ancillaryData,\n int256 price,\n uint256 payout\n );\n // Struct representing the state of a price request.\n\n enum State {\n Invalid, // Never requested.\n Requested, // Requested, no other actions taken.\n Proposed, // Proposed, but not expired or disputed yet.\n Expired, // Proposed, not disputed, past liveness.\n Disputed, // Disputed, but no DVM price returned yet.\n Resolved, // Disputed and DVM price is available.\n Settled // Final price has been set in the contract (can get here from Expired or Resolved).\n\n }\n\n struct RequestSettings {\n bool eventBased; // True if the request is set to be event-based.\n bool refundOnDispute; // True if the requester should be refunded their reward on dispute.\n bool callbackOnPriceProposed; // True if callbackOnPriceProposed callback is required.\n bool callbackOnPriceDisputed; // True if callbackOnPriceDisputed callback is required.\n bool callbackOnPriceSettled; // True if callbackOnPriceSettled callback is required.\n uint256 bond; // Bond that the proposer and disputer must pay on top of the final fee.\n uint256 customLiveness; // Custom liveness value set by the requester.\n }\n\n // Struct representing a price request.\n struct Request {\n address proposer; // Address of the proposer.\n address disputer; // Address of the disputer.\n IERC20 currency; // ERC20 token used to pay rewards and fees.\n bool settled; // True if the request is settled.\n RequestSettings requestSettings; // Custom settings associated with a request.\n int256 proposedPrice; // Price that the proposer submitted.\n int256 resolvedPrice; // Price resolved once the request is settled.\n uint256 expirationTime; // Time at which the request auto-settles without a dispute.\n uint256 reward; // Amount of the currency to pay to the proposer on settlement.\n uint256 finalFee; // Final fee to pay to the Store upon request to the DVM.\n }\n\n // This value must be <= the Voting contract's `ancillaryBytesLimit` value otherwise it is possible\n // that a price can be requested to this contract successfully, but cannot be disputed because the DVM refuses\n // to accept a price request made with ancillary data length over a certain size.\n uint256 public constant ancillaryBytesLimit = 8192;\n\n function defaultLiveness() external view virtual returns (uint256);\n\n function finder() external view virtual returns (FinderInterface);\n\n function getCurrentTime() external view virtual returns (uint256);\n\n // Note: this is required so that typechain generates a return value with named fields.\n mapping(bytes32 => Request) public requests;\n\n /**\n * @notice Requests a new price.\n * @param identifier price identifier being requested.\n * @param timestamp timestamp of the price being requested.\n * @param ancillaryData ancillary data representing additional args being passed with the price request.\n * @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n * @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n * which could make sense if the contract requests and proposes the value in the same call or\n * provides its own reward system.\n * @return totalBond default bond (final fee) + final fee that the proposer and disputer will be required to pay.\n * This can be changed with a subsequent call to setBond().\n */\n function requestPrice(\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n IERC20 currency,\n uint256 reward\n ) external virtual returns (uint256 totalBond);\n\n /**\n * @notice Set the proposal bond associated with a price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param bond custom bond amount to set.\n * @return totalBond new bond + final fee that the proposer and disputer will be required to pay. This can be\n * changed again with a subsequent call to setBond().\n */\n function setBond(bytes32 identifier, uint256 timestamp, bytes memory ancillaryData, uint256 bond)\n external\n virtual\n returns (uint256 totalBond);\n\n /**\n * @notice Sets the request to refund the reward if the proposal is disputed. This can help to \"hedge\" the caller\n * in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's\n * bond, so there is still profit to be made even if the reward is refunded.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n */\n function setRefundOnDispute(bytes32 identifier, uint256 timestamp, bytes memory ancillaryData) external virtual;\n\n /**\n * @notice Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before\n * being auto-resolved.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param customLiveness new custom liveness.\n */\n function setCustomLiveness(\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n uint256 customLiveness\n ) external virtual;\n\n /**\n * @notice Sets the request to be an \"event-based\" request.\n * @dev Calling this method has a few impacts on the request:\n *\n * 1. The timestamp at which the request is evaluated is the time of the proposal, not the timestamp associated\n * with the request.\n *\n * 2. The proposer cannot propose the \"too early\" value (TOO_EARLY_RESPONSE). This is to ensure that a proposer who\n * prematurely proposes a response loses their bond.\n *\n * 3. RefundoOnDispute is automatically set, meaning disputes trigger the reward to be automatically refunded to\n * the requesting contract.\n *\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n */\n function setEventBased(bytes32 identifier, uint256 timestamp, bytes memory ancillaryData) external virtual;\n\n /**\n * @notice Sets which callbacks should be enabled for the request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param callbackOnPriceProposed whether to enable the callback onPriceProposed.\n * @param callbackOnPriceDisputed whether to enable the callback onPriceDisputed.\n * @param callbackOnPriceSettled whether to enable the callback onPriceSettled.\n */\n function setCallbacks(\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n bool callbackOnPriceProposed,\n bool callbackOnPriceDisputed,\n bool callbackOnPriceSettled\n ) external virtual;\n\n /**\n * @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\n * from this proposal. However, any bonds are pulled from the caller.\n * @param proposer address to set as the proposer.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param proposedPrice price being proposed.\n * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n * the proposer once settled if the proposal is correct.\n */\n function proposePriceFor(\n address proposer,\n address requester,\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n int256 proposedPrice\n ) public virtual returns (uint256 totalBond);\n\n /**\n * @notice Proposes a price value for an existing price request.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param proposedPrice price being proposed.\n * @return totalBond the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to\n * the proposer once settled if the proposal is correct.\n */\n function proposePrice(\n address requester,\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n int256 proposedPrice\n ) external virtual returns (uint256 totalBond);\n\n /**\n * @notice Disputes a price request with an active proposal on another address' behalf. Note: this address will\n * receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\n * @param disputer address to set as the disputer.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n * the disputer once settled if the dispute was value (the proposal was incorrect).\n */\n function disputePriceFor(\n address disputer,\n address requester,\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData\n ) public virtual returns (uint256 totalBond);\n\n /**\n * @notice Disputes a price value for an existing price request with an active proposal.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return totalBond the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to\n * the disputer once settled if the dispute was valid (the proposal was incorrect).\n */\n function disputePrice(address requester, bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n external\n virtual\n returns (uint256 totalBond);\n\n /**\n * @notice Retrieves a price that was previously requested by a caller. Reverts if the request is not settled\n * or settleable. Note: this method is not view so that this call may actually settle the price request if it\n * hasn't been settled.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return resolved price.\n */\n function settleAndGetPrice(bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n external\n virtual\n returns (int256);\n\n /**\n * @notice Attempts to settle an outstanding price request. Will revert if it isn't settleable.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return payout the amount that the \"winner\" (proposer or disputer) receives on settlement. This amount includes\n * the returned bonds as well as additional rewards.\n */\n function settle(address requester, bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n external\n virtual\n returns (uint256 payout);\n\n /**\n * @notice Gets the current data structure containing all information about a price request.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return the Request data structure.\n */\n function getRequest(address requester, bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n public\n view\n virtual\n returns (Request memory);\n\n /**\n * @notice Returns the state of a price request.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return the State enum value.\n */\n function getState(address requester, bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n public\n view\n virtual\n returns (State);\n\n /**\n * @notice Checks if a given request has resolved or been settled (i.e the optimistic oracle has a price).\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return true if price has resolved or settled, false otherwise.\n */\n function hasPrice(address requester, bytes32 identifier, uint256 timestamp, bytes memory ancillaryData)\n public\n view\n virtual\n returns (bool);\n\n function stampAncillaryData(bytes memory ancillaryData, address requester)\n public\n view\n virtual\n returns (bytes memory);\n\n /**\n * @dev Reserve storage slots for future versions of this base contract to add state variables without affecting the\n * storage layout of child contracts. Decrement the size of __gap whenever state variables are added. This is at the\n * bottom of contract to make sure its always at the end of storage.\n * See https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable#storage-gaps\n */\n uint256[49] private __gap;\n}\n"}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uma/contracts/=lib/protocol/packages/core/contracts/","ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","protocol/=lib/protocol/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts-upgradeable/contracts/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/protocol/packages/core/contracts/common/implementation/AncillaryData.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/protocol/packages/core/contracts/common/implementation/Lockable.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/protocol/packages/core/contracts/data-verification-mechanism/implementation/Constants.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/FinderInterface.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/IdentifierWhitelistInterface.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/OracleAncillaryInterface.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"src/common/implementation/AddressLegacy.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"src/common/implementation/AddressWhitelist.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"src/common/implementation/DisabledAddressWhitelist.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"src/common/implementation/LockableUpgradeable.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"src/common/implementation/MultiCaller.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"src/common/interfaces/AddressWhitelistInterface.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"src/common/interfaces/FixedPointInterface.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"src/data-verification-mechanism/interfaces/StoreInterface.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"src/optimistic-oracle-v2/interfaces/ManagedOptimisticOracleV2Interface.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]},"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata","storageLayout"]}},"evmVersion":"cancun","viaIR":false,"libraries":{}},"allowPaths":["/home/reinism/repos/UMAprotocol/managed-oracle","/home/reinism/repos/UMAprotocol/managed-oracle/lib"],"basePath":"/home/reinism/repos/UMAprotocol/managed-oracle","includePaths":["/home/reinism/repos/UMAprotocol/managed-oracle"]},"output":{"contracts":{"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"IAccessControl":{"abi":[{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC-165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f"}}}},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"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. The initial owner is set to the address provided by the deployer. 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.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by 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\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","userdoc":{},"devdoc":{},"storageLayout":{"storage":[{"astId":1840,"contract":"lib/openzeppelin-contracts/contracts/access/Ownable.sol:Ownable","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}}}},"lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol":{"IAccessControlDefaultAdminRules":{"abi":[{"type":"function","name":"acceptDefaultAdminTransfer","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"beginDefaultAdminTransfer","inputs":[{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelDefaultAdminTransfer","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"changeDefaultAdminDelay","inputs":[{"name":"newDelay","type":"uint48","internalType":"uint48"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"defaultAdmin","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"defaultAdminDelay","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"defaultAdminDelayIncreaseWait","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"pendingDefaultAdmin","inputs":[],"outputs":[{"name":"newAdmin","type":"address","internalType":"address"},{"name":"acceptSchedule","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"pendingDefaultAdminDelay","inputs":[],"outputs":[{"name":"newDelay","type":"uint48","internalType":"uint48"},{"name":"effectSchedule","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollbackDefaultAdminDelay","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefaultAdminDelayChangeCanceled","inputs":[],"anonymous":false},{"type":"event","name":"DefaultAdminDelayChangeScheduled","inputs":[{"name":"newDelay","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"effectSchedule","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"DefaultAdminTransferCanceled","inputs":[],"anonymous":false},{"type":"event","name":"DefaultAdminTransferScheduled","inputs":[{"name":"newAdmin","type":"address","indexed":true,"internalType":"address"},{"name":"acceptSchedule","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlEnforcedDefaultAdminDelay","inputs":[{"name":"schedule","type":"uint48","internalType":"uint48"}]},{"type":"error","name":"AccessControlEnforcedDefaultAdminRules","inputs":[]},{"type":"error","name":"AccessControlInvalidDefaultAdmin","inputs":[{"name":"defaultAdmin","type":"address","internalType":"address"}]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"name\":\"AccessControlEnforcedDefaultAdminDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessControlEnforcedDefaultAdminRules\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"defaultAdmin\",\"type\":\"address\"}],\"name\":\"AccessControlInvalidDefaultAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminDelayChangeCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"effectSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminDelayChangeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminTransferCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"acceptSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminTransferScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"beginDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"}],\"name\":\"changeDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelayIncreaseWait\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"acceptSchedule\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"effectSchedule\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollbackDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControlDefaultAdminRules declared to support ERC-165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlEnforcedDefaultAdminDelay(uint48)\":[{\"details\":\"The delay for transferring the default admin delay is enforced and the operation must wait until `schedule`. NOTE: `schedule` can be 0 indicating there's no transfer scheduled.\"}],\"AccessControlEnforcedDefaultAdminRules()\":[{\"details\":\"At least one of the following rules was violated: - The `DEFAULT_ADMIN_ROLE` must only be managed by itself. - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time. - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps.\"}],\"AccessControlInvalidDefaultAdmin(address)\":[{\"details\":\"The new default admin is not a valid default admin.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"DefaultAdminDelayChangeCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass.\"},\"DefaultAdminDelayChangeScheduled(uint48,uint48)\":{\"details\":\"Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next delay to be applied between default admin transfer after `effectSchedule` has passed.\"},\"DefaultAdminTransferCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule.\"},\"DefaultAdminTransferScheduled(address,uint48)\":{\"details\":\"Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule` passes.\"},\"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 to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"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\":{\"acceptDefaultAdminTransfer()\":{\"details\":\"Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. After calling the function: - `DEFAULT_ADMIN_ROLE` should be granted to the caller. - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder. - {pendingDefaultAdmin} should be reset to zero values. Requirements: - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`. - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed.\"},\"beginDefaultAdminTransfer(address)\":{\"details\":\"Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance after the current timestamp plus a {defaultAdminDelay}. Requirements: - Only can be called by the current {defaultAdmin}. Emits a DefaultAdminRoleChangeStarted event.\"},\"cancelDefaultAdminTransfer()\":{\"details\":\"Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function. Requirements: - Only can be called by the current {defaultAdmin}. May emit a DefaultAdminTransferCanceled event.\"},\"changeDefaultAdminDelay(uint48)\":{\"details\":\"Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting into effect after the current timestamp plus a {defaultAdminDelay}. This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay} set before calling. The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin} complete transfer (including acceptance). The schedule is designed for two scenarios: - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by {defaultAdminDelayIncreaseWait}. - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`. A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change. Requirements: - Only can be called by the current {defaultAdmin}. Emits a DefaultAdminDelayChangeScheduled event and may emit a DefaultAdminDelayChangeCanceled event.\"},\"defaultAdmin()\":{\"details\":\"Returns the address of the current `DEFAULT_ADMIN_ROLE` holder.\"},\"defaultAdminDelay()\":{\"details\":\"Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started. This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set the acceptance schedule. NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this function returns the new delay. See {changeDefaultAdminDelay}.\"},\"defaultAdminDelayIncreaseWait()\":{\"details\":\"Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay}) to take effect. Default to 5 days. When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds) that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can be overrode for a custom {defaultAdminDelay} increase scheduling. IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise, there's a risk of setting a high new delay that goes into effect almost immediately without the possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds).\"},\"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`.\"},\"pendingDefaultAdmin()\":{\"details\":\"Returns a tuple of a `newAdmin` and an accept schedule. After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role by calling {acceptDefaultAdminTransfer}, completing the role transfer. A zero value only in `acceptSchedule` indicates no pending admin transfer. NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced.\"},\"pendingDefaultAdminDelay()\":{\"details\":\"Returns a tuple of `newDelay` and an effect schedule. After the `schedule` passes, the `newDelay` will get into effect immediately for every new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}. A zero value only in `effectSchedule` indicates no pending delay change. NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay} will be zero after the effect schedule.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"rollbackDefaultAdminDelay()\":{\"details\":\"Cancels a scheduled {defaultAdminDelay} change. Requirements: - Only can be called by the current {defaultAdmin}. May emit a DefaultAdminDelayChangeCanceled event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol\":\"IAccessControlDefaultAdminRules\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol\":{\"keccak256\":\"0x956d6404c7b61b920a9ccbc9918f94a2bd3004de3dd13310995eda5bc17f1ead\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c12dc67a285548d455683db60f1ed845c03ac3c27f8f24f905defd3c54601406\",\"dweb:/ipfs/QmXDaxKsnq6RxH44VPSqxjLyygdXn3GR1o6W9pr2iXzjZq\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptDefaultAdminTransfer()":"cefc1429","beginDefaultAdminTransfer(address)":"634e93da","cancelDefaultAdminTransfer()":"d602b9fd","changeDefaultAdminDelay(uint48)":"649a5ec7","defaultAdmin()":"84ef8ffc","defaultAdminDelay()":"cc8463c8","defaultAdminDelayIncreaseWait()":"022d63fb","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","pendingDefaultAdmin()":"cf6eefb7","pendingDefaultAdminDelay()":"a1eda53c","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rollbackDefaultAdminDelay()":"0aa6220b"}}}},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"IERC1363":{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"approveAndCall","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"approveAndCall","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferAndCall","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferAndCall","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFromAndCall","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFromAndCall","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"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\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363]. Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"approveAndCall(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"approveAndCall(address,uint256,bytes)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `spender`.\",\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferAndCall(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferAndCall(address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFromAndCall(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFromAndCall(address,address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}}},\"title\":\"IERC1363\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":\"IERC1363\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","approveAndCall(address,uint256)":"3177029f","approveAndCall(address,uint256,bytes)":"cae9ca51","balanceOf(address)":"70a08231","supportsInterface(bytes4)":"01ffc9a7","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferAndCall(address,uint256)":"1296ee62","transferAndCall(address,uint256,bytes)":"4000aea0","transferFrom(address,address,uint256)":"23b872dd","transferFromAndCall(address,address,uint256)":"d8fbe994","transferFromAndCall(address,address,uint256,bytes)":"c1d34b89"}}}},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"IERC1967":{"abi":[{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":\"IERC1967\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol":{"IERC5313":{"abi":[{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the Light Contract Ownership Standard. A standardized minimal interface required to identify an account that controls a contract\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Gets the address of the owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol\":\"IERC5313\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol\":{\"keccak256\":\"0x21529ba6918f994ec44fb97cef2b717d730268e911a4e626f3e425a4394f7bae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10949be539eb61e5ea8996cc93f21be61949c16a1b717adc2b3f8f099c1e1feb\",\"dweb:/ipfs/QmagATozhFXBUVTLaiHWyqVPgew9N1x18V6hBF46AZPeLw\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"owner()":"8da5cb5b"}}}},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"IERC1822Proxiable":{"abi":[{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC-1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"proxiableUUID()":"52d1902d"}}}},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ERC1967Utils":{"abi":[{"type":"error","name":"ERC1967InvalidAdmin","inputs":[{"name":"admin","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidBeacon","inputs":[{"name":"beacon","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"This library provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\",\"errors\":{\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidBeacon(address)\":[{\"details\":\"The `beacon` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\"},\"BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\"},\"IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":\"ERC1967Utils\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122069d03177aaaa7dd09e9142fc4980e62da18e86157f471a0c7a438ad795051be964736f6c634300081e0033","sourceMap":"496:5741:15:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;496:5741:15;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122069d03177aaaa7dd09e9142fc4980e62da18e86157f471a0c7a438ad795051be964736f6c634300081e0033","sourceMap":"496:5741:15:-:0;;;;;;;;","linkReferences":{}}}}},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"IBeacon":{"abi":[{"type":"function","name":"implementation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {UpgradeableBeacon} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"implementation()":"5c60da1b"}}}},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}}}},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"SafeERC20":{"abi":[{"type":"error","name":"SafeERC20FailedDecreaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"currentAllowance","type":"uint256","internalType":"uint256"},{"name":"requestedDecrease","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers around ERC-20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"errors\":{\"SafeERC20FailedDecreaseAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failed `decreaseAllowance` request.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508\",\"dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212208cca9458fa405edc94b7a70fd84a68927cb9ad89f585150d478fb83a3468ea7064736f6c634300081e0033","sourceMap":"698:9376:18:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;698:9376:18;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212208cca9458fa405edc94b7a70fd84a68927cb9ad89f585150d478fb83a3468ea7064736f6c634300081e0033","sourceMap":"698:9376:18:-:0;;;;;;;;","linkReferences":{}}}}},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"Address":{"abi":[{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212208a5718009ef6c60f25a3f59195badc91da30b98c2c80134706963e053d7d574d64736f6c634300081e0033","sourceMap":"233:5762:19:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;233:5762:19;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212208a5718009ef6c60f25a3f59195badc91da30b98c2c80134706963e053d7d574d64736f6c634300081e0033","sourceMap":"233:5762:19:-:0;;;;;;;;","linkReferences":{}}}}},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"Context":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"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\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"Errors":{"abi":[{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"FailedDeployment","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MissingPrecompile","inputs":[{"name":"","type":"address","internalType":"address"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"MissingPrecompile\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of common custom errors used in multiple contracts IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. It is recommended to avoid relying on the error API for critical functionality. _Available since v5.1._\",\"errors\":{\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"MissingPrecompile(address)\":[{\"details\":\"A necessary precompile is missing.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":\"Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122060b462e8d0022eaee006f2f8cc0ef77423770546fcd3e8d01b71fb11020d9ecc64736f6c634300081e0033","sourceMap":"411:484:21:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;411:484:21;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122060b462e8d0022eaee006f2f8cc0ef77423770546fcd3e8d01b71fb11020d9ecc64736f6c634300081e0033","sourceMap":"411:484:21:-:0;;;;;;;;","linkReferences":{}}}}},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"Panic":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Helper library for emitting standardized panic codes. ```solidity contract Example { using Panic for uint256; // Use any of the declared internal constants function foo() { Panic.GENERIC.panic(); } // Alternatively function foo() { Panic.panic(Panic.GENERIC); } } ``` Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ARRAY_OUT_OF_BOUNDS\":{\"details\":\"array out of bounds access\"},\"ASSERT\":{\"details\":\"used by the assert() builtin\"},\"DIVISION_BY_ZERO\":{\"details\":\"division or modulo by zero\"},\"EMPTY_ARRAY_POP\":{\"details\":\"empty array pop\"},\"ENUM_CONVERSION_ERROR\":{\"details\":\"enum conversion error\"},\"GENERIC\":{\"details\":\"generic / unspecified error\"},\"INVALID_INTERNAL_FUNCTION\":{\"details\":\"calling invalid internal function\"},\"RESOURCE_ERROR\":{\"details\":\"resource error (too large allocation or too large array)\"},\"STORAGE_ENCODING_ERROR\":{\"details\":\"invalid encoding in storage\"},\"UNDER_OVERFLOW\":{\"details\":\"arithmetic underflow or overflow\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":\"Panic\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122054862008eeaaedae505b9c44d2103d8da8fd38b79f33966a4f69eaa6a491e09964736f6c634300081e0033","sourceMap":"657:1315:22:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;657:1315:22;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122054862008eeaaedae505b9c44d2103d8da8fd38b79f33966a4f69eaa6a491e09964736f6c634300081e0033","sourceMap":"657:1315:22:-:0;;;;;;;;","linkReferences":{}}}}},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 { // Define the slot. Alternatively, use the SlotDerivation library to derive the slot. bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122029bf76c094ffbf7032ed9c2966d6033d8e129a86310764ed8dedae2deb79c1e564736f6c634300081e0033","sourceMap":"1407:2774:23:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1407:2774:23;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122029bf76c094ffbf7032ed9c2966d6033d8e129a86310764ed8dedae2deb79c1e564736f6c634300081e0033","sourceMap":"1407:2774:23:-:0;;;;;;;;","linkReferences":{}}}}},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"ERC165":{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}}}},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"ERC165Checker":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library used to query support of an interface declared via {IERC165}. Note that these functions return the actual result of the query: they do not `revert` if an interface is not supported. It is up to the caller to decide what to do in these cases.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":\"ERC165Checker\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x27c3c648062924bd44cd6f38541c78e6de145dd49515ee62321e42fc1b72e5c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1cce2ebc0392b5a96f5c7bbaaf5c3d23c0e7190e64cfa05a49978badc1496141\",\"dweb:/ipfs/QmYQC1U12igR1osVyjRHaHiiTgYYuPjncAxwmjbZ452dCL\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220542912cc1d78f709826cad2f58538a316dcadbadba5b18642585d054afae760064736f6c634300081e0033","sourceMap":"465:4588:25:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;465:4588:25;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220542912cc1d78f709826cad2f58538a316dcadbadba5b18642585d054afae760064736f6c634300081e0033","sourceMap":"465:4588:25:-:0;;;;;;;;","linkReferences":{}}}}},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}}}},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"Math":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212204743f61b2d68479d12834d6434217c0a690686d7095ee010573f6831b39c8e5f64736f6c634300081e0033","sourceMap":"281:31863:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;281:31863:27;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212204743f61b2d68479d12834d6434217c0a690686d7095ee010573f6831b39c8e5f64736f6c634300081e0033","sourceMap":"281:31863:27:-:0;;;;;;;;","linkReferences":{}}}}},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"SafeCast":{"abi":[{"type":"error","name":"SafeCastOverflowedIntDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"int256","internalType":"int256"}]},{"type":"error","name":"SafeCastOverflowedIntToUint","inputs":[{"name":"value","type":"int256","internalType":"int256"}]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeCastOverflowedUintToInt","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"errors\":{\"SafeCastOverflowedIntDowncast(uint8,int256)\":[{\"details\":\"Value doesn't fit in an int of `bits` size.\"}],\"SafeCastOverflowedIntToUint(int256)\":[{\"details\":\"An int value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220ea7058e86a5f52825ea0b7728b5ee8f49f5bdc252432d3d624c9de14a461ff7864736f6c634300081e0033","sourceMap":"769:34173:28:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;769:34173:28;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220ea7058e86a5f52825ea0b7728b5ee8f49f5bdc252432d3d624c9de14a461ff7864736f6c634300081e0033","sourceMap":"769:34173:28:-:0;;;;;;;;","linkReferences":{}}}}},"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"AccessControlUpgradeable":{"abi":[{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":\"AccessControlUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x85a70e2b1b65e9ba456add364d22b97eb9944083df1c39c0b4bd6a4b5aa386a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d32a33be6ca4d8e89b9e82e3f9cec7a6c4e040534152313ff55da85b8f193059\",\"dweb:/ipfs/QmeR55L8t2A8xZ1nvT5y4yVWfFbbmpaGAtGBMz3GGNpuyP\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x6694b63ddb2c59bbe341c846171798350e8f72fa02189fcdeaca864e28b54e1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d945d33e2189ac4e531e4ed228f59ca957b3898c4f9051f4b8c7ae44d72b23a\",\"dweb:/ipfs/QmRcEwubTe3xyXxthijs5fVzEgUFSxeddjd5PGfhBnkunX\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7"}}}},"lib/openzeppelin-contracts-upgradeable/contracts/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol":{"AccessControlDefaultAdminRulesUpgradeable":{"abi":[{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"acceptDefaultAdminTransfer","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"beginDefaultAdminTransfer","inputs":[{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelDefaultAdminTransfer","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"changeDefaultAdminDelay","inputs":[{"name":"newDelay","type":"uint48","internalType":"uint48"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"defaultAdmin","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"defaultAdminDelay","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"defaultAdminDelayIncreaseWait","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingDefaultAdmin","inputs":[],"outputs":[{"name":"newAdmin","type":"address","internalType":"address"},{"name":"schedule","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"pendingDefaultAdminDelay","inputs":[],"outputs":[{"name":"newDelay","type":"uint48","internalType":"uint48"},{"name":"schedule","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollbackDefaultAdminDelay","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"DefaultAdminDelayChangeCanceled","inputs":[],"anonymous":false},{"type":"event","name":"DefaultAdminDelayChangeScheduled","inputs":[{"name":"newDelay","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"effectSchedule","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"DefaultAdminTransferCanceled","inputs":[],"anonymous":false},{"type":"event","name":"DefaultAdminTransferScheduled","inputs":[{"name":"newAdmin","type":"address","indexed":true,"internalType":"address"},{"name":"acceptSchedule","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlEnforcedDefaultAdminDelay","inputs":[{"name":"schedule","type":"uint48","internalType":"uint48"}]},{"type":"error","name":"AccessControlEnforcedDefaultAdminRules","inputs":[]},{"type":"error","name":"AccessControlInvalidDefaultAdmin","inputs":[{"name":"defaultAdmin","type":"address","internalType":"address"}]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"name\":\"AccessControlEnforcedDefaultAdminDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessControlEnforcedDefaultAdminRules\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"defaultAdmin\",\"type\":\"address\"}],\"name\":\"AccessControlInvalidDefaultAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminDelayChangeCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"effectSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminDelayChangeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminTransferCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"acceptSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminTransferScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"beginDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"}],\"name\":\"changeDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelayIncreaseWait\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"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\"},{\"inputs\":[],\"name\":\"rollbackDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of {AccessControl} that allows specifying special rules to manage the `DEFAULT_ADMIN_ROLE` holder, which is a sensitive role with special permissions over other roles that may potentially have privileged rights in the system. If a specific role doesn't have an admin role assigned, the holder of the `DEFAULT_ADMIN_ROLE` will have the ability to grant it and revoke it. This contract implements the following risk mitigations on top of {AccessControl}: * Only one account holds the `DEFAULT_ADMIN_ROLE` since deployment until it's potentially renounced. * Enforces a 2-step process to transfer the `DEFAULT_ADMIN_ROLE` to another account. * Enforces a configurable delay between the two steps, with the ability to cancel before the transfer is accepted. * The delay can be changed by scheduling, see {changeDefaultAdminDelay}. * Role transfers must wait at least one block after scheduling before it can be accepted. * It is not possible to use another role to manage the `DEFAULT_ADMIN_ROLE`. Example usage: ```solidity contract MyToken is AccessControlDefaultAdminRules { constructor() AccessControlDefaultAdminRules( 3 days, msg.sender // Explicit initial `DEFAULT_ADMIN_ROLE` holder ) {} } ```\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlEnforcedDefaultAdminDelay(uint48)\":[{\"details\":\"The delay for transferring the default admin delay is enforced and the operation must wait until `schedule`. NOTE: `schedule` can be 0 indicating there's no transfer scheduled.\"}],\"AccessControlEnforcedDefaultAdminRules()\":[{\"details\":\"At least one of the following rules was violated: - The `DEFAULT_ADMIN_ROLE` must only be managed by itself. - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time. - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps.\"}],\"AccessControlInvalidDefaultAdmin(address)\":[{\"details\":\"The new default admin is not a valid default admin.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"events\":{\"DefaultAdminDelayChangeCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass.\"},\"DefaultAdminDelayChangeScheduled(uint48,uint48)\":{\"details\":\"Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next delay to be applied between default admin transfer after `effectSchedule` has passed.\"},\"DefaultAdminTransferCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule.\"},\"DefaultAdminTransferScheduled(address,uint48)\":{\"details\":\"Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule` passes.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"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\":{\"acceptDefaultAdminTransfer()\":{\"details\":\"Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. After calling the function: - `DEFAULT_ADMIN_ROLE` should be granted to the caller. - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder. - {pendingDefaultAdmin} should be reset to zero values. Requirements: - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`. - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed.\"},\"beginDefaultAdminTransfer(address)\":{\"details\":\"Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance after the current timestamp plus a {defaultAdminDelay}. Requirements: - Only can be called by the current {defaultAdmin}. Emits a DefaultAdminRoleChangeStarted event.\"},\"cancelDefaultAdminTransfer()\":{\"details\":\"Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function. Requirements: - Only can be called by the current {defaultAdmin}. May emit a DefaultAdminTransferCanceled event.\"},\"changeDefaultAdminDelay(uint48)\":{\"details\":\"Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting into effect after the current timestamp plus a {defaultAdminDelay}. This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay} set before calling. The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin} complete transfer (including acceptance). The schedule is designed for two scenarios: - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by {defaultAdminDelayIncreaseWait}. - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`. A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change. Requirements: - Only can be called by the current {defaultAdmin}. Emits a DefaultAdminDelayChangeScheduled event and may emit a DefaultAdminDelayChangeCanceled event.\"},\"defaultAdmin()\":{\"details\":\"Returns the address of the current `DEFAULT_ADMIN_ROLE` holder.\"},\"defaultAdminDelay()\":{\"details\":\"Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started. This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set the acceptance schedule. NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this function returns the new delay. See {changeDefaultAdminDelay}.\"},\"defaultAdminDelayIncreaseWait()\":{\"details\":\"Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay}) to take effect. Default to 5 days. When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds) that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can be overrode for a custom {defaultAdminDelay} increase scheduling. IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise, there's a risk of setting a high new delay that goes into effect almost immediately without the possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds).\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"See {AccessControl-grantRole}. Reverts for `DEFAULT_ADMIN_ROLE`.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"owner()\":{\"details\":\"Gets the address of the owner.\"},\"pendingDefaultAdmin()\":{\"details\":\"Returns a tuple of a `newAdmin` and an accept schedule. After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role by calling {acceptDefaultAdminTransfer}, completing the role transfer. A zero value only in `acceptSchedule` indicates no pending admin transfer. NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced.\"},\"pendingDefaultAdminDelay()\":{\"details\":\"Returns a tuple of `newDelay` and an effect schedule. After the `schedule` passes, the `newDelay` will get into effect immediately for every new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}. A zero value only in `effectSchedule` indicates no pending delay change. NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay} will be zero after the effect schedule.\"},\"renounceRole(bytes32,address)\":{\"details\":\"See {AccessControl-renounceRole}. For the `DEFAULT_ADMIN_ROLE`, it only allows renouncing in two steps by first calling {beginDefaultAdminTransfer} to the `address(0)`, so it's required that the {pendingDefaultAdmin} schedule has also passed when calling this function. After its execution, it will not be possible to call `onlyRole(DEFAULT_ADMIN_ROLE)` functions. NOTE: Renouncing `DEFAULT_ADMIN_ROLE` will leave the contract without a {defaultAdmin}, thereby disabling any functionality that is only available for it, and the possibility of reassigning a non-administrated role.\"},\"revokeRole(bytes32,address)\":{\"details\":\"See {AccessControl-revokeRole}. Reverts for `DEFAULT_ADMIN_ROLE`.\"},\"rollbackDefaultAdminDelay()\":{\"details\":\"Cancels a scheduled {defaultAdminDelay} change. Requirements: - Only can be called by the current {defaultAdmin}. May emit a DefaultAdminDelayChangeCanceled event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol\":\"AccessControlDefaultAdminRulesUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x85a70e2b1b65e9ba456add364d22b97eb9944083df1c39c0b4bd6a4b5aa386a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d32a33be6ca4d8e89b9e82e3f9cec7a6c4e040534152313ff55da85b8f193059\",\"dweb:/ipfs/QmeR55L8t2A8xZ1nvT5y4yVWfFbbmpaGAtGBMz3GGNpuyP\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol\":{\"keccak256\":\"0x2922ed589f7063a685dffc9297f8b669c1e86f2fde9078c08d8bff079cf636a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bd42676681a1c4563f61a767bfbc50ef207544a3d6eee9aa66830cc15ccb679\",\"dweb:/ipfs/QmRMCKEXNWJq1EdCjNQtTXf9tuppnyGtaiBCiNk3TYVcK1\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x6694b63ddb2c59bbe341c846171798350e8f72fa02189fcdeaca864e28b54e1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d945d33e2189ac4e531e4ed228f59ca957b3898c4f9051f4b8c7ae44d72b23a\",\"dweb:/ipfs/QmRcEwubTe3xyXxthijs5fVzEgUFSxeddjd5PGfhBnkunX\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol\":{\"keccak256\":\"0x956d6404c7b61b920a9ccbc9918f94a2bd3004de3dd13310995eda5bc17f1ead\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c12dc67a285548d455683db60f1ed845c03ac3c27f8f24f905defd3c54601406\",\"dweb:/ipfs/QmXDaxKsnq6RxH44VPSqxjLyygdXn3GR1o6W9pr2iXzjZq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol\":{\"keccak256\":\"0x21529ba6918f994ec44fb97cef2b717d730268e911a4e626f3e425a4394f7bae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10949be539eb61e5ea8996cc93f21be61949c16a1b717adc2b3f8f099c1e1feb\",\"dweb:/ipfs/QmagATozhFXBUVTLaiHWyqVPgew9N1x18V6hBF46AZPeLw\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","acceptDefaultAdminTransfer()":"cefc1429","beginDefaultAdminTransfer(address)":"634e93da","cancelDefaultAdminTransfer()":"d602b9fd","changeDefaultAdminDelay(uint48)":"649a5ec7","defaultAdmin()":"84ef8ffc","defaultAdminDelay()":"cc8463c8","defaultAdminDelayIncreaseWait()":"022d63fb","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","owner()":"8da5cb5b","pendingDefaultAdmin()":"cf6eefb7","pendingDefaultAdminDelay()":"a1eda53c","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rollbackDefaultAdminDelay()":"0aa6220b","supportsInterface(bytes4)":"01ffc9a7"}}}},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"UUPSUpgradeable":{"abi":[{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"UPGRADE_INTERFACE_VERSION\":{\"details\":\"The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)` and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called, while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string. If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must be the empty byte string if no function should be called, making it impossible to invoke the `receive` function during an upgrade.\"},\"__self\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","proxiableUUID()":"52d1902d","upgradeToAndCall(address,bytes)":"4f1ef286"}}}},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"ERC165Upgradeable":{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":\"ERC165Upgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x6694b63ddb2c59bbe341c846171798350e8f72fa02189fcdeaca864e28b54e1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d945d33e2189ac4e531e4ed228f59ca957b3898c4f9051f4b8c7ae44d72b23a\",\"dweb:/ipfs/QmRcEwubTe3xyXxthijs5fVzEgUFSxeddjd5PGfhBnkunX\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}}}},"lib/protocol/packages/core/contracts/common/implementation/AncillaryData.sol":{"AncillaryData":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Library for encoding and decoding ancillary data for DVM price requests.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"We assume that on-chain ancillary data can be formatted directly from bytes to utf8 encoding via web3.utils.hexToUtf8, and that clients will parse the utf8-encoded ancillary data as a comma-delimitted key-value dictionary. Therefore, this library provides internal methods that aid appending to ancillary data from Solidity smart contracts. More details on UMA's ancillary data guidelines below: https://docs.google.com/document/d/1zhKKjgY1BupBGPPrY_WOJvui0B6DMcd-xDR8-9-SPDw/edit\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/protocol/packages/core/contracts/common/implementation/AncillaryData.sol\":\"AncillaryData\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/protocol/packages/core/contracts/common/implementation/AncillaryData.sol\":{\"keccak256\":\"0x8ff33ac32d3e6de25de9e0ac2c0ff9a621f187fa97e9ee84092b327471baa3ce\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0bbaed49756e8cf7ef405e132f441cd7a735ac6186a200b0179147e7d137b74a\",\"dweb:/ipfs/QmeSBJX5a61LZPxbkUKS2NF4LSxemgDwjD65fCAmyP7PX2\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212207fa60a7e7fc3a4f93c94041e659297205e836a8091e6fccd309310f5586464e764736f6c634300081e0033","sourceMap":"663:6562:29:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;663:6562:29;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212207fa60a7e7fc3a4f93c94041e659297205e836a8091e6fccd309310f5586464e764736f6c634300081e0033","sourceMap":"663:6562:29:-:0;;;;;;;;","linkReferences":{}}}}},"lib/protocol/packages/core/contracts/common/implementation/Lockable.sol":{"Lockable":{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/protocol/packages/core/contracts/common/implementation/Lockable.sol\":\"Lockable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/protocol/packages/core/contracts/common/implementation/Lockable.sol\":{\"keccak256\":\"0x41d78fcce54598ad5f26bc0b778c0f4fedbd836401625e49e736979f69a87ef0\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://4ce111bb50441ef5125e7d42284f6debbc17fd589515d7b8cede7e9d1d5f0ede\",\"dweb:/ipfs/QmaXiXACWVEDDHoCHNXdVBoNpf8QNHkUZ1kf5MfbxfL6jj\"]}},\"version\":1}","userdoc":{},"devdoc":{},"storageLayout":{"storage":[{"astId":7573,"contract":"lib/protocol/packages/core/contracts/common/implementation/Lockable.sol:Lockable","label":"_notEntered","offset":0,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"}}},"evm":{"bytecode":{"object":"6080604052348015600e575f5ffd5b505f805460ff19166001179055603e8060265f395ff3fe60806040525f5ffdfea26469706673582212201a663f3f1ddb507e0b2b73f258c31a8ec42bc254071dc5bc9169e1cb0fa5e5ea64736f6c634300081e0033","sourceMap":"405:2852:30:-:0;;;460:439;;;;;;;;;-1:-1:-1;874:11:30;:18;;-1:-1:-1;;874:18:30;888:4;874:18;;;405:2852;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"60806040525f5ffdfea26469706673582212201a663f3f1ddb507e0b2b73f258c31a8ec42bc254071dc5bc9169e1cb0fa5e5ea64736f6c634300081e0033","sourceMap":"405:2852:30:-:0;;;;;","linkReferences":{}}}}},"lib/protocol/packages/core/contracts/data-verification-mechanism/implementation/Constants.sol":{"OptimisticOracleConstraints":{"abi":[{"type":"function","name":"ancillaryBytesLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ancillaryBytesLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Commonly re-used values for contracts associated with the OptimisticOracle.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/protocol/packages/core/contracts/data-verification-mechanism/implementation/Constants.sol\":\"OptimisticOracleConstraints\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/protocol/packages/core/contracts/data-verification-mechanism/implementation/Constants.sol\":{\"keccak256\":\"0xe40957105a9240c6bcb9753fd0011fe9f382c437cd6771c57bf7a96f8ceb9c84\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://cbf0d25e841b1f5c4022d09fb29220cb428139443cb29c4ab8dbfff71dffcc05\",\"dweb:/ipfs/QmSVVr5wH1tZi6WmKyuy1K8yS6JN4DeK5kWaZpPKtXiqkK\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60866032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106032575f3560e01c8063c371dda7146036575b5f5ffd5b603e61200081565b60405190815260200160405180910390f3fea2646970667358221220507e0a39d6d1c5e7c8f9f4165fac927f7db2439f5566727b7c4e29c6ebd8da4664736f6c634300081e0033","sourceMap":"1235:531:31:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1235:531:31;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"73000000000000000000000000000000000000000030146080604052600436106032575f3560e01c8063c371dda7146036575b5f5ffd5b603e61200081565b60405190815260200160405180910390f3fea2646970667358221220507e0a39d6d1c5e7c8f9f4165fac927f7db2439f5566727b7c4e29c6ebd8da4664736f6c634300081e0033","sourceMap":"1235:531:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;1713:50;;1759:4;1713:50;;;;;168:25:47;;;156:2;141:18;1713:50:31;;;;;;","linkReferences":{}},"methodIdentifiers":{"ancillaryBytesLimit()":"c371dda7"}}},"OracleInterfaces":{"abi":[{"type":"function","name":"Bridge","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"ChildMessenger","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"CollateralWhitelist","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FinancialContractsAdmin","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"GenericHandler","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"IdentifierWhitelist","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OptimisticOracle","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OptimisticOracleV2","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OptimisticOracleV3","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"Oracle","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OracleHub","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OracleSpoke","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"Registry","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SkinnyOptimisticOracle","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"Store","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Bridge\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ChildMessenger\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CollateralWhitelist\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FinancialContractsAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GenericHandler\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IdentifierWhitelist\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OptimisticOracle\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OptimisticOracleV2\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OptimisticOracleV3\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"Oracle\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OracleHub\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OracleSpoke\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"Registry\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SkinnyOptimisticOracle\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"Store\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Stores common interface names used throughout the DVM by registration in the Finder.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/protocol/packages/core/contracts/data-verification-mechanism/implementation/Constants.sol\":\"OracleInterfaces\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/protocol/packages/core/contracts/data-verification-mechanism/implementation/Constants.sol\":{\"keccak256\":\"0xe40957105a9240c6bcb9753fd0011fe9f382c437cd6771c57bf7a96f8ceb9c84\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://cbf0d25e841b1f5c4022d09fb29220cb428139443cb29c4ab8dbfff71dffcc05\",\"dweb:/ipfs/QmSVVr5wH1tZi6WmKyuy1K8yS6JN4DeK5kWaZpPKtXiqkK\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"6102b3610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100fb575f3560e01c80634f4a180b1161009e5780637db9743b1161006e5780637db9743b1461022a5780638adca47f1461023c578063f02f8e8314610251578063f24a534e1461026d575f5ffd5b80634f4a180b146101cd578063598dd097146101ea5780635fa2ef10146102075780637608ea2f14610217575f5ffd5b80632a71e5b3116100d95780632a71e5b31461015b57806342e90c33146101825780634596ac9b14610191578063473e7ccd146101b1575f5ffd5b8063079b6c63146100ff5780631a0fbfb3146101295780631a4dbd1c14610141575b5f5ffd5b6101176d23b2b732b934b1a430b7323632b960911b81565b60405190815260200160405180910390f35b6101176d21b434b63226b2b9b9b2b733b2b960911b81565b6101176f4f7074696d69737469634f7261636c6560801b81565b6101177f46696e616e6369616c436f6e74726163747341646d696e00000000000000000081565b6101176453746f726560d81b81565b61011775536b696e6e794f7074696d69737469634f7261636c6560501b81565b6101177127b83a34b6b4b9ba34b1a7b930b1b632ab1960711b81565b610117721259195b9d1a599a595c95da1a5d195b1a5cdd606a1b81565b6101177210dbdb1b185d195c985b15da1a5d195b1a5cdd606a1b81565b6101176542726964676560d01b81565b6101176827b930b1b632a43ab160b91b81565b61011767526567697374727960c01b81565b6101176a4f7261636c6553706f6b6560a81b81565b610117714f7074696d69737469634f7261636c65563360701b81565b610117654f7261636c6560d01b8156fea2646970667358221220a1d5767cd1d3a3ac3c1397782c10f4f452265b518e69922d9c25fe90cc3b8c6964736f6c634300081e0033","sourceMap":"170:969:31:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;170:969:31;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"73000000000000000000000000000000000000000030146080604052600436106100fb575f3560e01c80634f4a180b1161009e5780637db9743b1161006e5780637db9743b1461022a5780638adca47f1461023c578063f02f8e8314610251578063f24a534e1461026d575f5ffd5b80634f4a180b146101cd578063598dd097146101ea5780635fa2ef10146102075780637608ea2f14610217575f5ffd5b80632a71e5b3116100d95780632a71e5b31461015b57806342e90c33146101825780634596ac9b14610191578063473e7ccd146101b1575f5ffd5b8063079b6c63146100ff5780631a0fbfb3146101295780631a4dbd1c14610141575b5f5ffd5b6101176d23b2b732b934b1a430b7323632b960911b81565b60405190815260200160405180910390f35b6101176d21b434b63226b2b9b9b2b733b2b960911b81565b6101176f4f7074696d69737469634f7261636c6560801b81565b6101177f46696e616e6369616c436f6e74726163747341646d696e00000000000000000081565b6101176453746f726560d81b81565b61011775536b696e6e794f7074696d69737469634f7261636c6560501b81565b6101177127b83a34b6b4b9ba34b1a7b930b1b632ab1960711b81565b610117721259195b9d1a599a595c95da1a5d195b1a5cdd606a1b81565b6101177210dbdb1b185d195c985b15da1a5d195b1a5cdd606a1b81565b6101176542726964676560d01b81565b6101176827b930b1b632a43ab160b91b81565b61011767526567697374727960c01b81565b6101176a4f7261636c6553706f6b6560a81b81565b610117714f7074696d69737469634f7261636c65563360701b81565b610117654f7261636c6560d01b8156fea2646970667358221220a1d5767cd1d3a3ac3c1397782c10f4f452265b518e69922d9c25fe90cc3b8c6964736f6c634300081e0033","sourceMap":"170:969:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;827:57;;-1:-1:-1;;;827:57:31;;;;;168:25:47;;;156:2;141:18;827:57:31;;;;;;;969;;-1:-1:-1;;;969:57:31;;571:61;;-1:-1:-1;;;571:61:31;;366:75;;;;;321:39;;-1:-1:-1;;;321:39:31;;890:73;;-1:-1:-1;;;890:73:31;;638:65;;-1:-1:-1;;;638:65:31;;248:67;;-1:-1:-1;;;248:67:31;;498;;-1:-1:-1;;;498:67:31;;780:41;;-1:-1:-1;;;780:41:31;;1032:47;;-1:-1:-1;;;1032:47:31;;447:45;;-1:-1:-1;;;447:45:31;;1085:51;;-1:-1:-1;;;1085:51:31;;709:65;;-1:-1:-1;;;709:65:31;;201:41;;-1:-1:-1;;;201:41:31;","linkReferences":{}},"methodIdentifiers":{"Bridge()":"5fa2ef10","ChildMessenger()":"1a0fbfb3","CollateralWhitelist()":"598dd097","FinancialContractsAdmin()":"2a71e5b3","GenericHandler()":"079b6c63","IdentifierWhitelist()":"4f4a180b","OptimisticOracle()":"1a4dbd1c","OptimisticOracleV2()":"473e7ccd","OptimisticOracleV3()":"f02f8e83","Oracle()":"f24a534e","OracleHub()":"7608ea2f","OracleSpoke()":"8adca47f","Registry()":"7db9743b","SkinnyOptimisticOracle()":"4596ac9b","Store()":"42e90c33"}}}},"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/FinderInterface.sol":{"FinderInterface":{"abi":[{"type":"function","name":"changeImplementationAddress","inputs":[{"name":"interfaceName","type":"bytes32","internalType":"bytes32"},{"name":"implementationAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getImplementationAddress","inputs":[{"name":"interfaceName","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"interfaceName\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"implementationAddress\",\"type\":\"address\"}],\"name\":\"changeImplementationAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"interfaceName\",\"type\":\"bytes32\"}],\"name\":\"getImplementationAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Examples are the Oracle or Store interfaces.\",\"kind\":\"dev\",\"methods\":{\"changeImplementationAddress(bytes32,address)\":{\"params\":{\"implementationAddress\":\"address of the deployed contract that implements the interface.\",\"interfaceName\":\"bytes32 encoding of the interface name that is either changed or registered.\"}},\"getImplementationAddress(bytes32)\":{\"params\":{\"interfaceName\":\"queried interface.\"},\"returns\":{\"_0\":\"implementationAddress address of the deployed contract that implements the interface.\"}}},\"title\":\"Provides addresses of the live contracts implementing certain interfaces.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"changeImplementationAddress(bytes32,address)\":{\"notice\":\"Updates the address of the contract that implements `interfaceName`.\"},\"getImplementationAddress(bytes32)\":{\"notice\":\"Gets the address of the contract that implements the given `interfaceName`.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/FinderInterface.sol\":\"FinderInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/FinderInterface.sol\":{\"keccak256\":\"0x9166fbfe08e954eb86d33c114fcde7ce4fd0dda5d9d28b31210582bfc769fa86\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e611e12bcaaebfdf65b67c566ff1d34708e757f01a445bd87c55862e89383b81\",\"dweb:/ipfs/QmYNSq5oopTShdS6j4VWKqoLxmQSRKmWebCxw6K4LfmKrf\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"changeImplementationAddress(bytes32,address)":"31f9665e","getImplementationAddress(bytes32)":"aafd5e40"}}}},"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/IdentifierWhitelistInterface.sol":{"IdentifierWhitelistInterface":{"abi":[{"type":"function","name":"addSupportedIdentifier","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isIdentifierSupported","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeSupportedIdentifier","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"}],\"name\":\"addSupportedIdentifier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"}],\"name\":\"isIdentifierSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"}],\"name\":\"removeSupportedIdentifier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addSupportedIdentifier(bytes32)\":{\"details\":\"Price requests using this identifier will succeed after this call.\",\"params\":{\"identifier\":\"bytes32 encoding of the string identifier. Eg: BTC/USD.\"}},\"isIdentifierSupported(bytes32)\":{\"params\":{\"identifier\":\"bytes32 encoding of the string identifier. Eg: BTC/USD.\"},\"returns\":{\"_0\":\"bool if the identifier is supported (or not).\"}},\"removeSupportedIdentifier(bytes32)\":{\"details\":\"Price requests using this identifier will no longer succeed after this call.\",\"params\":{\"identifier\":\"bytes32 encoding of the string identifier. Eg: BTC/USD.\"}}},\"title\":\"Interface for whitelists of supported identifiers that the oracle can provide prices for.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addSupportedIdentifier(bytes32)\":{\"notice\":\"Adds the provided identifier as a supported identifier.\"},\"isIdentifierSupported(bytes32)\":{\"notice\":\"Checks whether an identifier is on the whitelist.\"},\"removeSupportedIdentifier(bytes32)\":{\"notice\":\"Removes the identifier from the whitelist.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/IdentifierWhitelistInterface.sol\":\"IdentifierWhitelistInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/IdentifierWhitelistInterface.sol\":{\"keccak256\":\"0x9ae86a30dd1a8c03fb2c6d27be570bb30c4c0b13ac63cde8620b7e4b51d88dc9\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://a71d2aff48e075ecab56a9c9767775d1d77e04ec9191fed124e71003220549e3\",\"dweb:/ipfs/QmYPWsZXro6fzqpZY6UxQ5X8znEXfLp2sun8oXzdz8bTyc\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addSupportedIdentifier(bytes32)":"10a7e201","isIdentifierSupported(bytes32)":"90978d1b","removeSupportedIdentifier(bytes32)":"8e0d3ca7"}}}},"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/OracleAncillaryInterface.sol":{"OracleAncillaryInterface":{"abi":[{"type":"function","name":"getPrice","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"time","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"hasPrice","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"time","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"requestPrice","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"time","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"hasPrice\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"requestPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.\",\"kind\":\"dev\",\"methods\":{\"getPrice(bytes32,uint256,bytes)\":{\"details\":\"If the price is not available, the method reverts.\",\"params\":{\"ancillaryData\":\"arbitrary data appended to a price request to give the voters more info from the caller.\",\"identifier\":\"uniquely identifies the price requested. eg BTC/USD (encoded as bytes32) could be requested.\",\"time\":\"unix timestamp for the price request.\"},\"returns\":{\"_0\":\"int256 representing the resolved price for the given identifier and timestamp.\"}},\"hasPrice(bytes32,uint256,bytes)\":{\"details\":\"Time must be in the past and the identifier must be supported.\",\"params\":{\"ancillaryData\":\"arbitrary data appended to a price request to give the voters more info from the caller.\",\"identifier\":\"uniquely identifies the price requested. eg BTC/USD (encoded as bytes32) could be requested.\",\"time\":\"unix timestamp for the price request.\"},\"returns\":{\"_0\":\"bool if the DVM has resolved to a price for the given identifier and timestamp.\"}},\"requestPrice(bytes32,uint256,bytes)\":{\"details\":\"Time must be in the past and the identifier must be supported.\",\"params\":{\"ancillaryData\":\"arbitrary data appended to a price request to give the voters more info from the caller.\",\"identifier\":\"uniquely identifies the price requested. eg BTC/USD (encoded as bytes32) could be requested.\",\"time\":\"unix timestamp for the price request.\"}}},\"title\":\"Financial contract facing Oracle interface.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getPrice(bytes32,uint256,bytes)\":{\"notice\":\"Gets the price for `identifier` and `time` if it has already been requested and resolved.\"},\"hasPrice(bytes32,uint256,bytes)\":{\"notice\":\"Whether the price for `identifier` and `time` is available.\"},\"requestPrice(bytes32,uint256,bytes)\":{\"notice\":\"Enqueues a request (if a request isn't already present) for the given `identifier`, `time` pair.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/OracleAncillaryInterface.sol\":\"OracleAncillaryInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/OracleAncillaryInterface.sol\":{\"keccak256\":\"0xd58b41fe1e389f7871db7c04f2c05c1aac1d0455bbc521534da81fd657016a1f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://cc532e9c550bb1bba0daa33fda748590cd06ce94a9566fe65dac04e7d40977bc\",\"dweb:/ipfs/QmZKvfRW2LJFt5MWZbKuU9ujkXnS2hkPUJVj8wwJWcuZGX\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getPrice(bytes32,uint256,bytes)":"719c6d56","hasPrice(bytes32,uint256,bytes)":"b551cd50","requestPrice(bytes32,uint256,bytes)":"216666a4"}}}},"src/common/implementation/AddressLegacy.sol":{"AddressLegacy":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"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\":{\"src/common/implementation/AddressLegacy.sol\":\"AddressLegacy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"src/common/implementation/AddressLegacy.sol\":{\"keccak256\":\"0x441f6c1a04ebb7ad44e54e1b9e3a6ca9f2468358842f93ec73e392f928daf85f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c2cba7f3e831503913b6a147eec2f5fc6a2c5cdf1df11ae65582a42c5680ecd\",\"dweb:/ipfs/QmdBEXFnViR66ibJeyjKNh2xJoY8v1y3u3u1D9UXdPawFA\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212203e37e419549d6f0e2369ca8293df7d03a02febef7240dc599ae5599f15f1c9e864736f6c634300081e0033","sourceMap":"304:1546:35:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;304:1546:35;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212203e37e419549d6f0e2369ca8293df7d03a02febef7240dc599ae5599f15f1c9e864736f6c634300081e0033","sourceMap":"304:1546:35:-:0;;;;;;;;","linkReferences":{}}}}},"src/common/implementation/AddressWhitelist.sol":{"AddressWhitelist":{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addToWhitelist","inputs":[{"name":"newElement","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getWhitelist","inputs":[],"outputs":[{"name":"activeWhitelist","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"isOnWhitelist","inputs":[{"name":"elementToCheck","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWhitelistEnabled","inputs":[],"outputs":[{"name":"enabled","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"removeFromWhitelist","inputs":[{"name":"elementToRemove","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"whitelist","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum AddressWhitelist.Status"}],"stateMutability":"view"},{"type":"function","name":"whitelistIndices","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"AddedToWhitelist","inputs":[{"name":"addedAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RemovedFromWhitelist","inputs":[{"name":"removedAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addedAddress\",\"type\":\"address\"}],\"name\":\"AddedToWhitelist\",\"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\":\"removedAddress\",\"type\":\"address\"}],\"name\":\"RemovedFromWhitelist\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newElement\",\"type\":\"address\"}],\"name\":\"addToWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWhitelist\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"activeWhitelist\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"elementToCheck\",\"type\":\"address\"}],\"name\":\"isOnWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isWhitelistEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"elementToRemove\",\"type\":\"address\"}],\"name\":\"removeFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[{\"internalType\":\"enum AddressWhitelist.Status\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistIndices\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"custom:security-contact\":\"bugs@umaproject.org\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"addToWhitelist(address)\":{\"params\":{\"newElement\":\"the new address to add.\"}},\"constructor\":{\"details\":\"This makes it compatible with v5.x of OpenZeppelin's Ownable contract.\"},\"getWhitelist()\":{\"details\":\"Note: This method skips over, but still iterates through addresses. It is possible for this call to run out of gas if a large number of addresses have been removed. To reduce the likelihood of this unlikely scenario, we can modify the implementation so that when addresses are removed, the last addresses in the array is moved to the empty index.\",\"returns\":{\"activeWhitelist\":\"the list of addresses on the whitelist.\"}},\"isOnWhitelist(address)\":{\"params\":{\"elementToCheck\":\"the address to check.\"},\"returns\":{\"_0\":\"True if `elementToCheck` is on the whitelist, or False.\"}},\"isWhitelistEnabled()\":{\"details\":\"For this implementation, the whitelist is always considered enabled.\",\"returns\":{\"enabled\":\"Always returns true.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"removeFromWhitelist(address)\":{\"params\":{\"elementToRemove\":\"the existing address to remove.\"}},\"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.\"},\"supportsInterface(bytes4)\":{\"params\":{\"interfaceId\":\"The interface identifier, as specified in ERC-165.\"},\"returns\":{\"_0\":\"True if the contract implements the interface defined by interfaceId.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"A contract to track a whitelist of addresses.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addToWhitelist(address)\":{\"notice\":\"Adds an address to the whitelist.\"},\"constructor\":{\"notice\":\"Constructor to initialize the contract.\"},\"getWhitelist()\":{\"notice\":\"Gets all addresses that are currently included in the whitelist.\"},\"isOnWhitelist(address)\":{\"notice\":\"Checks whether an address is on the whitelist.\"},\"isWhitelistEnabled()\":{\"notice\":\"Checks if the whitelist is enabled.\"},\"removeFromWhitelist(address)\":{\"notice\":\"Removes an address from the whitelist.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Returns true if this contract implements the interface defined by interfaceId.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/common/implementation/AddressWhitelist.sol\":\"AddressWhitelist\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"lib/protocol/packages/core/contracts/common/implementation/Lockable.sol\":{\"keccak256\":\"0x41d78fcce54598ad5f26bc0b778c0f4fedbd836401625e49e736979f69a87ef0\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://4ce111bb50441ef5125e7d42284f6debbc17fd589515d7b8cede7e9d1d5f0ede\",\"dweb:/ipfs/QmaXiXACWVEDDHoCHNXdVBoNpf8QNHkUZ1kf5MfbxfL6jj\"]},\"src/common/implementation/AddressWhitelist.sol\":{\"keccak256\":\"0x3849b2e73172d5d5f617a447137026cf3a779cc050441ad9b70613faee837596\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://ace04f18fe4e939c2f4fde32412407b23298129d2534efc1835dc8615a9ee7ff\",\"dweb:/ipfs/QmbNGpi9uD3j9ek3HhdBFuKrnb9YYXhAfvyJxSdRMFVB3P\"]},\"src/common/interfaces/AddressWhitelistInterface.sol\":{\"keccak256\":\"0x126b2bc590041cf213c274bedc91c06a263ddff5e11a090be80d7db8b1cb0d8f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0f47e32816f895d4a3a060eded9bba7853eff6a6d99c3de5b4d1ca8359ce1c49\",\"dweb:/ipfs/QmVWt7xTr68owupHSUUJNfV2N3n2bTvTWtXCDtu8k3uVBN\"]}},\"version\":1}","userdoc":{},"devdoc":{},"storageLayout":{"storage":[{"astId":1840,"contract":"src/common/implementation/AddressWhitelist.sol:AddressWhitelist","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":7573,"contract":"src/common/implementation/AddressWhitelist.sol:AddressWhitelist","label":"_notEntered","offset":20,"slot":"0","type":"t_bool"},{"astId":7828,"contract":"src/common/implementation/AddressWhitelist.sol:AddressWhitelist","label":"whitelist","offset":0,"slot":"1","type":"t_mapping(t_address,t_enum(Status)7823)"},{"astId":7831,"contract":"src/common/implementation/AddressWhitelist.sol:AddressWhitelist","label":"whitelistIndices","offset":0,"slot":"2","type":"t_array(t_address)dyn_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_address)dyn_storage":{"encoding":"dynamic_array","label":"address[]","numberOfBytes":"32","base":"t_address"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_enum(Status)7823":{"encoding":"inplace","label":"enum AddressWhitelist.Status","numberOfBytes":"1"},"t_mapping(t_address,t_enum(Status)7823)":{"encoding":"mapping","key":"t_address","label":"mapping(address => enum AddressWhitelist.Status)","numberOfBytes":"32","value":"t_enum(Status)7823"}}},"evm":{"bytecode":{"object":"6080604052348015600e575f5ffd5b503380603357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b603a816051565b505f805460ff60a01b1916600160a01b17905560a0565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610844806100ad5f395ff3fe608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c80638ab1d6811161006e5780638ab1d681146101215780638da5cb5b146101345780639b19251a14610144578063d01f63f514610173578063e43252d714610188578063f2fde38b1461019b575f5ffd5b806301ffc9a7146100aa578063184d69ab146100d257806337797c08146100d95780633a3ab67214610104578063715018a614610117575b5f5ffd5b6100bd6100b83660046106d2565b6101ae565b60405190151581526020015b60405180910390f35b60016100bd565b6100ec6100e7366004610700565b6101e4565b6040516001600160a01b0390911681526020016100c9565b6100bd610112366004610717565b61020c565b61011f61024a565b005b61011f61012f366004610717565b61025d565b5f546001600160a01b03166100ec565b610166610152366004610717565b60016020525f908152604090205460ff1681565b6040516100c99190610751565b61017b610314565b6040516100c99190610777565b61011f610196366004610717565b61048e565b61011f6101a9366004610717565b6105c0565b5f6001600160e01b03198216634e759c3d60e11b14806101de57506301ffc9a760e01b6001600160e01b03198316145b92915050565b600281815481106101f3575f80fd5b5f918252602090912001546001600160a01b0316905081565b5f6102156105ff565b60016001600160a01b0383165f9081526001602052604090205460ff1660028111156102435761024361073d565b1492915050565b610252610657565b61025b5f610683565b565b6102656105ff565b6102765f805460ff60a01b19169055565b61027e610657565b60026001600160a01b0382165f9081526001602052604090205460ff1660028111156102ac576102ac61073d565b146102fa576001600160a01b0381165f81815260016020526040808220805460ff19166002179055517fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df7579190a25b6103115f805460ff60a01b1916600160a01b179055565b50565b606061031e6105ff565b5f805b600254811015610395576001805f60028481548110610342576103426107c2565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205460ff16600281111561037a5761037a61073d565b0361038d5781610389816107d6565b9250505b600101610321565b508067ffffffffffffffff8111156103af576103af6107fa565b6040519080825280602002602001820160405280156103d8578160200160208202803683370190505b5091505f9050805b600254811015610489575f600282815481106103fe576103fe6107c2565b5f918252602090912001546001600160a01b0316905060016001600160a01b0382165f9081526001602052604090205460ff1660028111156104425761044261073d565b03610480578084848151811061045a5761045a6107c2565b6001600160a01b03909216602092830291909101909101528261047c816107d6565b9350505b506001016103e0565b505090565b6104966105ff565b6104a75f805460ff60a01b19169055565b6104af610657565b60016001600160a01b0382165f9081526001602052604090205460ff1660028111156104dd576104dd61073d565b146102fa576001600160a01b0381165f9081526001602052604081205460ff16600281111561050e5761050e61073d565b0361055e57600280546001810182555f919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0383161790555b6001600160a01b0381165f818152600160208190526040808320805460ff1916909217909155517fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab039190a26103115f805460ff60a01b1916600160a01b179055565b6105c8610657565b6001600160a01b0381166105f657604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61031181610683565b5f54600160a01b900460ff1661025b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105ed565b5f546001600160a01b0316331461025b5760405163118cdaa760e01b81523360048201526024016105ed565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156106e2575f5ffd5b81356001600160e01b0319811681146106f9575f5ffd5b9392505050565b5f60208284031215610710575f5ffd5b5035919050565b5f60208284031215610727575f5ffd5b81356001600160a01b03811681146106f9575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b602081016003831061077157634e487b7160e01b5f52602160045260245ffd5b91905290565b602080825282518282018190525f918401906040840190835b818110156107b75783516001600160a01b0316835260209384019390920191600101610790565b509095945050505050565b634e487b7160e01b5f52603260045260245ffd5b5f600182016107f357634e487b7160e01b5f52601160045260245ffd5b5060010190565b634e487b7160e01b5f52604160045260245ffdfea26469706673582212201134f5b4e4ac2b7ed17013eea896fd585e22f56edd0f3de066c9a5074e41999864736f6c634300081e0033","sourceMap":"804:4044:36:-:0;;;1322:36;;;;;;;;;-1:-1:-1;1344:10:36;;1269:95:7;;1322:31;;-1:-1:-1;;;1322:31:7;;1350:1;1322:31;;;160:51:47;133:18;;1322:31:7;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;874:11:30;:18;;-1:-1:-1;;;;874:18:30;-1:-1:-1;;;874:18:30;;;804:4044:36;;2912:187:7;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:7;;;-1:-1:-1;;;;;;3020:17:7;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:203:47:-;804:4044:36;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c80638ab1d6811161006e5780638ab1d681146101215780638da5cb5b146101345780639b19251a14610144578063d01f63f514610173578063e43252d714610188578063f2fde38b1461019b575f5ffd5b806301ffc9a7146100aa578063184d69ab146100d257806337797c08146100d95780633a3ab67214610104578063715018a614610117575b5f5ffd5b6100bd6100b83660046106d2565b6101ae565b60405190151581526020015b60405180910390f35b60016100bd565b6100ec6100e7366004610700565b6101e4565b6040516001600160a01b0390911681526020016100c9565b6100bd610112366004610717565b61020c565b61011f61024a565b005b61011f61012f366004610717565b61025d565b5f546001600160a01b03166100ec565b610166610152366004610717565b60016020525f908152604090205460ff1681565b6040516100c99190610751565b61017b610314565b6040516100c99190610777565b61011f610196366004610717565b61048e565b61011f6101a9366004610717565b6105c0565b5f6001600160e01b03198216634e759c3d60e11b14806101de57506301ffc9a760e01b6001600160e01b03198316145b92915050565b600281815481106101f3575f80fd5b5f918252602090912001546001600160a01b0316905081565b5f6102156105ff565b60016001600160a01b0383165f9081526001602052604090205460ff1660028111156102435761024361073d565b1492915050565b610252610657565b61025b5f610683565b565b6102656105ff565b6102765f805460ff60a01b19169055565b61027e610657565b60026001600160a01b0382165f9081526001602052604090205460ff1660028111156102ac576102ac61073d565b146102fa576001600160a01b0381165f81815260016020526040808220805460ff19166002179055517fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df7579190a25b6103115f805460ff60a01b1916600160a01b179055565b50565b606061031e6105ff565b5f805b600254811015610395576001805f60028481548110610342576103426107c2565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205460ff16600281111561037a5761037a61073d565b0361038d5781610389816107d6565b9250505b600101610321565b508067ffffffffffffffff8111156103af576103af6107fa565b6040519080825280602002602001820160405280156103d8578160200160208202803683370190505b5091505f9050805b600254811015610489575f600282815481106103fe576103fe6107c2565b5f918252602090912001546001600160a01b0316905060016001600160a01b0382165f9081526001602052604090205460ff1660028111156104425761044261073d565b03610480578084848151811061045a5761045a6107c2565b6001600160a01b03909216602092830291909101909101528261047c816107d6565b9350505b506001016103e0565b505090565b6104966105ff565b6104a75f805460ff60a01b19169055565b6104af610657565b60016001600160a01b0382165f9081526001602052604090205460ff1660028111156104dd576104dd61073d565b146102fa576001600160a01b0381165f9081526001602052604081205460ff16600281111561050e5761050e61073d565b0361055e57600280546001810182555f919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0383161790555b6001600160a01b0381165f818152600160208190526040808320805460ff1916909217909155517fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab039190a26103115f805460ff60a01b1916600160a01b179055565b6105c8610657565b6001600160a01b0381166105f657604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61031181610683565b5f54600160a01b900460ff1661025b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105ed565b5f546001600160a01b0316331461025b5760405163118cdaa760e01b81523360048201526024016105ed565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156106e2575f5ffd5b81356001600160e01b0319811681146106f9575f5ffd5b9392505050565b5f60208284031215610710575f5ffd5b5035919050565b5f60208284031215610727575f5ffd5b81356001600160a01b03811681146106f9575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b602081016003831061077157634e487b7160e01b5f52602160045260245ffd5b91905290565b602080825282518282018190525f918401906040840190835b818110156107b75783516001600160a01b0316835260209384019390920191600101610790565b509095945050505050565b634e487b7160e01b5f52603260045260245ffd5b5f600182016107f357634e487b7160e01b5f52601160045260245ffd5b5060010190565b634e487b7160e01b5f52604160045260245ffdfea26469706673582212201134f5b4e4ac2b7ed17013eea896fd585e22f56edd0f3de066c9a5074e41999864736f6c634300081e0033","sourceMap":"804:4044:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4633:213;;;;;;:::i;:::-;;:::i;:::-;;;470:14:47;;463:22;445:41;;433:2;418:18;4633:213:36;;;;;;;;4260:95;4344:4;4260:95;;1005:33;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;846:32:47;;;828:51;;816:2;801:18;1005:33:36;682:203:47;2587:170:36;;;;;;:::i;:::-;;:::i;2293:101:7:-;;;:::i;:::-;;2104:277:36;;;;;;:::i;:::-;;:::i;1638:85:7:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:7;1638:85;;955:43:36;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;3310:752::-;;;:::i;:::-;;;;;;;:::i;1478:488::-;;;;;;:::i;:::-;;:::i;2543:215:7:-;;;;;;:::i;:::-;;:::i;4633:213:36:-;4718:4;-1:-1:-1;;;;;;4741:58:36;;-1:-1:-1;;;4741:58:36;;:98;;-1:-1:-1;;;;;;;;;;829:40:24;;;4803:36:36;4734:105;4633:213;-1:-1:-1;;4633:213:36:o;1005:33::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1005:33:36;;-1:-1:-1;1005:33:36;:::o;2587:170::-;2689:4;1603:19:30;:17;:19::i;:::-;2741:9:36::1;-1:-1:-1::0;;;;;2712:25:36;::::1;;::::0;;;:9:::1;:25;::::0;;;;;::::1;;:38;::::0;::::1;;;;;;:::i;:::-;;::::0;2587:170;-1:-1:-1;;2587:170:36:o;2293:101:7:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2104:277:36:-;1317:19:30;:17;:19::i;:::-;1346:17;2459:5;2445:19;;-1:-1:-1;;;;2445:19:30;;;2335:136;1346:17;1531:13:7::1;:11;:13::i;:::-;2243:10:36::2;-1:-1:-1::0;;;;;2213:26:36;::::2;;::::0;;;:9:::2;:26;::::0;;;;;::::2;;:40;::::0;::::2;;;;;;:::i;:::-;;2209:166;;-1:-1:-1::0;;;;;2269:26:36;::::2;;::::0;;;:9:::2;:26;::::0;;;;;:39;;-1:-1:-1;;2269:39:36::2;2298:10;2269:39;::::0;;2327:37;::::2;::::0;2269:26;2327:37:::2;2209:166;1384:20:30::0;2658:11;:18;;-1:-1:-1;;;;2658:18:30;-1:-1:-1;;;2658:18:30;;;2477:206;1384:20;2104:277:36;:::o;3310:752::-;3383:32;1603:19:30;:17;:19::i;:::-;3472::36::1;::::0;3505:173:::1;3529:16;:23:::0;3525:27;::::1;3505:173;;;3611:9;3577::::0;:30:::1;3587:16;3604:1;3587:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;3587:19:36::1;3577:30:::0;;;::::1;::::0;;;;;;;;;::::1;;:43;::::0;::::1;;;;;;:::i;:::-;::::0;3573:95:::1;;3640:13:::0;::::1;::::0;::::1;:::i;:::-;;;;3573:95;3554:3;;3505:173;;;;3750:11;3736:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;3736:26:36::1;-1:-1:-1::0;3718:44:36;-1:-1:-1;3786:1:36::1;::::0;-1:-1:-1;3786:1:36;3797:259:::1;3821:16;:23:::0;3817:27;::::1;3797:259;;;3865:12;3880:16;3897:1;3880:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;3880:19:36::1;::::0;-1:-1:-1;3880:19:36;-1:-1:-1;;;;;3917:15:36;::::1;;::::0;;;:9:::1;:15;::::0;;;;;::::1;;:28;::::0;::::1;;;;;;:::i;:::-;::::0;3913:133:::1;;3996:4;3965:15;3981:11;3965:28;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;3965:35:36;;::::1;:28;::::0;;::::1;::::0;;;;;;;:35;4018:13;::::1;::::0;::::1;:::i;:::-;;;;3913:133;-1:-1:-1::0;3846:3:36::1;;3797:259;;;;3417:645;3310:752:::0;:::o;1478:488::-;1317:19:30;:17;:19::i;:::-;1346:17;2459:5;2445:19;;-1:-1:-1;;;;2445:19:30;;;2335:136;1346:17;1531:13:7::1;:11;:13::i;:::-;1651:9:36::2;-1:-1:-1::0;;;;;1626:21:36;::::2;;::::0;;;:9:::2;:21;::::0;;;;;::::2;;:34;::::0;::::2;;;;;;:::i;:::-;1622:71:::0;1676:7:::2;1622:71;-1:-1:-1::0;;;;;1776:21:36;::::2;1801:11;1776:21:::0;;;:9:::2;:21;::::0;;;;;::::2;;:36;::::0;::::2;;;;;;:::i;:::-;::::0;1772:100:::2;;1828:16;:33:::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;1828:33:36;;;;;::::2;::::0;;-1:-1:-1;;;;;;1828:33:36::2;-1:-1:-1::0;;;;;1828:33:36;::::2;;::::0;;1772:100:::2;-1:-1:-1::0;;;;;1882:21:36;::::2;;::::0;;;1906:9:::2;1882:21;::::0;;;;;;;:33;;-1:-1:-1;;1882:33:36::2;::::0;;::::2;::::0;;;1931:28;::::2;::::0;1882:21;1931:28:::2;1384:20:30::0;2658:11;:18;;-1:-1:-1;;;;2658:18:30;-1:-1:-1;;;2658:18:30;;;2477:206;2543:215:7;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:7;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:7;;2700:1:::1;2672:31;::::0;::::1;828:51:47::0;801:18;;2672:31:7::1;;;;;;;;2623:91;2723:28;2742:8;2723:18;:28::i;2143:186:30:-:0;2275:11;;-1:-1:-1;;;2275:11:30;;;;2267:55;;;;-1:-1:-1;;;2267:55:30;;3002:2:47;2267:55:30;;;2984:21:47;3041:2;3021:18;;;3014:30;3080:33;3060:18;;;3053:61;3131:18;;2267:55:30;2800:355:47;1796:162:7;1684:7;1710:6;-1:-1:-1;;;;;1710:6:7;735:10:20;1855:23:7;1851:101;;1901:40;;-1:-1:-1;;;1901:40:7;;735:10:20;1901:40:7;;;828:51:47;801:18;;1901:40:7;682:203:47;2912:187:7;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:7;;;-1:-1:-1;;;;;;3020:17:7;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:286:47:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:47;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:47:o;497:180::-;556:6;609:2;597:9;588:7;584:23;580:32;577:52;;;625:1;622;615:12;577:52;-1:-1:-1;648:23:47;;497:180;-1:-1:-1;497:180:47:o;890:286::-;949:6;1002:2;990:9;981:7;977:23;973:32;970:52;;;1018:1;1015;1008:12;970:52;1044:23;;-1:-1:-1;;;;;1096:31:47;;1086:42;;1076:70;;1142:1;1139;1132:12;1181:127;1242:10;1237:3;1233:20;1230:1;1223:31;1273:4;1270:1;1263:15;1297:4;1294:1;1287:15;1313:339;1456:2;1441:18;;1489:1;1478:13;;1468:144;;1534:10;1529:3;1525:20;1522:1;1515:31;1569:4;1566:1;1559:15;1597:4;1594:1;1587:15;1468:144;1621:25;;;1313:339;:::o;1657:637::-;1847:2;1859:21;;;1929:13;;1832:18;;;1951:22;;;1799:4;;2030:15;;;2004:2;1989:18;;;1799:4;2073:195;2087:6;2084:1;2081:13;2073:195;;;2152:13;;-1:-1:-1;;;;;2148:39:47;2136:52;;2217:2;2243:15;;;;2208:12;;;;2184:1;2102:9;2073:195;;;-1:-1:-1;2285:3:47;;1657:637;-1:-1:-1;;;;;1657:637:47:o;2299:127::-;2360:10;2355:3;2351:20;2348:1;2341:31;2391:4;2388:1;2381:15;2415:4;2412:1;2405:15;2431:232;2470:3;2491:17;;;2488:140;;2550:10;2545:3;2541:20;2538:1;2531:31;2585:4;2582:1;2575:15;2613:4;2610:1;2603:15;2488:140;-1:-1:-1;2655:1:47;2644:13;;2431:232::o;2668:127::-;2729:10;2724:3;2720:20;2717:1;2710:31;2760:4;2757:1;2750:15;2784:4;2781:1;2774:15","linkReferences":{}},"methodIdentifiers":{"addToWhitelist(address)":"e43252d7","getWhitelist()":"d01f63f5","isOnWhitelist(address)":"3a3ab672","isWhitelistEnabled()":"184d69ab","owner()":"8da5cb5b","removeFromWhitelist(address)":"8ab1d681","renounceOwnership()":"715018a6","supportsInterface(bytes4)":"01ffc9a7","transferOwnership(address)":"f2fde38b","whitelist(address)":"9b19251a","whitelistIndices(uint256)":"37797c08"}}}},"src/common/implementation/DisabledAddressWhitelist.sol":{"DisabledAddressWhitelist":{"abi":[{"type":"function","name":"addToWhitelist","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"getWhitelist","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"isOnWhitelist","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"isWhitelistEnabled","inputs":[],"outputs":[{"name":"enabled","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"removeFromWhitelist","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"error","name":"CannotAddToDisabledAddressWhitelist","inputs":[]},{"type":"error","name":"CannotRemoveFromDisabledAddressWhitelist","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CannotAddToDisabledAddressWhitelist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotRemoveFromDisabledAddressWhitelist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"addToWhitelist\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWhitelist\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isOnWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isWhitelistEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"removeFromWhitelist\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"custom:security-contact\":\"bugs@umaproject.org\",\"details\":\"All addresses are considered to be on this whitelist.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"params\":{\"interfaceId\":\"The interface identifier, as specified in ERC-165.\"},\"returns\":{\"_0\":\"True if the contract implements the interface defined by interfaceId.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"supportsInterface(bytes4)\":{\"notice\":\"Returns true if this contract implements the interface defined by interfaceId.\"}},\"notice\":\"This contract is an implementation of AddressWhitelistInterface where the whitelist is permanently disabled.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/common/implementation/DisabledAddressWhitelist.sol\":\"DisabledAddressWhitelist\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"src/common/implementation/DisabledAddressWhitelist.sol\":{\"keccak256\":\"0x34d42ccd54fb72eef815f5187088ba6dede2f9a7fc202495d4eaec284f415954\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e9a4569e7bb99d3631da6a52696b83e4bc52e09d2bc1cb7e4d93b657103b1879\",\"dweb:/ipfs/QmVBBrXbiXFmH7U2DKWR8rmNCLusxA3feJ9dWRZXczoEof\"]},\"src/common/interfaces/AddressWhitelistInterface.sol\":{\"keccak256\":\"0x126b2bc590041cf213c274bedc91c06a263ddff5e11a090be80d7db8b1cb0d8f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0f47e32816f895d4a3a060eded9bba7853eff6a6d99c3de5b4d1ca8359ce1c49\",\"dweb:/ipfs/QmVWt7xTr68owupHSUUJNfV2N3n2bTvTWtXCDtu8k3uVBN\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"6080604052348015600e575f5ffd5b506102238061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610060575f3560e01c806301ffc9a714610064578063184d69ab1461008c5780633a3ab672146100925780638ab1d681146100a6578063d01f63f5146100bb578063e43252d7146100d3575b5f5ffd5b61007761007236600461014e565b6100e6565b60405190151581526020015b60405180910390f35b5f610077565b6100776100a036600461017c565b50600190565b6100b96100b436600461017c565b61011c565b005b604080515f81526020810191829052610083916101a2565b6100b96100e136600461017c565b610135565b5f6001600160e01b03198216634e759c3d60e11b148061011657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60405163d338e07160e01b815260040160405180910390fd5b604051633d1e966960e01b815260040160405180910390fd5b5f6020828403121561015e575f5ffd5b81356001600160e01b031981168114610175575f5ffd5b9392505050565b5f6020828403121561018c575f5ffd5b81356001600160a01b0381168114610175575f5ffd5b602080825282518282018190525f918401906040840190835b818110156101e25783516001600160a01b03168352602093840193909201916001016101bb565b50909594505050505056fea2646970667358221220eeff630460abbb9e830759b9d37824b3a1fde556a21a52db54771d4e3f58ebc264736f6c634300081e0033","sourceMap":"472:1214:37:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"608060405234801561000f575f5ffd5b5060043610610060575f3560e01c806301ffc9a714610064578063184d69ab1461008c5780633a3ab672146100925780638ab1d681146100a6578063d01f63f5146100bb578063e43252d7146100d3575b5f5ffd5b61007761007236600461014e565b6100e6565b60405190151581526020015b60405180910390f35b5f610077565b6100776100a036600461017c565b50600190565b6100b96100b436600461017c565b61011c565b005b604080515f81526020810191829052610083916101a2565b6100b96100e136600461017c565b610135565b5f6001600160e01b03198216634e759c3d60e11b148061011657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60405163d338e07160e01b815260040160405180910390fd5b604051633d1e966960e01b815260040160405180910390fd5b5f6020828403121561015e575f5ffd5b81356001600160e01b031981168114610175575f5ffd5b9392505050565b5f6020828403121561018c575f5ffd5b81356001600160a01b0381168114610175575f5ffd5b602080825282518282018190525f918401906040840190835b818110156101e25783516001600160a01b03168352602093840193909201916001016101bb565b50909594505050505056fea2646970667358221220eeff630460abbb9e830759b9d37824b3a1fde556a21a52db54771d4e3f58ebc264736f6c634300081e0033","sourceMap":"472:1214:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1471:213;;;;;;:::i;:::-;;:::i;:::-;;;470:14:47;;463:22;445:41;;433:2;418:18;1471:213:37;;;;;;;;1097:96;1150:12;1097:96;;891:89;;;;;;:::i;:::-;-1:-1:-1;969:4:37;;891:89;767:118;;;;;;:::i;:::-;;:::i;:::-;;986:105;1068:16;;;1082:1;1068:16;;;;;;;;;986:105;;;:::i;653:108::-;;;;;;:::i;:::-;;:::i;1471:213::-;1556:4;-1:-1:-1;;;;;;1579:58:37;;-1:-1:-1;;;1579:58:37;;:98;;-1:-1:-1;;;;;;;;;;829:40:24;;;1641:36:37;1572:105;1471:213;-1:-1:-1;;1471:213:37:o;767:118::-;836:42;;-1:-1:-1;;;836:42:37;;;;;;;;;;;653:108;717:37;;-1:-1:-1;;;717:37:37;;;;;;;;;;;14:286:47;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:47;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:47:o;497:::-;556:6;609:2;597:9;588:7;584:23;580:32;577:52;;;625:1;622;615:12;577:52;651:23;;-1:-1:-1;;;;;703:31:47;;693:42;;683:70;;749:1;746;739:12;788:637;978:2;990:21;;;1060:13;;963:18;;;1082:22;;;930:4;;1161:15;;;1135:2;1120:18;;;930:4;1204:195;1218:6;1215:1;1212:13;1204:195;;;1283:13;;-1:-1:-1;;;;;1279:39:47;1267:52;;1348:2;1374:15;;;;1339:12;;;;1315:1;1233:9;1204:195;;;-1:-1:-1;1416:3:47;;788:637;-1:-1:-1;;;;;788:637:47:o","linkReferences":{}},"methodIdentifiers":{"addToWhitelist(address)":"e43252d7","getWhitelist()":"d01f63f5","isOnWhitelist(address)":"3a3ab672","isWhitelistEnabled()":"184d69ab","removeFromWhitelist(address)":"8ab1d681","supportsInterface(bytes4)":"01ffc9a7"}}}},"src/common/implementation/LockableUpgradeable.sol":{"LockableUpgradeable":{"abi":[{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__gap\":{\"details\":\"Reserve storage slots for future versions of this base contract to add state variables without affecting the storage layout of child contracts. Decrement the size of __gap whenever state variables are added. This is at the bottom of contract to make sure its always at the end of storage. See https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable#storage-gaps\"}},\"title\":\"A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/common/implementation/LockableUpgradeable.sol\":\"LockableUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"src/common/implementation/LockableUpgradeable.sol\":{\"keccak256\":\"0x1a10eec9d7f12b051d343c65016a9c60a4bece53da4da2eceb8a8dc007b336e2\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9b8c203e136583fa946e4ae0e7bc9774837f865f8b319daa97c84ceb8a16c95b\",\"dweb:/ipfs/QmPJPPL27TB8qt66ZHquDCYtuubcTStRqxn4nxQnehMdA2\"]}},\"version\":1}","userdoc":{},"devdoc":{},"storageLayout":{"storage":[{"astId":8163,"contract":"src/common/implementation/LockableUpgradeable.sol:LockableUpgradeable","label":"_notEntered","offset":0,"slot":"0","type":"t_bool"},{"astId":8243,"contract":"src/common/implementation/LockableUpgradeable.sol:LockableUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"src/common/implementation/MultiCaller.sol":{"MultiCaller":{"abi":[{"type":"function","name":"multicall","inputs":[{"name":"data","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://docs.openzeppelin.com/upgrades-plugins/1.x/faq#delegatecall-selfdestruct for more details.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__gap\":{\"details\":\"Reserve storage slots for future versions of this base contract to add state variables without affecting the storage layout of child contracts. Decrement the size of __gap whenever state variables are added. This is at the bottom of contract to make sure its always at the end of storage. See https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable#storage-gaps\"}},\"title\":\"MultiCaller\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Logic is 100% copied from \\\"@uma/core/contracts/common/implementation/MultiCaller.sol\\\" but a comment is added to clarify why we allow delegatecall() in this contract, which is typically unsafe for use in upgradeable implementation contracts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/common/implementation/MultiCaller.sol\":\"MultiCaller\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"src/common/implementation/MultiCaller.sol\":{\"keccak256\":\"0x1cef2a13b361679c2ef5d0d97fcbb0ae0cf4858b97a6dd8ab68e3974ea5ffe4a\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://ad81f2964ce1b40a8ee56a56612d6b773f260e5a3381dc50cd85ba1f9f6af46f\",\"dweb:/ipfs/QmU3Pbxq8rMhGKqNiBa6vWqtiHw9RzdZ4zbTayhgGdyAnz\"]}},\"version\":1}","userdoc":{},"devdoc":{},"storageLayout":{"storage":[{"astId":8327,"contract":"src/common/implementation/MultiCaller.sol:MultiCaller","label":"__gap","offset":0,"slot":"0","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600","base":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"multicall(bytes[])":"ac9650d8"}}}},"src/common/interfaces/AddressWhitelistInterface.sol":{"AddressWhitelistInterface":{"abi":[{"type":"function","name":"addToWhitelist","inputs":[{"name":"newElement","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getWhitelist","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"isOnWhitelist","inputs":[{"name":"newElement","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWhitelistEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"removeFromWhitelist","inputs":[{"name":"newElement","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newElement\",\"type\":\"address\"}],\"name\":\"addToWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWhitelist\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newElement\",\"type\":\"address\"}],\"name\":\"isOnWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isWhitelistEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newElement\",\"type\":\"address\"}],\"name\":\"removeFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/common/interfaces/AddressWhitelistInterface.sol\":\"AddressWhitelistInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"src/common/interfaces/AddressWhitelistInterface.sol\":{\"keccak256\":\"0x126b2bc590041cf213c274bedc91c06a263ddff5e11a090be80d7db8b1cb0d8f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0f47e32816f895d4a3a060eded9bba7853eff6a6d99c3de5b4d1ca8359ce1c49\",\"dweb:/ipfs/QmVWt7xTr68owupHSUUJNfV2N3n2bTvTWtXCDtu8k3uVBN\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addToWhitelist(address)":"e43252d7","getWhitelist()":"d01f63f5","isOnWhitelist(address)":"3a3ab672","isWhitelistEnabled()":"184d69ab","removeFromWhitelist(address)":"8ab1d681"}}}},"src/common/interfaces/FixedPointInterface.sol":{"FixedPointInterface":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Interface for fixed point arithmetic on uints\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/common/interfaces/FixedPointInterface.sol\":\"FixedPointInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"src/common/interfaces/FixedPointInterface.sol\":{\"keccak256\":\"0xceca09e6aa78c97698fa0b1f40657f6c3c723d5d94150ef6476affb9671df753\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://d5d1b01017749d96befb5c2e8a8c6d9dd041f57e1d9a66238c296cc28512d2e5\",\"dweb:/ipfs/QmVPiky59JTngjwZNdxbmD7H1Lwa5AgTjzv975wSnavFFy\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"src/data-verification-mechanism/interfaces/StoreInterface.sol":{"StoreInterface":{"abi":[{"type":"function","name":"computeFinalFee","inputs":[{"name":"currency","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct FixedPointInterface.Unsigned","components":[{"name":"rawValue","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"computeRegularFee","inputs":[{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"endTime","type":"uint256","internalType":"uint256"},{"name":"pfc","type":"tuple","internalType":"struct FixedPointInterface.Unsigned","components":[{"name":"rawValue","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"regularFee","type":"tuple","internalType":"struct FixedPointInterface.Unsigned","components":[{"name":"rawValue","type":"uint256","internalType":"uint256"}]},{"name":"latePenalty","type":"tuple","internalType":"struct FixedPointInterface.Unsigned","components":[{"name":"rawValue","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"payOracleFees","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"payOracleFeesErc20","inputs":[{"name":"erc20Address","type":"address","internalType":"address"},{"name":"amount","type":"tuple","internalType":"struct FixedPointInterface.Unsigned","components":[{"name":"rawValue","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"computeFinalFee\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"rawValue\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPointInterface.Unsigned\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"rawValue\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPointInterface.Unsigned\",\"name\":\"pfc\",\"type\":\"tuple\"}],\"name\":\"computeRegularFee\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"rawValue\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPointInterface.Unsigned\",\"name\":\"regularFee\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"rawValue\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPointInterface.Unsigned\",\"name\":\"latePenalty\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"payOracleFees\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20Address\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"rawValue\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPointInterface.Unsigned\",\"name\":\"amount\",\"type\":\"tuple\"}],\"name\":\"payOracleFeesErc20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"computeFinalFee(address)\":{\"params\":{\"currency\":\"token used to pay the final fee.\"},\"returns\":{\"_0\":\"finalFee amount due.\"}},\"computeRegularFee(uint256,uint256,(uint256))\":{\"params\":{\"endTime\":\"end time until which the fee is paid.\",\"pfc\":\"\\\"profit from corruption\\\", or the maximum amount of margin currency that a token sponsor could extract from the contract through corrupting the price feed in their favor.\",\"startTime\":\"defines the beginning time from which the fee is paid.\"},\"returns\":{\"latePenalty\":\"for paying the fee after the deadline.\",\"regularFee\":\"amount owed for the duration from start to end time for the given pfc.\"}},\"payOracleFees()\":{\"details\":\"To be used by contracts whose margin currency is ETH.\"},\"payOracleFeesErc20(address,(uint256))\":{\"details\":\"To be used if the margin currency is an ERC20 token rather than ETH.\",\"params\":{\"amount\":\"number of tokens to transfer. An approval for at least this amount must exist.\",\"erc20Address\":\"address of the ERC20 token used to pay the fee.\"}}},\"title\":\"Interface that allows financial contracts to pay oracle fees for their use of the system.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"computeFinalFee(address)\":{\"notice\":\"Computes the final oracle fees that a contract should pay at settlement.\"},\"computeRegularFee(uint256,uint256,(uint256))\":{\"notice\":\"Computes the regular oracle fees that a contract should pay for a period.\"},\"payOracleFees()\":{\"notice\":\"Pays Oracle fees in ETH to the store.\"},\"payOracleFeesErc20(address,(uint256))\":{\"notice\":\"Pays oracle fees in the margin currency, erc20Address, to the store.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/data-verification-mechanism/interfaces/StoreInterface.sol\":\"StoreInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"src/common/interfaces/FixedPointInterface.sol\":{\"keccak256\":\"0xceca09e6aa78c97698fa0b1f40657f6c3c723d5d94150ef6476affb9671df753\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://d5d1b01017749d96befb5c2e8a8c6d9dd041f57e1d9a66238c296cc28512d2e5\",\"dweb:/ipfs/QmVPiky59JTngjwZNdxbmD7H1Lwa5AgTjzv975wSnavFFy\"]},\"src/data-verification-mechanism/interfaces/StoreInterface.sol\":{\"keccak256\":\"0x1905509e908c6a9b8b3a89449d2d86fd7192d0e588cbe542edd21351d9971ee5\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://346e602f41469943453fbe039bf7554b23e1eba3128ff3858d32b35ebcc2ae88\",\"dweb:/ipfs/QmcjZ73TwMjondBDKEHyZ9KUjZzcxsy6Dmqs8QxPK3KBde\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"computeFinalFee(address)":"5b97aadd","computeRegularFee(uint256,uint256,(uint256))":"74201feb","payOracleFees()":"cd3a9b24","payOracleFeesErc20(address,(uint256))":"8659d232"}}}},"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol":{"ManagedOptimisticOracleV2":{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"CONFIG_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OO_ANCILLARY_DATA_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"REQUEST_MANAGER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TOO_EARLY_RESPONSE","inputs":[],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"acceptDefaultAdminTransfer","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addRequestManager","inputs":[{"name":"requestManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"allowedBondRanges","inputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"outputs":[{"name":"minimumBond","type":"uint128","internalType":"uint128"},{"name":"maximumBond","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"ancillaryBytesLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"beginDefaultAdminTransfer","inputs":[{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelDefaultAdminTransfer","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"changeDefaultAdminDelay","inputs":[{"name":"newDelay","type":"uint48","internalType":"uint48"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"customBonds","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"contract IERC20"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"isSet","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"customLivenessValues","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"liveness","type":"uint256","internalType":"uint256"},{"name":"isSet","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"customProposerWhitelists","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"contract AddressWhitelistInterface"}],"stateMutability":"view"},{"type":"function","name":"defaultAdmin","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"defaultAdminDelay","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"defaultAdminDelayIncreaseWait","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"defaultLiveness","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"defaultProposerWhitelist","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract AddressWhitelistInterface"}],"stateMutability":"view"},{"type":"function","name":"disputePrice","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disputePriceFor","inputs":[{"name":"disputer","type":"address","internalType":"address"},{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"finder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract FinderInterface"}],"stateMutability":"view"},{"type":"function","name":"getCurrentTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustomProposerWhitelist","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"address","internalType":"contract AddressWhitelistInterface"}],"stateMutability":"view"},{"type":"function","name":"getManagedRequestId","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"getProposerWhitelistWithEnabledStatus","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"allowedProposers","type":"address[]","internalType":"address[]"},{"name":"isEnabled","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getRequest","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"tuple","internalType":"struct OptimisticOracleV2Interface.Request","components":[{"name":"proposer","type":"address","internalType":"address"},{"name":"disputer","type":"address","internalType":"address"},{"name":"currency","type":"address","internalType":"contract IERC20"},{"name":"settled","type":"bool","internalType":"bool"},{"name":"requestSettings","type":"tuple","internalType":"struct OptimisticOracleV2Interface.RequestSettings","components":[{"name":"eventBased","type":"bool","internalType":"bool"},{"name":"refundOnDispute","type":"bool","internalType":"bool"},{"name":"callbackOnPriceProposed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceDisputed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceSettled","type":"bool","internalType":"bool"},{"name":"bond","type":"uint256","internalType":"uint256"},{"name":"customLiveness","type":"uint256","internalType":"uint256"}]},{"name":"proposedPrice","type":"int256","internalType":"int256"},{"name":"resolvedPrice","type":"int256","internalType":"int256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"reward","type":"uint256","internalType":"uint256"},{"name":"finalFee","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getState","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint8","internalType":"enum OptimisticOracleV2Interface.State"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasPrice","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_liveness","type":"uint256","internalType":"uint256"},{"name":"_finderAddress","type":"address","internalType":"address"},{"name":"upgradeAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"_defaultLiveness","type":"uint256","internalType":"uint256"},{"name":"_finderAddress","type":"address","internalType":"address"},{"name":"_defaultProposerWhitelist","type":"address","internalType":"address"},{"name":"_requesterWhitelist","type":"address","internalType":"address"},{"name":"_allowedBondRanges","type":"tuple[]","internalType":"struct ManagedOptimisticOracleV2.CurrencyBondRange[]","components":[{"name":"currency","type":"address","internalType":"contract IERC20"},{"name":"range","type":"tuple","internalType":"struct ManagedOptimisticOracleV2.BondRange","components":[{"name":"minimumBond","type":"uint128","internalType":"uint128"},{"name":"maximumBond","type":"uint128","internalType":"uint128"}]}]},{"name":"_minimumLiveness","type":"uint256","internalType":"uint256"},{"name":"configAdmin","type":"address","internalType":"address"},{"name":"upgradeAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"minimumLiveness","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"multicall","inputs":[{"name":"data","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingDefaultAdmin","inputs":[],"outputs":[{"name":"newAdmin","type":"address","internalType":"address"},{"name":"schedule","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"pendingDefaultAdminDelay","inputs":[],"outputs":[{"name":"newDelay","type":"uint48","internalType":"uint48"},{"name":"schedule","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"proposePrice","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"proposedPrice","type":"int256","internalType":"int256"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"proposePriceFor","inputs":[{"name":"proposer","type":"address","internalType":"address"},{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"proposedPrice","type":"int256","internalType":"int256"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"removeRequestManager","inputs":[{"name":"requestManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestManagerSetBond","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"currency","type":"address","internalType":"contract IERC20"},{"name":"bond","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestManagerSetCustomLiveness","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"customLiveness","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestManagerSetProposerWhitelist","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"whitelist","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestPrice","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"currency","type":"address","internalType":"contract IERC20"},{"name":"reward","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"requesterWhitelist","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract AddressWhitelistInterface"}],"stateMutability":"view"},{"type":"function","name":"requests","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"proposer","type":"address","internalType":"address"},{"name":"disputer","type":"address","internalType":"address"},{"name":"currency","type":"address","internalType":"contract IERC20"},{"name":"settled","type":"bool","internalType":"bool"},{"name":"requestSettings","type":"tuple","internalType":"struct OptimisticOracleV2Interface.RequestSettings","components":[{"name":"eventBased","type":"bool","internalType":"bool"},{"name":"refundOnDispute","type":"bool","internalType":"bool"},{"name":"callbackOnPriceProposed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceDisputed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceSettled","type":"bool","internalType":"bool"},{"name":"bond","type":"uint256","internalType":"uint256"},{"name":"customLiveness","type":"uint256","internalType":"uint256"}]},{"name":"proposedPrice","type":"int256","internalType":"int256"},{"name":"resolvedPrice","type":"int256","internalType":"int256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"reward","type":"uint256","internalType":"uint256"},{"name":"finalFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollbackDefaultAdminDelay","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAllowedBondRange","inputs":[{"name":"currency","type":"address","internalType":"contract IERC20"},{"name":"newRange","type":"tuple","internalType":"struct ManagedOptimisticOracleV2.BondRange","components":[{"name":"minimumBond","type":"uint128","internalType":"uint128"},{"name":"maximumBond","type":"uint128","internalType":"uint128"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBond","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"bond","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"setCallbacks","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"callbackOnPriceProposed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceDisputed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceSettled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setCustomLiveness","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"customLiveness","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultProposerWhitelist","inputs":[{"name":"whitelist","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setEventBased","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinimumLiveness","inputs":[{"name":"_minimumLiveness","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRefundOnDispute","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRequesterWhitelist","inputs":[{"name":"whitelist","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settle","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"payout","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"settleAndGetPrice","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"stampAncillaryData","inputs":[{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"requester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"AllowedBondRangeUpdated","inputs":[{"name":"currency","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"newMinimumBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newMaximumBond","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CustomBondSet","inputs":[{"name":"managedRequestId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"requester","type":"address","indexed":false,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"currency","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"bond","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CustomLivenessSet","inputs":[{"name":"managedRequestId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"customLiveness","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CustomProposerWhitelistSet","inputs":[{"name":"managedRequestId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"requester","type":"address","indexed":false,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"newWhitelist","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"DefaultAdminDelayChangeCanceled","inputs":[],"anonymous":false},{"type":"event","name":"DefaultAdminDelayChangeScheduled","inputs":[{"name":"newDelay","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"effectSchedule","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"DefaultAdminTransferCanceled","inputs":[],"anonymous":false},{"type":"event","name":"DefaultAdminTransferScheduled","inputs":[{"name":"newAdmin","type":"address","indexed":true,"internalType":"address"},{"name":"acceptSchedule","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"DefaultProposerWhitelistUpdated","inputs":[{"name":"newWhitelist","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"DisputePrice","inputs":[{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":true,"internalType":"address"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"proposedPrice","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"MinimumLivenessUpdated","inputs":[{"name":"newMinimumLiveness","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ProposePrice","inputs":[{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":true,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"proposedPrice","type":"int256","indexed":false,"internalType":"int256"},{"name":"expirationTimestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RequestManagerAdded","inputs":[{"name":"requestManager","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RequestManagerRemoved","inputs":[{"name":"requestManager","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RequestPrice","inputs":[{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"reward","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"finalFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RequesterWhitelistUpdated","inputs":[{"name":"newWhitelist","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Settle","inputs":[{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":true,"internalType":"address"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"price","type":"int256","indexed":false,"internalType":"int256"},{"name":"payout","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlEnforcedDefaultAdminDelay","inputs":[{"name":"schedule","type":"uint48","internalType":"uint48"}]},{"type":"error","name":"AccessControlEnforcedDefaultAdminRules","inputs":[]},{"type":"error","name":"AccessControlInvalidDefaultAdmin","inputs":[{"name":"defaultAdmin","type":"address","internalType":"address"}]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AncillaryDataTooLong","inputs":[]},{"type":"error","name":"BondBelowMinimumBond","inputs":[]},{"type":"error","name":"BondExceedsMaximumBond","inputs":[]},{"type":"error","name":"CannotProposeTooEarly","inputs":[]},{"type":"error","name":"DisputerAddressCannotBeZero","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"LivenessCannotBeZero","inputs":[]},{"type":"error","name":"LivenessTooLarge","inputs":[]},{"type":"error","name":"LivenessTooLow","inputs":[]},{"type":"error","name":"MinimumBondAboveMaximumBond","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ProposerAddressCannotBeZero","inputs":[]},{"type":"error","name":"ProposerNotWhitelisted","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"RequestNotSettleable","inputs":[]},{"type":"error","name":"RequestStateNotInvalid","inputs":[]},{"type":"error","name":"RequestStateNotProposed","inputs":[]},{"type":"error","name":"RequestStateNotRequested","inputs":[]},{"type":"error","name":"RequesterNotWhitelisted","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"SenderNotWhitelisted","inputs":[]},{"type":"error","name":"TimestampInFuture","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnsupportedCurrency","inputs":[]},{"type":"error","name":"UnsupportedIdentifier","inputs":[]},{"type":"error","name":"UnsupportedWhitelistInterface","inputs":[]},{"type":"error","name":"ZeroBondNotAllowed","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"name\":\"AccessControlEnforcedDefaultAdminDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessControlEnforcedDefaultAdminRules\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"defaultAdmin\",\"type\":\"address\"}],\"name\":\"AccessControlInvalidDefaultAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AncillaryDataTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BondBelowMinimumBond\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BondExceedsMaximumBond\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotProposeTooEarly\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DisputerAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LivenessCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LivenessTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LivenessTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinimumBondAboveMaximumBond\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProposerAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProposerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RequestNotSettleable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RequestStateNotInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RequestStateNotProposed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RequestStateNotRequested\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RequesterNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SenderNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampInFuture\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedCurrency\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedIdentifier\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedWhitelistInterface\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroBondNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMinimumBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMaximumBond\",\"type\":\"uint256\"}],\"name\":\"AllowedBondRangeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"managedRequestId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"CustomBondSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"managedRequestId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"name\":\"CustomLivenessSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"managedRequestId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newWhitelist\",\"type\":\"address\"}],\"name\":\"CustomProposerWhitelistSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminDelayChangeCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"effectSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminDelayChangeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminTransferCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"acceptSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminTransferScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newWhitelist\",\"type\":\"address\"}],\"name\":\"DefaultProposerWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"DisputePrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMinimumLiveness\",\"type\":\"uint256\"}],\"name\":\"MinimumLivenessUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"ProposePrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requestManager\",\"type\":\"address\"}],\"name\":\"RequestManagerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requestManager\",\"type\":\"address\"}],\"name\":\"RequestManagerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"name\":\"RequestPrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newWhitelist\",\"type\":\"address\"}],\"name\":\"RequesterWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"price\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"payout\",\"type\":\"uint256\"}],\"name\":\"Settle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CONFIG_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OO_ANCILLARY_DATA_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REQUEST_MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOO_EARLY_RESPONSE\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requestManager\",\"type\":\"address\"}],\"name\":\"addRequestManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowedBondRanges\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"minimumBond\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"maximumBond\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ancillaryBytesLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"beginDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"}],\"name\":\"changeDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"customBonds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"customLivenessValues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liveness\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"customProposerWhitelists\",\"outputs\":[{\"internalType\":\"contract AddressWhitelistInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelayIncreaseWait\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultLiveness\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultProposerWhitelist\",\"outputs\":[{\"internalType\":\"contract AddressWhitelistInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"disputePrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"disputePriceFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finder\",\"outputs\":[{\"internalType\":\"contract FinderInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"getCustomProposerWhitelist\",\"outputs\":[{\"internalType\":\"contract AddressWhitelistInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"getManagedRequestId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"getProposerWhitelistWithEnabledStatus\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"allowedProposers\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"getRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"eventBased\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"refundOnDispute\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceProposed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceDisputed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceSettled\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct OptimisticOracleV2Interface.RequestSettings\",\"name\":\"requestSettings\",\"type\":\"tuple\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"internalType\":\"struct OptimisticOracleV2Interface.Request\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"getState\",\"outputs\":[{\"internalType\":\"enum OptimisticOracleV2Interface.State\",\"name\":\"\",\"type\":\"uint8\"}],\"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\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"hasPrice\",\"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\":\"uint256\",\"name\":\"_liveness\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_finderAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgradeAdmin\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_defaultLiveness\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_finderAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultProposerWhitelist\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_requesterWhitelist\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"minimumBond\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"maximumBond\",\"type\":\"uint128\"}],\"internalType\":\"struct ManagedOptimisticOracleV2.BondRange\",\"name\":\"range\",\"type\":\"tuple\"}],\"internalType\":\"struct ManagedOptimisticOracleV2.CurrencyBondRange[]\",\"name\":\"_allowedBondRanges\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_minimumLiveness\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"configAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgradeAdmin\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumLiveness\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"proposePrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"proposePriceFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requestManager\",\"type\":\"address\"}],\"name\":\"removeRequestManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"requestManagerSetBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"name\":\"requestManagerSetCustomLiveness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"whitelist\",\"type\":\"address\"}],\"name\":\"requestManagerSetProposerWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"name\":\"requestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requesterWhitelist\",\"outputs\":[{\"internalType\":\"contract AddressWhitelistInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"requests\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"eventBased\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"refundOnDispute\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceProposed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceDisputed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceSettled\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct OptimisticOracleV2Interface.RequestSettings\",\"name\":\"requestSettings\",\"type\":\"tuple\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollbackDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"minimumBond\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"maximumBond\",\"type\":\"uint128\"}],\"internalType\":\"struct ManagedOptimisticOracleV2.BondRange\",\"name\":\"newRange\",\"type\":\"tuple\"}],\"name\":\"setAllowedBondRange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"setBond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceProposed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceDisputed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceSettled\",\"type\":\"bool\"}],\"name\":\"setCallbacks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"name\":\"setCustomLiveness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"whitelist\",\"type\":\"address\"}],\"name\":\"setDefaultProposerWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"setEventBased\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minimumLiveness\",\"type\":\"uint256\"}],\"name\":\"setMinimumLiveness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"setRefundOnDispute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"whitelist\",\"type\":\"address\"}],\"name\":\"setRequesterWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"payout\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"settleAndGetPrice\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"}],\"name\":\"stampAncillaryData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"custom:security-contact\":\"bugs@umaproject.org\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlEnforcedDefaultAdminDelay(uint48)\":[{\"details\":\"The delay for transferring the default admin delay is enforced and the operation must wait until `schedule`. NOTE: `schedule` can be 0 indicating there's no transfer scheduled.\"}],\"AccessControlEnforcedDefaultAdminRules()\":[{\"details\":\"At least one of the following rules was violated: - The `DEFAULT_ADMIN_ROLE` must only be managed by itself. - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time. - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps.\"}],\"AccessControlInvalidDefaultAdmin(address)\":[{\"details\":\"The new default admin is not a valid default admin.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"DefaultAdminDelayChangeCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass.\"},\"DefaultAdminDelayChangeScheduled(uint48,uint48)\":{\"details\":\"Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next delay to be applied between default admin transfer after `effectSchedule` has passed.\"},\"DefaultAdminTransferCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule.\"},\"DefaultAdminTransferScheduled(address,uint48)\":{\"details\":\"Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule` passes.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"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`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"acceptDefaultAdminTransfer()\":{\"details\":\"Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. After calling the function: - `DEFAULT_ADMIN_ROLE` should be granted to the caller. - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder. - {pendingDefaultAdmin} should be reset to zero values. Requirements: - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`. - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed.\"},\"addRequestManager(address)\":{\"details\":\"Only callable by the config admin (checked in grantRole of AccessControlUpgradeable).\",\"params\":{\"requestManager\":\"address of the request manager to set.\"}},\"beginDefaultAdminTransfer(address)\":{\"details\":\"Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance after the current timestamp plus a {defaultAdminDelay}. Requirements: - Only can be called by the current {defaultAdmin}. Emits a DefaultAdminRoleChangeStarted event.\"},\"cancelDefaultAdminTransfer()\":{\"details\":\"Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function. Requirements: - Only can be called by the current {defaultAdmin}. May emit a DefaultAdminTransferCanceled event.\"},\"changeDefaultAdminDelay(uint48)\":{\"details\":\"Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting into effect after the current timestamp plus a {defaultAdminDelay}. This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay} set before calling. The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin} complete transfer (including acceptance). The schedule is designed for two scenarios: - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by {defaultAdminDelayIncreaseWait}. - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`. A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change. Requirements: - Only can be called by the current {defaultAdmin}. Emits a DefaultAdminDelayChangeScheduled event and may emit a DefaultAdminDelayChangeCanceled event.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"defaultAdmin()\":{\"details\":\"Returns the address of the current `DEFAULT_ADMIN_ROLE` holder.\"},\"defaultAdminDelay()\":{\"details\":\"Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started. This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set the acceptance schedule. NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this function returns the new delay. See {changeDefaultAdminDelay}.\"},\"defaultAdminDelayIncreaseWait()\":{\"details\":\"Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay}) to take effect. Default to 5 days. When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds) that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can be overrode for a custom {defaultAdminDelay} increase scheduling. IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise, there's a risk of setting a high new delay that goes into effect almost immediately without the possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds).\"},\"disputePrice(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was valid (the proposal was incorrect).\"}},\"disputePriceFor(address,address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"disputer\":\"address to set as the disputer.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was valid (the proposal was incorrect).\"}},\"getCustomProposerWhitelist(address,bytes32,bytes)\":{\"details\":\"This omits the timestamp from the key derivation, so the whitelist might have been set in advance of the request.\",\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\"},\"returns\":{\"_0\":\"AddressWhitelistInterface the custom proposer whitelist for the request or zero address if not set.\"}},\"getManagedRequestId(address,bytes32,bytes)\":{\"details\":\"This omits the timestamp from the key derivation, so it can be used for managed requests in advance.\",\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\"},\"returns\":{\"_0\":\"bytes32 the ID for the managed request.\"}},\"getProposerWhitelistWithEnabledStatus(address,bytes32,bytes)\":{\"details\":\"If no custom proposer whitelist is set for the request, the default proposer whitelist is used. If whitelist used is DisabledAddressWhitelist, the returned proposer list will be empty and isEnabled will be false, indicating that any address is allowed to propose.\",\"params\":{\"ancillaryData\":\"Additional data used to uniquely identify the request.\",\"identifier\":\"The identifier of the price request.\",\"requester\":\"The address that made or will make the price request.\"},\"returns\":{\"allowedProposers\":\"The list of addresses allowed to propose, if whitelist is enabled. Otherwise, an empty array.\",\"isEnabled\":\"A boolean indicating whether whitelist is enabled for this request.\"}},\"getRequest(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"the Request data structure.\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getState(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"the State.\"}},\"grantRole(bytes32,address)\":{\"details\":\"See {AccessControl-grantRole}. Reverts for `DEFAULT_ADMIN_ROLE`.\"},\"hasPrice(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"boolean indicating true if price exists and false if not.\"}},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(uint256,address,address)\":{\"details\":\"Used only for standalone deployments of the OptimisticOracleV2Upgradeable contract.\",\"params\":{\"_finderAddress\":\"finder to use to get addresses of DVM contracts.\",\"_liveness\":\"default liveness applied to each price request.\"}},\"initialize(uint256,address,address,address,(address,(uint128,uint128))[],uint256,address,address)\":{\"params\":{\"_allowedBondRanges\":\"array of allowed bond ranges for different currencies.\",\"_defaultLiveness\":\"applied to each price request.\",\"_defaultProposerWhitelist\":\"address of the default whitelist.\",\"_finderAddress\":\"to use to get addresses of DVM contracts.\",\"_minimumLiveness\":\"that can be overridden for a request.\",\"_requesterWhitelist\":\"address of the requester whitelist.\",\"configAdmin\":\"address, which is used for managing request managers and contract parameters.\",\"upgradeAdmin\":\"address, which also can manage the config admin role.\"}},\"owner()\":{\"details\":\"Gets the address of the owner.\"},\"pendingDefaultAdmin()\":{\"details\":\"Returns a tuple of a `newAdmin` and an accept schedule. After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role by calling {acceptDefaultAdminTransfer}, completing the role transfer. A zero value only in `acceptSchedule` indicates no pending admin transfer. NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced.\"},\"pendingDefaultAdminDelay()\":{\"details\":\"Returns a tuple of `newDelay` and an effect schedule. After the `schedule` passes, the `newDelay` will get into effect immediately for every new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}. A zero value only in `effectSchedule` indicates no pending delay change. NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay} will be zero after the effect schedule.\"},\"proposePrice(address,bytes32,uint256,bytes,int256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"proposedPrice\":\"price being proposed.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct.\"}},\"proposePriceFor(address,address,bytes32,uint256,bytes,int256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"proposedPrice\":\"price being proposed.\",\"proposer\":\"address to set as the proposer.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"removeRequestManager(address)\":{\"details\":\"Only callable by the config admin (checked in revokeRole of AccessControlUpgradeable).\",\"params\":{\"requestManager\":\"address of the request manager to remove.\"}},\"renounceRole(bytes32,address)\":{\"details\":\"See {AccessControl-renounceRole}. For the `DEFAULT_ADMIN_ROLE`, it only allows renouncing in two steps by first calling {beginDefaultAdminTransfer} to the `address(0)`, so it's required that the {pendingDefaultAdmin} schedule has also passed when calling this function. After its execution, it will not be possible to call `onlyRole(DEFAULT_ADMIN_ROLE)` functions. NOTE: Renouncing `DEFAULT_ADMIN_ROLE` will leave the contract without a {defaultAdmin}, thereby disabling any functionality that is only available for it, and the possibility of reassigning a non-administrated role.\"},\"requestManagerSetBond(address,bytes32,bytes,address,uint256)\":{\"details\":\"This would also override any subsequent calls to setBond() by the requester.\",\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"bond\":\"custom bond amount to set.\",\"currency\":\"ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\"}},\"requestManagerSetCustomLiveness(address,bytes32,bytes,uint256)\":{\"details\":\"This would also override any subsequent calls to setLiveness() by the requester.\",\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"customLiveness\":\"new custom liveness.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\"}},\"requestManagerSetProposerWhitelist(address,bytes32,bytes,address)\":{\"details\":\"This can also be set in advance of the request as the timestamp is omitted from the mapping key derivation.\",\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"whitelist\":\"address of the whitelist to set.\"}},\"requestPrice(bytes32,uint256,bytes,address,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data representing additional args being passed with the price request.\",\"currency\":\"ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\",\"identifier\":\"price identifier being requested.\",\"reward\":\"reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0, which could make sense if the contract requests and proposes the value in the same call or provides its own reward system.\",\"timestamp\":\"timestamp of the price being requested.\"},\"returns\":{\"totalBond\":\"default bond (final fee) + final fee that the proposer and disputer will be required to pay. This can be changed with a subsequent call to setBond().\"}},\"revokeRole(bytes32,address)\":{\"details\":\"See {AccessControl-revokeRole}. Reverts for `DEFAULT_ADMIN_ROLE`.\"},\"rollbackDefaultAdminDelay()\":{\"details\":\"Cancels a scheduled {defaultAdminDelay} change. Requirements: - Only can be called by the current {defaultAdmin}. May emit a DefaultAdminDelayChangeCanceled event.\"},\"setAllowedBondRange(address,(uint128,uint128))\":{\"details\":\"This can be used to limit the bond amount that can be set by request managers, callable by the config admin.\",\"params\":{\"currency\":\"the ERC20 token used for bonding proposals and disputes. Must be approved for use with the DVM.\",\"newRange\":\"new allowed range for the bond.\"}},\"setBond(bytes32,uint256,bytes,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"bond\":\"custom bond amount to set.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"new bond + final fee that the proposer and disputer will be required to pay. This can be changed again with a subsequent call to setBond().\"}},\"setCallbacks(bytes32,uint256,bytes,bool,bool,bool)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"callbackOnPriceDisputed\":\"whether to enable the callback onPriceDisputed.\",\"callbackOnPriceProposed\":\"whether to enable the callback onPriceProposed.\",\"callbackOnPriceSettled\":\"whether to enable the callback onPriceSettled.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"}},\"setCustomLiveness(bytes32,uint256,bytes,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"customLiveness\":\"new custom liveness.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"}},\"setDefaultProposerWhitelist(address)\":{\"details\":\"Only callable by the config admin.\",\"params\":{\"whitelist\":\"address of the whitelist to set.\"}},\"setEventBased(bytes32,uint256,bytes)\":{\"details\":\"Calling this method has a few impacts on the request: 1. The timestamp at which the request is evaluated is the time of the proposal, not the timestamp associated with the request. 2. The proposer cannot propose the \\\"too early\\\" value (TOO_EARLY_RESPONSE). This is to ensure that a proposer who prematurely proposes a response loses their bond. 3. RefundoOnDispute is automatically set, meaning disputes trigger the reward to be automatically refunded to the requesting contract.\",\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"}},\"setMinimumLiveness(uint256)\":{\"details\":\"This can be used to limit the liveness period that can be set by request managers, callable by the config admin.\",\"params\":{\"_minimumLiveness\":\"new minimum liveness period.\"}},\"setRefundOnDispute(bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"}},\"setRequesterWhitelist(address)\":{\"details\":\"Only callable by the config admin.\",\"params\":{\"whitelist\":\"address of the whitelist to set.\"}},\"settle(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"payout\":\"the amount that the \\\"winner\\\" (proposer or disputer) receives on settlement. This amount includes the returned bonds as well as additional rewards.\"}},\"settleAndGetPrice(bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"resolved price.\"}},\"stampAncillaryData(bytes,address)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"requester\":\"sender of the initial price request.\"},\"returns\":{\"_0\":\"the stamped ancillary bytes.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"Reserve storage slots for future versions of this base contract to add state variables without affecting the storage layout of child contracts. Decrement the size of __gap whenever state variables are added. This is at the bottom of contract to make sure its always at the end of storage. See https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable#storage-gaps\"}},\"title\":\"Managed Optimistic Oracle V2.\",\"version\":1},\"userdoc\":{\"errors\":{\"AncillaryDataTooLong()\":[{\"notice\":\"Thrown when ancillary data exceeds the allowed limit.\"}],\"BondBelowMinimumBond()\":[{\"notice\":\"Thrown when a bond is set lower than the minimum allowed bond.\"}],\"BondExceedsMaximumBond()\":[{\"notice\":\"Thrown when a bond is set higher than the maximum allowed bond.\"}],\"CannotProposeTooEarly()\":[{\"notice\":\"Thrown when trying to propose the \\\"too early\\\" response for event-based requests.\"}],\"DisputerAddressCannotBeZero()\":[{\"notice\":\"Thrown when a disputer address is zero.\"}],\"LivenessCannotBeZero()\":[{\"notice\":\"Thrown when liveness period cannot be zero.\"}],\"LivenessTooLarge()\":[{\"notice\":\"Thrown when liveness period is too large.\"}],\"LivenessTooLow()\":[{\"notice\":\"Thrown when a liveness is set lower than the minimum allowed liveness.\"}],\"MinimumBondAboveMaximumBond()\":[{\"notice\":\"Thrown when minimum bond is higher than maximum bond.\"}],\"ProposerAddressCannotBeZero()\":[{\"notice\":\"Thrown when a proposer address is zero.\"}],\"ProposerNotWhitelisted()\":[{\"notice\":\"Thrown when a proposer is not on the effective proposer whitelist.\"}],\"RequestNotSettleable()\":[{\"notice\":\"Thrown when trying to settle a request that is not settleable.\"}],\"RequestStateNotInvalid()\":[{\"notice\":\"Thrown when a request is not in the expected Invalid state.\"}],\"RequestStateNotProposed()\":[{\"notice\":\"Thrown when a request is not in the expected Proposed state.\"}],\"RequestStateNotRequested()\":[{\"notice\":\"Thrown when a request is not in the expected Requested state.\"}],\"RequesterNotWhitelisted()\":[{\"notice\":\"Thrown when a requester is not on the requester whitelist.\"}],\"SenderNotWhitelisted()\":[{\"notice\":\"Thrown when the message sender is not on the effective proposer whitelist for a proposal.\"}],\"TimestampInFuture()\":[{\"notice\":\"Thrown when a timestamp is in the future.\"}],\"UnsupportedCurrency()\":[{\"notice\":\"Thrown when a currency is not supported by the collateral whitelist.\"}],\"UnsupportedIdentifier()\":[{\"notice\":\"Thrown when an identifier is not supported by the identifier whitelist.\"}],\"UnsupportedWhitelistInterface()\":[{\"notice\":\"Thrown when a whitelist does not support the required interface.\"}],\"ZeroBondNotAllowed()\":[{\"notice\":\"Thrown when a zero value bond is set.\"}]},\"kind\":\"user\",\"methods\":{\"addRequestManager(address)\":{\"notice\":\"Adds a request manager.\"},\"disputePrice(address,bytes32,uint256,bytes)\":{\"notice\":\"Disputes a price value for an existing price request with an active proposal.\"},\"disputePriceFor(address,address,bytes32,uint256,bytes)\":{\"notice\":\"Disputes a price request with an active proposal on another address' behalf. Note: this address will receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\"},\"getCustomProposerWhitelist(address,bytes32,bytes)\":{\"notice\":\"Gets the custom proposer whitelist for a request.\"},\"getManagedRequestId(address,bytes32,bytes)\":{\"notice\":\"Gets the ID for a managed request.\"},\"getProposerWhitelistWithEnabledStatus(address,bytes32,bytes)\":{\"notice\":\"Returns the proposer whitelist and whether whitelist is enabled for a given request.\"},\"getRequest(address,bytes32,uint256,bytes)\":{\"notice\":\"Gets the current data structure containing all information about a price request.\"},\"getState(address,bytes32,uint256,bytes)\":{\"notice\":\"Computes the current state of a price request. See the State enum for more details.\"},\"hasPrice(address,bytes32,uint256,bytes)\":{\"notice\":\"Checks if a given request has resolved, expired or been settled (i.e the optimistic oracle has a price).\"},\"initialize(uint256,address,address)\":{\"notice\":\"Initializer (external).\"},\"initialize(uint256,address,address,address,(address,(uint128,uint128))[],uint256,address,address)\":{\"notice\":\"Initializer.\"},\"proposePrice(address,bytes32,uint256,bytes,int256)\":{\"notice\":\"Proposes a price value for an existing price request.\"},\"proposePriceFor(address,address,bytes32,uint256,bytes,int256)\":{\"notice\":\"Proposes a price value on another address' behalf. Note: this address will receive any rewards that come from this proposal. However, any bonds are pulled from the caller.\"},\"removeRequestManager(address)\":{\"notice\":\"Removes a request manager.\"},\"requestManagerSetBond(address,bytes32,bytes,address,uint256)\":{\"notice\":\"Set the proposal bond associated with a price request.\"},\"requestManagerSetCustomLiveness(address,bytes32,bytes,uint256)\":{\"notice\":\"Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before being auto-resolved.\"},\"requestManagerSetProposerWhitelist(address,bytes32,bytes,address)\":{\"notice\":\"Sets the proposer whitelist for a request.\"},\"requestPrice(bytes32,uint256,bytes,address,uint256)\":{\"notice\":\"Requests a new price.\"},\"setAllowedBondRange(address,(uint128,uint128))\":{\"notice\":\"Sets the bounds for a bond that can be set for a request.\"},\"setBond(bytes32,uint256,bytes,uint256)\":{\"notice\":\"Set the proposal bond associated with a price request.\"},\"setCallbacks(bytes32,uint256,bytes,bool,bool,bool)\":{\"notice\":\"Sets which callbacks should be enabled for the request.\"},\"setCustomLiveness(bytes32,uint256,bytes,uint256)\":{\"notice\":\"Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before being auto-resolved.\"},\"setDefaultProposerWhitelist(address)\":{\"notice\":\"Sets the default proposer whitelist.\"},\"setEventBased(bytes32,uint256,bytes)\":{\"notice\":\"Sets the request to be an \\\"event-based\\\" request.\"},\"setMinimumLiveness(uint256)\":{\"notice\":\"Sets the minimum liveness that can be set for a request.\"},\"setRefundOnDispute(bytes32,uint256,bytes)\":{\"notice\":\"Sets the request to refund the reward if the proposal is disputed. This can help to \\\"hedge\\\" the caller in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's bond, so there is still profit to be made even if the reward is refunded.\"},\"setRequesterWhitelist(address)\":{\"notice\":\"Sets the requester whitelist.\"},\"settle(address,bytes32,uint256,bytes)\":{\"notice\":\"Attempts to settle an outstanding price request. Will revert if it isn't settleable.\"},\"settleAndGetPrice(bytes32,uint256,bytes)\":{\"notice\":\"Retrieves a price that was previously requested by a caller. Reverts if the request is not settled or settleable. Note: this method is not view so that this call may actually settle the price request if it hasn't been settled.\"},\"stampAncillaryData(bytes,address)\":{\"notice\":\"Generates stamped ancillary data in the format that it would be used in the case of a price dispute.\"}},\"notice\":\"Pre-DVM escalation contract that allows faster settlement and management of price requests.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol\":\"ManagedOptimisticOracleV2\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x85a70e2b1b65e9ba456add364d22b97eb9944083df1c39c0b4bd6a4b5aa386a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d32a33be6ca4d8e89b9e82e3f9cec7a6c4e040534152313ff55da85b8f193059\",\"dweb:/ipfs/QmeR55L8t2A8xZ1nvT5y4yVWfFbbmpaGAtGBMz3GGNpuyP\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol\":{\"keccak256\":\"0x2922ed589f7063a685dffc9297f8b669c1e86f2fde9078c08d8bff079cf636a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bd42676681a1c4563f61a767bfbc50ef207544a3d6eee9aa66830cc15ccb679\",\"dweb:/ipfs/QmRMCKEXNWJq1EdCjNQtTXf9tuppnyGtaiBCiNk3TYVcK1\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x6694b63ddb2c59bbe341c846171798350e8f72fa02189fcdeaca864e28b54e1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d945d33e2189ac4e531e4ed228f59ca957b3898c4f9051f4b8c7ae44d72b23a\",\"dweb:/ipfs/QmRcEwubTe3xyXxthijs5fVzEgUFSxeddjd5PGfhBnkunX\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol\":{\"keccak256\":\"0x956d6404c7b61b920a9ccbc9918f94a2bd3004de3dd13310995eda5bc17f1ead\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c12dc67a285548d455683db60f1ed845c03ac3c27f8f24f905defd3c54601406\",\"dweb:/ipfs/QmXDaxKsnq6RxH44VPSqxjLyygdXn3GR1o6W9pr2iXzjZq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol\":{\"keccak256\":\"0x21529ba6918f994ec44fb97cef2b717d730268e911a4e626f3e425a4394f7bae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10949be539eb61e5ea8996cc93f21be61949c16a1b717adc2b3f8f099c1e1feb\",\"dweb:/ipfs/QmagATozhFXBUVTLaiHWyqVPgew9N1x18V6hBF46AZPeLw\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508\",\"dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x27c3c648062924bd44cd6f38541c78e6de145dd49515ee62321e42fc1b72e5c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1cce2ebc0392b5a96f5c7bbaaf5c3d23c0e7190e64cfa05a49978badc1496141\",\"dweb:/ipfs/QmYQC1U12igR1osVyjRHaHiiTgYYuPjncAxwmjbZ452dCL\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/protocol/packages/core/contracts/common/implementation/AncillaryData.sol\":{\"keccak256\":\"0x8ff33ac32d3e6de25de9e0ac2c0ff9a621f187fa97e9ee84092b327471baa3ce\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0bbaed49756e8cf7ef405e132f441cd7a735ac6186a200b0179147e7d137b74a\",\"dweb:/ipfs/QmeSBJX5a61LZPxbkUKS2NF4LSxemgDwjD65fCAmyP7PX2\"]},\"lib/protocol/packages/core/contracts/common/implementation/Lockable.sol\":{\"keccak256\":\"0x41d78fcce54598ad5f26bc0b778c0f4fedbd836401625e49e736979f69a87ef0\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://4ce111bb50441ef5125e7d42284f6debbc17fd589515d7b8cede7e9d1d5f0ede\",\"dweb:/ipfs/QmaXiXACWVEDDHoCHNXdVBoNpf8QNHkUZ1kf5MfbxfL6jj\"]},\"lib/protocol/packages/core/contracts/data-verification-mechanism/implementation/Constants.sol\":{\"keccak256\":\"0xe40957105a9240c6bcb9753fd0011fe9f382c437cd6771c57bf7a96f8ceb9c84\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://cbf0d25e841b1f5c4022d09fb29220cb428139443cb29c4ab8dbfff71dffcc05\",\"dweb:/ipfs/QmSVVr5wH1tZi6WmKyuy1K8yS6JN4DeK5kWaZpPKtXiqkK\"]},\"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/FinderInterface.sol\":{\"keccak256\":\"0x9166fbfe08e954eb86d33c114fcde7ce4fd0dda5d9d28b31210582bfc769fa86\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e611e12bcaaebfdf65b67c566ff1d34708e757f01a445bd87c55862e89383b81\",\"dweb:/ipfs/QmYNSq5oopTShdS6j4VWKqoLxmQSRKmWebCxw6K4LfmKrf\"]},\"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/IdentifierWhitelistInterface.sol\":{\"keccak256\":\"0x9ae86a30dd1a8c03fb2c6d27be570bb30c4c0b13ac63cde8620b7e4b51d88dc9\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://a71d2aff48e075ecab56a9c9767775d1d77e04ec9191fed124e71003220549e3\",\"dweb:/ipfs/QmYPWsZXro6fzqpZY6UxQ5X8znEXfLp2sun8oXzdz8bTyc\"]},\"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/OracleAncillaryInterface.sol\":{\"keccak256\":\"0xd58b41fe1e389f7871db7c04f2c05c1aac1d0455bbc521534da81fd657016a1f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://cc532e9c550bb1bba0daa33fda748590cd06ce94a9566fe65dac04e7d40977bc\",\"dweb:/ipfs/QmZKvfRW2LJFt5MWZbKuU9ujkXnS2hkPUJVj8wwJWcuZGX\"]},\"src/common/implementation/AddressLegacy.sol\":{\"keccak256\":\"0x441f6c1a04ebb7ad44e54e1b9e3a6ca9f2468358842f93ec73e392f928daf85f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c2cba7f3e831503913b6a147eec2f5fc6a2c5cdf1df11ae65582a42c5680ecd\",\"dweb:/ipfs/QmdBEXFnViR66ibJeyjKNh2xJoY8v1y3u3u1D9UXdPawFA\"]},\"src/common/implementation/AddressWhitelist.sol\":{\"keccak256\":\"0x3849b2e73172d5d5f617a447137026cf3a779cc050441ad9b70613faee837596\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://ace04f18fe4e939c2f4fde32412407b23298129d2534efc1835dc8615a9ee7ff\",\"dweb:/ipfs/QmbNGpi9uD3j9ek3HhdBFuKrnb9YYXhAfvyJxSdRMFVB3P\"]},\"src/common/implementation/LockableUpgradeable.sol\":{\"keccak256\":\"0x1a10eec9d7f12b051d343c65016a9c60a4bece53da4da2eceb8a8dc007b336e2\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9b8c203e136583fa946e4ae0e7bc9774837f865f8b319daa97c84ceb8a16c95b\",\"dweb:/ipfs/QmPJPPL27TB8qt66ZHquDCYtuubcTStRqxn4nxQnehMdA2\"]},\"src/common/implementation/MultiCaller.sol\":{\"keccak256\":\"0x1cef2a13b361679c2ef5d0d97fcbb0ae0cf4858b97a6dd8ab68e3974ea5ffe4a\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://ad81f2964ce1b40a8ee56a56612d6b773f260e5a3381dc50cd85ba1f9f6af46f\",\"dweb:/ipfs/QmU3Pbxq8rMhGKqNiBa6vWqtiHw9RzdZ4zbTayhgGdyAnz\"]},\"src/common/interfaces/AddressWhitelistInterface.sol\":{\"keccak256\":\"0x126b2bc590041cf213c274bedc91c06a263ddff5e11a090be80d7db8b1cb0d8f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0f47e32816f895d4a3a060eded9bba7853eff6a6d99c3de5b4d1ca8359ce1c49\",\"dweb:/ipfs/QmVWt7xTr68owupHSUUJNfV2N3n2bTvTWtXCDtu8k3uVBN\"]},\"src/common/interfaces/FixedPointInterface.sol\":{\"keccak256\":\"0xceca09e6aa78c97698fa0b1f40657f6c3c723d5d94150ef6476affb9671df753\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://d5d1b01017749d96befb5c2e8a8c6d9dd041f57e1d9a66238c296cc28512d2e5\",\"dweb:/ipfs/QmVPiky59JTngjwZNdxbmD7H1Lwa5AgTjzv975wSnavFFy\"]},\"src/data-verification-mechanism/interfaces/StoreInterface.sol\":{\"keccak256\":\"0x1905509e908c6a9b8b3a89449d2d86fd7192d0e588cbe542edd21351d9971ee5\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://346e602f41469943453fbe039bf7554b23e1eba3128ff3858d32b35ebcc2ae88\",\"dweb:/ipfs/QmcjZ73TwMjondBDKEHyZ9KUjZzcxsy6Dmqs8QxPK3KBde\"]},\"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol\":{\"keccak256\":\"0x796cfee7a89d21648afefe822c2857cfeeae95a5f68af3b2a23abf24ab36bf09\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://42c764f9750ca2e8902c351b79b2b60abca80cb665fd47d04a9bf94e2d8732bb\",\"dweb:/ipfs/QmQ2nG1eaNBwAdgr2PF5FRDHtqctLL7HsnNF7xMFxyurdT\"]},\"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol\":{\"keccak256\":\"0x14157a690a9a3f56f7a5311cafc00a599412b1a451304b06abd4bc6e7ae1c968\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://fba453d2ef031ecb366a2cbe597a388e1344587e19f2f11f16c5287a93429313\",\"dweb:/ipfs/QmS7iPT9h261CpZUu2iNfqpLrZf983fM9k7RDqmA4tRz1k\"]},\"src/optimistic-oracle-v2/interfaces/ManagedOptimisticOracleV2Interface.sol\":{\"keccak256\":\"0x58457e5cfefc95b68c258fc8f9713d3810c0596a90e3af88b1242dc3320e4c26\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://323d4285faee8a2116e5e6bbaf2272235219f7f7c73735317639e59fac1e199c\",\"dweb:/ipfs/QmNu56eMiHRq4RPnG2amVEu7HiAmhNi1m9vdSks4gv58Yz\"]},\"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol\":{\"keccak256\":\"0x33a251fab5e475a286832db9bc3aabf7f597497f07e06c2da8779d4f486336d1\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e8789e875af4c98c16a085279a5dd545fe2fe32716e66c41343ea0edaf8fad9f\",\"dweb:/ipfs/QmQTzL8h24WkcfchRfSRrCysAfSprVCF2RNc4AMQTchTyZ\"]}},\"version\":1}","userdoc":{},"devdoc":{},"storageLayout":{"storage":[{"astId":11412,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"requests","offset":0,"slot":"0","type":"t_mapping(t_bytes32,t_struct(Request)11388_storage)"},{"astId":11639,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)49_storage"},{"astId":8163,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"_notEntered","offset":0,"slot":"50","type":"t_bool"},{"astId":8243,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)49_storage"},{"astId":9436,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"finder","offset":0,"slot":"100","type":"t_contract(FinderInterface)7719"},{"astId":9439,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"defaultLiveness","offset":0,"slot":"101","type":"t_uint256"},{"astId":11126,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)998_storage"},{"astId":8327,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"__gap","offset":0,"slot":"1100","type":"t_array(t_uint256)50_storage"},{"astId":8469,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"defaultProposerWhitelist","offset":0,"slot":"1150","type":"t_contract(AddressWhitelistInterface)8359"},{"astId":8472,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"requesterWhitelist","offset":0,"slot":"1151","type":"t_contract(AddressWhitelistInterface)8359"},{"astId":8480,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"customBonds","offset":0,"slot":"1152","type":"t_mapping(t_bytes32,t_mapping(t_contract(IERC20)2591,t_struct(CustomBond)8451_storage))"},{"astId":8485,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"customLivenessValues","offset":0,"slot":"1153","type":"t_mapping(t_bytes32,t_struct(CustomLiveness)8456_storage)"},{"astId":8490,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"customProposerWhitelists","offset":0,"slot":"1154","type":"t_mapping(t_bytes32,t_contract(AddressWhitelistInterface)8359)"},{"astId":8496,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"allowedBondRanges","offset":0,"slot":"1155","type":"t_mapping(t_contract(IERC20)2591,t_struct(BondRange)8439_storage)"},{"astId":8498,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"minimumLiveness","offset":0,"slot":"1156","type":"t_uint256"},{"astId":9344,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"__gap","offset":0,"slot":"1157","type":"t_array(t_uint256)993_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568","base":"t_uint256"},"t_array(t_uint256)50_storage":{"encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600","base":"t_uint256"},"t_array(t_uint256)993_storage":{"encoding":"inplace","label":"uint256[993]","numberOfBytes":"31776","base":"t_uint256"},"t_array(t_uint256)998_storage":{"encoding":"inplace","label":"uint256[998]","numberOfBytes":"31936","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_contract(AddressWhitelistInterface)8359":{"encoding":"inplace","label":"contract AddressWhitelistInterface","numberOfBytes":"20"},"t_contract(FinderInterface)7719":{"encoding":"inplace","label":"contract FinderInterface","numberOfBytes":"20"},"t_contract(IERC20)2591":{"encoding":"inplace","label":"contract IERC20","numberOfBytes":"20"},"t_int256":{"encoding":"inplace","label":"int256","numberOfBytes":"32"},"t_mapping(t_bytes32,t_contract(AddressWhitelistInterface)8359)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => contract AddressWhitelistInterface)","numberOfBytes":"32","value":"t_contract(AddressWhitelistInterface)8359"},"t_mapping(t_bytes32,t_mapping(t_contract(IERC20)2591,t_struct(CustomBond)8451_storage))":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => mapping(contract IERC20 => struct ManagedOptimisticOracleV2.CustomBond))","numberOfBytes":"32","value":"t_mapping(t_contract(IERC20)2591,t_struct(CustomBond)8451_storage)"},"t_mapping(t_bytes32,t_struct(CustomLiveness)8456_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct ManagedOptimisticOracleV2.CustomLiveness)","numberOfBytes":"32","value":"t_struct(CustomLiveness)8456_storage"},"t_mapping(t_bytes32,t_struct(Request)11388_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct OptimisticOracleV2Interface.Request)","numberOfBytes":"32","value":"t_struct(Request)11388_storage"},"t_mapping(t_contract(IERC20)2591,t_struct(BondRange)8439_storage)":{"encoding":"mapping","key":"t_contract(IERC20)2591","label":"mapping(contract IERC20 => struct ManagedOptimisticOracleV2.BondRange)","numberOfBytes":"32","value":"t_struct(BondRange)8439_storage"},"t_mapping(t_contract(IERC20)2591,t_struct(CustomBond)8451_storage)":{"encoding":"mapping","key":"t_contract(IERC20)2591","label":"mapping(contract IERC20 => struct ManagedOptimisticOracleV2.CustomBond)","numberOfBytes":"32","value":"t_struct(CustomBond)8451_storage"},"t_struct(BondRange)8439_storage":{"encoding":"inplace","label":"struct ManagedOptimisticOracleV2.BondRange","numberOfBytes":"32","members":[{"astId":8436,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"minimumBond","offset":0,"slot":"0","type":"t_uint128"},{"astId":8438,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"maximumBond","offset":16,"slot":"0","type":"t_uint128"}]},"t_struct(CustomBond)8451_storage":{"encoding":"inplace","label":"struct ManagedOptimisticOracleV2.CustomBond","numberOfBytes":"64","members":[{"astId":8448,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"amount","offset":0,"slot":"0","type":"t_uint256"},{"astId":8450,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"isSet","offset":0,"slot":"1","type":"t_bool"}]},"t_struct(CustomLiveness)8456_storage":{"encoding":"inplace","label":"struct ManagedOptimisticOracleV2.CustomLiveness","numberOfBytes":"64","members":[{"astId":8453,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"liveness","offset":0,"slot":"0","type":"t_uint256"},{"astId":8455,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"isSet","offset":0,"slot":"1","type":"t_bool"}]},"t_struct(Request)11388_storage":{"encoding":"inplace","label":"struct OptimisticOracleV2Interface.Request","numberOfBytes":"352","members":[{"astId":11367,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"proposer","offset":0,"slot":"0","type":"t_address"},{"astId":11369,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"disputer","offset":0,"slot":"1","type":"t_address"},{"astId":11372,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"currency","offset":0,"slot":"2","type":"t_contract(IERC20)2591"},{"astId":11374,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"settled","offset":20,"slot":"2","type":"t_bool"},{"astId":11377,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"requestSettings","offset":0,"slot":"3","type":"t_struct(RequestSettings)11365_storage"},{"astId":11379,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"proposedPrice","offset":0,"slot":"6","type":"t_int256"},{"astId":11381,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"resolvedPrice","offset":0,"slot":"7","type":"t_int256"},{"astId":11383,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"expirationTime","offset":0,"slot":"8","type":"t_uint256"},{"astId":11385,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"reward","offset":0,"slot":"9","type":"t_uint256"},{"astId":11387,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"finalFee","offset":0,"slot":"10","type":"t_uint256"}]},"t_struct(RequestSettings)11365_storage":{"encoding":"inplace","label":"struct OptimisticOracleV2Interface.RequestSettings","numberOfBytes":"96","members":[{"astId":11352,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"eventBased","offset":0,"slot":"0","type":"t_bool"},{"astId":11354,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"refundOnDispute","offset":1,"slot":"0","type":"t_bool"},{"astId":11356,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"callbackOnPriceProposed","offset":2,"slot":"0","type":"t_bool"},{"astId":11358,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"callbackOnPriceDisputed","offset":3,"slot":"0","type":"t_bool"},{"astId":11360,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"callbackOnPriceSettled","offset":4,"slot":"0","type":"t_bool"},{"astId":11362,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"bond","offset":0,"slot":"1","type":"t_uint256"},{"astId":11364,"contract":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2","label":"customLiveness","offset":0,"slot":"2","type":"t_uint256"}]},"t_uint128":{"encoding":"inplace","label":"uint128","numberOfBytes":"16"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"60a060405230608052348015610013575f5ffd5b5061001c610029565b610024610029565b6100db565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100795760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051615a6c6101015f395f8181612e5701528181612e800152612fc00152615a6c5ff3fe6080604052600436106103ea575f3560e01c806391d148541161020a578063b8b4f9081161011e578063cf6eefb7116100a8578063f327b07511610078578063f327b07514610d4d578063f38fdc0214610d6c578063fba7f1e314610d8c578063fe4e198314610dab578063ff8c1a8c14610dc0575f5ffd5b8063cf6eefb714610c9f578063d547741f14610cd9578063d602b9fd14610cf8578063e92706c614610d0c575f5ffd5b8063c371dda7116100ee578063c371dda714610c23578063c78ef28c14610c38578063cc8463c814610c58578063cdb21cc614610c6c578063cefc142914610c8b575f5ffd5b8063b8b4f90814610b9a578063b9a3c84c14610bb9578063ba4b930c14610bd8578063bc58ccaa14610c04575f5ffd5b8063ab328fb21161019f578063af5d2f391161016f578063af5d2f3914610a92578063afe1fcff14610ab1578063b4988fd014610afc578063b6cdb8ee14610b1b578063b873c4df14610b3a575f5ffd5b8063ab328fb2146109ea578063ac9650d814610a0a578063ad3cb1cc14610a36578063ad5a755a14610a73575f5ffd5b8063a1eda53c116101da578063a1eda53c1461095e578063a217fddf146107db578063a625b01e14610991578063a9904f9b146109be575f5ffd5b806391d148541461080457806391f58dcb1461082357806393ae2ebd146108425780639d86698514610861575f5ffd5b80634f1ef286116103015780636b821d061161029657806384ef8ffc1161026657806384ef8ffc1461077e5780638aca6afc146107925780638da5cb5b146107c75780638ffc2120146107db57806391152f10146107ee575f5ffd5b80636b821d061461070257806376c7823f146107215780637746e7ae146107405780637c82288f1461075f575f5ffd5b80635e9a79a9116102d15780635e9a79a914610686578063634e93da146106a5578063649a5ec7146106c45780636982ece0146106e3575f5ffd5b80634f1ef2861461062157806352d1902d1461063457806353b59239146106485780635845e68a14610667575f5ffd5b80632589382b11610382578063347b4dba11610352578063347b4dba1461059157806336568abe146105b0578063473c45fe146105cf5780634835698a146105ee5780634ccb56f51461060d575f5ffd5b80632589382b1461050957806329cb924d146105415780632f2ff15d1461055357806332ecce9e14610572575f5ffd5b8063120698af116103bd578063120698af1461048d5780631480db39146104ac5780631fa50cef146104cb578063248a9ca3146104ea575f5ffd5b806301ffc9a7146103ee578063022d63fb146104225780630aa6220b1461044a57806311df92f114610460575b5f5ffd5b3480156103f9575f5ffd5b5061040d610408366004614909565b610dd7565b60405190151581526020015b60405180910390f35b34801561042d575f5ffd5b50620697805b60405165ffffffffffff9091168152602001610419565b348015610455575f5ffd5b5061045e610e01565b005b34801561046b575f5ffd5b5061047f61047a366004614a00565b610e16565b604051908152602001610419565b348015610498575f5ffd5b5061045e6104a7366004614a65565b610eb7565b3480156104b7575f5ffd5b5061045e6104c6366004614ac0565b610f2f565b3480156104d6575f5ffd5b5061045e6104e5366004614ac0565b610f91565b3480156104f5575f5ffd5b5061047f610504366004614adb565b610fc8565b348015610514575f5ffd5b5061047f54610529906001600160a01b031681565b6040516001600160a01b039091168152602001610419565b34801561054c575f5ffd5b504261047f565b34801561055e575f5ffd5b5061045e61056d366004614af2565b610fe8565b34801561057d575f5ffd5b5061045e61058c366004614adb565b611014565b34801561059c575f5ffd5b5061045e6105ab366004614b20565b611043565b3480156105bb575f5ffd5b5061045e6105ca366004614af2565b611109565b3480156105da575f5ffd5b5061045e6105e9366004614b87565b6111cb565b3480156105f9575f5ffd5b5061047f610608366004614bda565b61123a565b348015610618575f5ffd5b5061047f611270565b61045e61062f366004614c18565b611280565b34801561063f575f5ffd5b5061047f61129b565b348015610653575f5ffd5b5061047f610662366004614a65565b6112b6565b348015610672575f5ffd5b5061045e610681366004614c64565b611313565b348015610691575f5ffd5b5061047f6106a0366004614ca2565b61134b565b3480156106b0575f5ffd5b5061045e6106bf366004614ac0565b61137a565b3480156106cf575f5ffd5b5061045e6106de366004614d00565b61138d565b3480156106ee575f5ffd5b5061045e6106fd366004614d25565b6113a0565b34801561070d575f5ffd5b5061045e61071c366004614ac0565b611457565b34801561072c575f5ffd5b5061047f61073b366004614d64565b611486565b34801561074b575f5ffd5b5061052961075a366004614bda565b6117ee565b34801561076a575f5ffd5b5061047f610779366004614dd4565b61181f565b348015610789575f5ffd5b50610529611a02565b34801561079d575f5ffd5b506105296107ac366004614adb565b6104826020525f90815260409020546001600160a01b031681565b3480156107d2575f5ffd5b50610529611a1d565b3480156107e6575f5ffd5b5061047f5f81565b3480156107f9575f5ffd5b5061047f6104845481565b34801561080f575f5ffd5b5061040d61081e366004614af2565b611a2b565b34801561082e575f5ffd5b5061045e61083d366004614a65565b611a61565b34801561084d575f5ffd5b5061045e61085c366004614e4e565b611add565b34801561086c575f5ffd5b5061094861087b366004614adb565b5f6020818152918152604090819020805460018201546002830154845160e081018652600385015460ff8082161515835261010082048116151598830198909852620100008104881615159682019690965263010000008604871615156060820152640100000000909504861615156080860152600484015460a0860152600584015460c08601526006840154600785015460088601546009870154600a909701546001600160a01b03968716999587169896851697600160a01b9095049095169594929391929091908a565b6040516104199a99989796959493929190614edc565b348015610969575f5ffd5b50610972611c48565b6040805165ffffffffffff938416815292909116602083015201610419565b34801561099c575f5ffd5b506109b06109ab366004614bda565b611cb7565b604051610419929190614f43565b3480156109c9575f5ffd5b506109dd6109d8366004614ca2565b611d97565b6040516104199190614f9b565b3480156109f5575f5ffd5b5061047e54610529906001600160a01b031681565b348015610a15575f5ffd5b50610a29610a24366004615048565b611f44565b60405161041991906150e5565b348015610a41575f5ffd5b50610a66604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516104199190615148565b348015610a7e575f5ffd5b5061047f610a8d366004614b87565b61208a565b348015610a9d575f5ffd5b50610a66610aac36600461515a565b612109565b348015610abc575f5ffd5b50610ae7610acb366004614adb565b6104816020525f90815260409020805460019091015460ff1682565b60408051928352901515602083015201610419565b348015610b07575f5ffd5b5061045e610b1636600461519d565b612115565b348015610b26575f5ffd5b5061045e610b35366004614ac0565b612210565b348015610b45575f5ffd5b50610b7a610b54366004614ac0565b6104836020525f90815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610419565b348015610ba5575f5ffd5b5061047f610bb43660046151dc565b612272565b348015610bc4575f5ffd5b50606454610529906001600160a01b031681565b348015610be3575f5ffd5b50610bf7610bf2366004614ca2565b612281565b6040516104199190615255565b348015610c0f575f5ffd5b5061040d610c1e366004614ca2565b612296565b348015610c2e575f5ffd5b5061047f61200081565b348015610c43575f5ffd5b5061047f5f5160206159775f395f51905f5281565b348015610c63575f5ffd5b50610433612304565b348015610c77575f5ffd5b5061045e610c8636600461527b565b61237f565b348015610c96575f5ffd5b5061045e612535565b348015610caa575f5ffd5b50610cb3612574565b604080516001600160a01b03909316835265ffffffffffff909116602083015201610419565b348015610ce4575f5ffd5b5061045e610cf3366004614af2565b6125a1565b348015610d03575f5ffd5b5061045e6125c9565b348015610d17575f5ffd5b50610ae7610d26366004614af2565b61048060209081525f92835260408084209091529082529020805460019091015460ff1682565b348015610d58575f5ffd5b5061045e610d67366004615360565b6125db565b348015610d77575f5ffd5b5061047f5f5160206159d75f395f51905f5281565b348015610d97575f5ffd5b5061047f610da6366004614ca2565b612681565b348015610db6575f5ffd5b5061047f60655481565b348015610dcb575f5ffd5b5061047f600160ff1b81565b5f6001600160e01b031982166318a4c3c360e11b1480610dfb5750610dfb8261268f565b92915050565b5f610e0b816126c3565b610e136126cd565b50565b61047f54604051631d1d5b3960e11b81523360048201525f916001600160a01b031690633a3ab67290602401602060405180830381865afa158015610e5d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8191906153e3565b610e9e57604051630f3c7c2760e01b815260040160405180910390fd5b610eab86868686866126d9565b90505b95945050505050565b610ebf612b74565b610ec7612b97565b6001610ed533858585612ba3565b6006811115610ee657610ee6615241565b14610f0457604051633a4e124d60e11b815260040160405180910390fd5b5f610f1133858585612cd5565b600301805461ffff191661010117905550610f2a612cfb565b505050565b610f37612b74565b610f3f612b97565b610f565f5160206159d75f395f51905f52826125a1565b6040516001600160a01b038216907ffed5843dda9e5d83f59e467c52752f2241404c2a28c007aff779c3d8efeed2e6905f90a2610e13612cfb565b610f99612b74565b610fa1612b97565b610fb75f5160206159775f395f51905f526126c3565b610fc081612d0a565b610e13612cfb565b5f9081525f5160206159f75f395f51905f52602052604090206001015490565b8161100657604051631fe1e13d60e11b815260040160405180910390fd5b6110108282612d5d565b5050565b61101c612b74565b611024612b97565b61103a5f5160206159775f395f51905f526126c3565b610fc081612d79565b61104b612b74565b611053612b97565b6110695f5160206159d75f395f51905f526126c3565b6001600160a01b038116156110815761108181612dbe565b5f61108d85858561123a565b5f81815261048260205260409081902080546001600160a01b0319166001600160a01b038616908117909155905191925090859083907f6176bed8b34e20579b664c32ad00534f173e1f7c4410232beef89bed4464ddc0906110f2908a9089906153fe565b60405180910390a450611103612cfb565b50505050565b5f5160206159b75f395f51905f528215801561113d5750611128611a02565b6001600160a01b0316826001600160a01b0316145b156111c1575f5f61114c612574565b90925090506001600160a01b03821615158061116e575065ffffffffffff8116155b8061118157504265ffffffffffff821610155b156111ae576040516319ca5ebb60e01b815265ffffffffffff821660048201526024015b60405180910390fd5b5050805465ffffffffffff60a01b191681555b610f2a8383612dec565b6111d3612b74565b6111db612b97565b60016111e933868686612ba3565b60068111156111fa576111fa615241565b1461121857604051633a4e124d60e11b815260040160405180910390fd5b61122181612e1f565b8061122e33868686612cd5565b60050155611103612cfb565b5f83838360405160200161125093929190615438565b6040516020818303038152906040528051906020012090505b9392505050565b61127d6035612000615470565b81565b611288612e4c565b61129182612ef0565b6110108282612ef9565b5f6112a4612fb5565b505f5160206159975f395f51905f5290565b5f6112bf612b74565b6112c7612b97565b60066112d533868686612ba3565b60068111156112e6576112e6615241565b146112f9576112f733858585612ffe565b505b61130533858585612cd5565b600701549050611269612cfb565b61131b612b74565b611323612b97565b6113395f5160206159775f395f51905f526126c3565b61134382826132f7565b611010612cfb565b5f611354612b74565b61135c612b97565b61136885858585612ffe565b9050611372612cfb565b949350505050565b5f611384816126c3565b6110108261346a565b5f611397816126c3565b611010826134d5565b6113a8612b74565b6113b0612b97565b6113c65f5160206159d75f395f51905f526126c3565b6113cf81612e1f565b5f6113db85858561123a565b604080518082018252848152600160208083018281525f8681526104819092529084902092518355519101805460ff19169115159190911790555190915084906001600160a01b0387169083907fc5314bcb93c25473b858a5086195e309861a64b4c3ddae4d0a5cb9c5fb6f30f4906110f29088908890615483565b61145f612b74565b611467612b97565b61147d5f5160206159775f395f51905f526126c3565b610fc081613544565b5f61148f612b74565b611497612b97565b6001600160a01b0386166114be5760405163bef5ceeb60e01b815260040160405180910390fd5b60026114cc86868686612ba3565b60068111156114dd576114dd615241565b146114fb57604051631bc1990760e31b815260040160405180910390fd5b5f61150886868686612cd5565b6001810180546001600160a01b0319166001600160a01b038a16179055600a81015460048201549192509061153d82826154a4565b9350831561155f57600283015461155f906001600160a01b0316333087613597565b5f6115686135fe565b90505f61157485613671565b61157e90856154a4565b9050801561161657600285015461159f906001600160a01b03168383613684565b6115a76135fe565b600286015460408051602081018252848152905163432ce91960e11b81526001600160a01b03928316600482015290516024820152911690638659d232906044015f604051808303815f87803b1580156115ff575f5ffd5b505af1158015611611573d5f5f3e3d5ffd5b505050505b61161e61370b565b6001600160a01b031663216666a48a611637888c613744565b6116418b8f61378f565b6040518463ffffffff1660e01b815260040161165f939291906154b7565b5f604051808303815f87803b158015611676575f5ffd5b505af1158015611688573d5f5f3e3d5ffd5b50505060098601545f9150158015906116aa57506003860154610100900460ff165b156116d357506009850180545f90915560028601546116d3906001600160a01b03168c836137bf565b8b6001600160a01b0316865f015f9054906101000a90046001600160a01b03166001600160a01b03168c6001600160a01b03167f5165909c3d1c01c5d1e121ac6f6d01dda1ba24bc9e1f975b5a375339c15be7f38d8d8d8c6006015460405161173f94939291906154d5565b60405180910390a461174f612cfb565b6001600160a01b038b163b15158015611773575060038601546301000000900460ff165b156117d8576040516306c791b960e11b81526001600160a01b038c1690630d8f2372906117aa908d908d908d9087906004016154d5565b5f604051808303815f87803b1580156117c1575f5ffd5b505af11580156117d3573d5f5f3e3d5ffd5b505050505b6117e0612b97565b505050505050610eae612cfb565b5f6104825f6117fe86868661123a565b815260208101919091526040015f20546001600160a01b0316949350505050565b5f5f61182d87878787612cd5565b90505f61183b88888761123a565b5f8181526104806020908152604080832060028701546001600160a01b0316845290915290206001015490915060ff161561189d575f8181526104806020908152604080832060028601546001600160a01b0316845290915290205460048301555b5f818152610481602052604090206001015460ff16156118cc575f818152610481602052604090205460058301555b5f6118d88989886137f0565b604051631d1d5b3960e11b81526001600160a01b038c8116600483015291925090821690633a3ab67290602401602060405180830381865afa158015611920573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061194491906153e3565b61196157604051636ffe5a9560e01b815260040160405180910390fd5b604051631d1d5b3960e11b81523360048201526001600160a01b03821690633a3ab67290602401602060405180830381865afa1580156119a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c791906153e3565b6119e457604051637ed449a960e01b815260040160405180910390fd5b6119f28a8a8a8a8a8a613835565b93505050505b9695505050505050565b5f516020615a175f395f51905f52546001600160a01b031690565b5f611a26611a02565b905090565b5f9182525f5160206159f75f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611a69612b74565b611a71612b97565b6001611a7f33858585612ba3565b6006811115611a9057611a90615241565b14611aae57604051633a4e124d60e11b815260040160405180910390fd5b6001611abc33858585612cd5565b60030180549115156101000261ff0019909216919091179055610f2a612cfb565b611ae5612b74565b611aed612b97565b611b035f5160206159d75f395f51905f526126c3565b611b0b613a64565b604051631d1d5b3960e11b81526001600160a01b0384811660048301529190911690633a3ab67290602401602060405180830381865afa158015611b51573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7591906153e3565b611b9257604051631131fa7160e11b815260040160405180910390fd5b611b9c8282613aaa565b5f611ba886868661123a565b604080518082018252848152600160208083018281525f86815261048083528581206001600160a01b038b168083529352859020935184555192909101805460ff191692151592909217909155905191925090869083907f4544c320b43beb5421d5149ff92fa72b40f00ac65294c4b8ca3906f08fb5a8c290611c30908b908a908990615504565b60405180910390a450611c41612cfb565b5050505050565b5f516020615a175f395f51905f52545f90600160d01b900465ffffffffffff165f5160206159b75f395f51905f528115801590611c8d57504265ffffffffffff831610155b611c98575f5f611cae565b6001810154600160a01b900465ffffffffffff16825b92509250509091565b60605f5f611cc68686866137f0565b9050806001600160a01b031663d01f63f56040518163ffffffff1660e01b81526004015f60405180830381865afa158015611d03573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d2a9190810190615537565b816001600160a01b031663184d69ab6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d66573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d8a91906153e3565b9250925050935093915050565b611e1d60408051610140810182525f80825260208083018290528284018290526060808401839052845160e081018652838152918201839052938101829052928301819052608083810182905260a0840182905260c084019190915290919082019081526020015f81526020015f81526020015f81526020015f81526020015f81525090565b611e25612b74565b611e3185858585612cd5565b604080516101408101825282546001600160a01b0390811682526001840154811660208084019190915260028501549182168385015260ff600160a01b90920482161515606080850191909152845160e08082018752600388015480861615158352610100808204871615159584019590955262010000810486161515978301979097526301000000870485161515928201929092526401000000009095049092161515608085810191909152600486015460a080870191909152600587015460c08088019190915291850195909552600686015494840194909452600785015493830193909352600884015490820152600983015491810191909152600a909101546101208201529050949350505050565b6060816001600160401b03811115611f5e57611f5e614930565b604051908082528060200260200182016040528015611f9157816020015b6060815260200190600190039081611f7c5790505b5090505f5b82811015612083575f8030868685818110611fb357611fb36155de565b9050602002810190611fc591906155f2565b604051611fd392919061563b565b5f60405180830381855af49150503d805f811461200b576040519150601f19603f3d011682016040523d82523d5f602084013e612010565b606091505b50915091508161205b57604481511015612028575f5ffd5b60048101905080806020019051810190612042919061564a565b60405162461bcd60e51b81526004016111a59190615148565b8084848151811061206e5761206e6155de565b60209081029190910101525050600101611f96565b5092915050565b5f612093612b74565b61209b612b97565b60016120a933878787612ba3565b60068111156120ba576120ba615241565b146120d857604051633a4e124d60e11b815260040160405180910390fd5b5f6120e533878787612cd5565b60048101849055600a8101549091506120fe90846154a4565b915050611372612cfb565b6060611269838361378f565b5f61211e613b5b565b805490915060ff600160401b82041615906001600160401b03165f811580156121445750825b90505f826001600160401b0316600114801561215f5750303b155b90508115801561216d575080155b1561218b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156121b557845460ff60401b1916600160401b1785555b6121c0888888613b83565b831561220657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b612218612b74565b612220612b97565b6122375f5160206159d75f395f51905f5282610fe8565b6040516001600160a01b038216907f824f6fd7083aebf3e4245045a366a32f9489c6ce94efaba90ec0abbd10ddb1fb905f90a2610e13612cfb565b5f610eab33878787878761181f565b5f61228a612b74565b610eae85858585612ba3565b5f61229f612b74565b5f6122ac86868686612ba3565b905060068160068111156122c2576122c2615241565b14806122df575060058160068111156122dd576122dd615241565b145b806119f8575060038160068111156122f9576122f9615241565b149695505050505050565b5f516020615a175f395f51905f52545f905f5160206159b75f395f51905f5290600160d01b900465ffffffffffff16801580159061234957504265ffffffffffff8216105b612363578154600160d01b900465ffffffffffff16612378565b6001820154600160a01b900465ffffffffffff165b9250505090565b5f612388613b5b565b805490915060ff600160401b82041615906001600160401b03165f811580156123ae5750825b90505f826001600160401b031660011480156123c95750303b155b9050811580156123d7575080155b156123f55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561241f57845460ff60401b1916600160401b1785555b61242a8e8e88613b83565b6124415f5160206159775f395f51905f5288613bb2565b506124665f5160206159d75f395f51905f525f5160206159775f395f51905f52613c1e565b61246f8c612d0a565b6124788b613544565b5f5b898110156124d5576124cd8b8b83818110612497576124976155de565b6124ad9260206060909202019081019150614ac0565b8c8c848181106124bf576124bf6155de565b9050606002016020016132f7565b60010161247a565b506124df88612d79565b831561252557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050505050565b5f61253e612574565b509050336001600160a01b0382161461256c57604051636116401160e11b81523360048201526024016111a5565b610e13613c46565b5f5160206159b75f395f51905f52546001600160a01b03811691600160a01b90910465ffffffffffff1690565b816125bf57604051631fe1e13d60e11b815260040160405180910390fd5b6110108282613cdf565b5f6125d3816126c3565b610e13613cfb565b6125e3612b74565b6125eb612b97565b60016125f933888888612ba3565b600681111561260a5761260a615241565b1461262857604051633a4e124d60e11b815260040160405180910390fd5b5f61263533888888612cd5565b600301805463ffff00001916620100008615150263ff0000001916176301000000851515021764ff0000000019166401000000008415150217905550612679612cfb565b505050505050565b5f610eae3386868686611486565b5f6001600160e01b03198216637965db0b60e01b1480610dfb57506301ffc9a760e01b6001600160e01b0319831614610dfb565b610e138133613d05565b6126d75f5f613d3e565b565b5f6126e2612b74565b6126ea612b97565b5f6126f733888888612ba3565b600681111561270857612708615241565b146127265760405163f757fcff60e01b815260040160405180910390fd5b61272e613e16565b6001600160a01b03166390978d1b876040518263ffffffff1660e01b815260040161275b91815260200190565b602060405180830381865afa158015612776573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061279a91906153e3565b6127b7576040516356175d8f60e01b815260040160405180910390fd5b6127bf613a64565b604051631d1d5b3960e11b81526001600160a01b0385811660048301529190911690633a3ab67290602401602060405180830381865afa158015612805573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061282991906153e3565b61284657604051631131fa7160e11b815260040160405180910390fd5b42851115612867576040516347860b9760e01b815260040160405180910390fd5b6128746035612000615470565b8451111561289557604051630a56acd960e01b815260040160405180910390fd5b5f61289e6135fe565b604051635b97aadd60e01b81526001600160a01b0386811660048301529190911690635b97aadd90602401602060405180830381865afa1580156128e4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061290891906156be565b5f015190506040518061014001604052805f6001600160a01b031681526020015f6001600160a01b03168152602001856001600160a01b031681526020015f151581526020016040518060e001604052805f151581526020015f151581526020015f151581526020015f151581526020015f151581526020018481526020015f81525081526020015f81526020015f81526020015f8152602001848152602001828152505f5f6129ba338b8b8b613e5c565b815260208082019290925260409081015f20835181546001600160a01b03199081166001600160a01b039283161783558585015160018401805490921690831617905584830151600283018054606080890151939094166001600160a81b031990911617600160a01b9215159290920291909117905560808086015180516003850180549783015196830151948301519383015161ffff1990981691151561ff0019169190911761010096151587021763ffff00001916620100009415159490940263ff0000001916939093176301000000921515929092029190911764ff0000000019166401000000009515159590950294909417905560a080840151600483015560c0938401516005830155840151600682015591830151600783015560e08301516008830155820151600982015561012090910151600a909101558215612b1357612b136001600160a01b038516333086613597565b336001600160a01b03167ff1679315ff325c257a944e0ca1bfe7b26616039e9511f9610d4ba3eca851027b888888888887604051612b56969594939291906156ff565b60405180910390a2612b69816002615744565b915050610eae612cfb565b60325460ff166126d757604051633ee5aeb560e01b815260040160405180910390fd5b6032805460ff19169055565b5f5f612bb186868686612cd5565b60028101549091506001600160a01b0316612bcf575f915050611372565b80546001600160a01b0316612be8576001915050611372565b6002810154600160a01b900460ff1615612c06576006915050611372565b60018101546001600160a01b0316612c36574281600801541115612c2b576002612c2e565b60035b915050611372565b612c3e61370b565b6001600160a01b031663b551cd5086612c578488613744565b612c61878b61378f565b6040518463ffffffff1660e01b8152600401612c7f939291906154b7565b602060405180830381865afa158015612c9a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cbe91906153e3565b612cc95760046119f8565b50600595945050505050565b5f5f5f612ce487878787613e5c565b81526020019081526020015f209050949350505050565b6032805460ff19166001179055565b612d1381612dbe565b61047e80546001600160a01b0319166001600160a01b0383169081179091556040517fe983c4450684b2324d78afaa992b88be67cf4d3919d7a6539ca774d7bb5189f4905f90a250565b612d6682610fc8565b612d6f816126c3565b6111038383613bb2565b612d8281613e94565b6104848190556040518181527fc41d1b4ad42d6f594ce26dc949c6aa711df74301f1f2c17b3a36d30c9761abf39060200160405180910390a150565b612dcf81634e759c3d60e11b613ed8565b610e13576040516367cc38ef60e01b815260040160405180910390fd5b6001600160a01b0381163314612e155760405163334bd91960e11b815260040160405180910390fd5b610f2a8282613ef3565b61048454811015612e43576040516337d02b5d60e21b815260040160405180910390fd5b610e1381613e94565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612ed257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612ec65f5160206159975f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156126d75760405163703e46dd60e11b815260040160405180910390fd5b610e135f6126c3565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612f53575060408051601f3d908101601f19168201909252612f509181019061575b565b60015b612f7b57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016111a5565b5f5160206159975f395f51905f528114612fab57604051632a87526960e21b8152600481018290526024016111a5565b610f2a8383613f4a565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146126d75760405163703e46dd60e11b815260040160405180910390fd5b5f5f61300c86868686612ba3565b90505f61301b87878787612cd5565b60028101805460ff60a01b1916600160a01b1790559050600382600681111561304657613046615241565b0361309e57600681015460078201556009810154600a820154600483015461306e91906154a4565b61307891906154a4565b81546002830154919450613099916001600160a01b039081169116856137bf565b6131f3565b60058260068111156130b2576130b2615241565b036131da576130bf61370b565b6001600160a01b031663719c6d56876130d88489613744565b6130e2888c61378f565b6040518463ffffffff1660e01b8152600401613100939291906154b7565b602060405180830381865afa15801561311b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061313f919061575b565b6007820181905560068201546004830154911415905f61315e84613671565b6131689083615470565b9050836009015484600a0154828461318091906154a4565b61318a91906154a4565b61319491906154a4565b95506131d2836131ae5784546001600160a01b03166131bd565b60018501546001600160a01b03165b60028601546001600160a01b031690886137bf565b5050506131f3565b604051639c71cb8360e01b815260040160405180910390fd5b6001810154815460078301546040516001600160a01b0393841693928316928b16917f3f384afb4bd9f0aef0298c80399950011420eb33b0e1a750b20966270247b9a091613248918c918c918c918c90615772565b60405180910390a4613258612cfb565b6001600160a01b0387163b1515801561327d57506003810154640100000000900460ff165b156132e55760078101546040516304cc1fd560e01b81526001600160a01b038916916304cc1fd5916132b7918a918a918a916004016154d5565b5f604051808303815f87803b1580156132ce575f5ffd5b505af11580156132e0573d5f5f3e3d5ffd5b505050505b6132ed612b97565b5050949350505050565b6132ff613a64565b604051631d1d5b3960e11b81526001600160a01b0384811660048301529190911690633a3ab67290602401602060405180830381865afa158015613345573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061336991906153e3565b61338657604051631131fa7160e11b815260040160405180910390fd5b61339660408201602083016157b8565b6001600160801b03166133ac60208301836157b8565b6001600160801b031611156133d457604051635b1a743760e01b815260040160405180910390fd5b6001600160a01b0382165f9081526104836020526040902081906133f882826157d3565b50506001600160a01b0382167f143b6bf2ebf8381dc4db7edfc69b944d4a518b2be84f1d6230aecb2b698100e461343260208401846157b8565b61344260408501602086016157b8565b604080516001600160801b039384168152929091166020830152015b60405180910390a25050565b5f613473612304565b61347c42613f9f565b6134869190615824565b90506134928282613fd5565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200161345e565b5f6134df8261405f565b6134e842613f9f565b6134f29190615824565b90506134fe8282613d3e565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b61354d81612dbe565b61047f80546001600160a01b0319166001600160a01b0383169081179091556040517fab1796ea525d29607f67aabc405756efd2fc7c4eb2531e627f6ec697ac618a8e905f90a250565b6040516001600160a01b0384811660248301528381166044830152606482018390526111039186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506140a6565b6064546040516302abf57960e61b81526453746f726560d81b60048201525f916001600160a01b03169063aafd5e40906024015b602060405180830381865afa15801561364d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a269190615842565b60048101545f90610dfb90600290615871565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156136d1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136f5919061575b565b9050611103848461370685856154a4565b614112565b6064546040516302abf57960e61b8152654f7261636c6560d01b60048201525f916001600160a01b03169063aafd5e4090602401613632565b60038201545f9060ff16156137885760058301545f9081036137685760655461376e565b60058401545b90508084600801546137809190615470565b915050610dfb565b5080610dfb565b6060611269836040518060400160405280600b81526020016a37b7a932b8bab2b9ba32b960a91b815250846141a1565b6040516001600160a01b03838116602483015260448201839052610f2a91859182169063a9059cbb906064016135cc565b5f6104825f61380086868661123a565b815260208101919091526040015f20546001600160a01b0316905080611269575061047e546001600160a01b03169392505050565b5f61383e612b74565b613846612b97565b6001600160a01b03871661386d5760405163062a0f5b60e21b815260040160405180910390fd5b600161387b87878787612ba3565b600681111561388c5761388c615241565b146138aa57604051633a4e124d60e11b815260040160405180910390fd5b5f6138b787878787612cd5565b600381015490915060ff16156138eb57600160ff1b83036138eb5760405163cad802eb60e01b815260040160405180910390fd5b80546001600160a01b0319166001600160a01b0389161781556006810183905560058101545f0361391e57606554613924565b60058101545b61392e90426154a4565b6008820155600a810154600482015461394791906154a4565b91508115613969576002810154613969906001600160a01b0316333085613597565b600881015460028201546040516001600160a01b038b8116938b8216937f6e51dd00371aabffa82cd401592f76ed51e98a9ea4b58751c70463a2c78b5ca1936139bd938d938d938d938d9390911690615890565b60405180910390a36139cd612cfb565b6001600160a01b0387163b151580156139f05750600381015462010000900460ff165b15613a5357604051639c2fd1df60e01b81526001600160a01b03881690639c2fd1df90613a25908990899089906004016154b7565b5f604051808303815f87803b158015613a3c575f5ffd5b505af1158015613a4e573d5f5f3e3d5ffd5b505050505b613a5b612b97565b506119f8612cfb565b6064546040516302abf57960e61b81527210dbdb1b185d195c985b15da1a5d195b1a5cdd606a1b60048201525f916001600160a01b03169063aafd5e4090602401613632565b805f03613aca57604051634935f70160e11b815260040160405180910390fd5b6001600160a01b0382165f90815261048360209081526040918290208251808401909352546001600160801b03808216808552600160801b9092041691830191909152821015613b2d5760405163dba3b86160e01b815260040160405180910390fd5b80602001516001600160801b0316821115610f2a57604051631f7b5d6160e01b815260040160405180910390fd5b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610dfb565b613b8b6141e6565b613b9361420b565b613ba06203f48082614213565b613ba8614225565b610f2a838361422d565b5f5f5160206159b75f395f51905f5283613c14575f613bcf611a02565b6001600160a01b031614613bf657604051631fe1e13d60e11b815260040160405180910390fd5b6001810180546001600160a01b0319166001600160a01b0385161790555b611372848461425f565b81613c3c57604051631fe1e13d60e11b815260040160405180910390fd5b6110108282614300565b5f5160206159b75f395f51905f525f80613c5e612574565b91509150613c738165ffffffffffff16151590565b1580613c8757504265ffffffffffff821610155b15613caf576040516319ca5ebb60e01b815265ffffffffffff821660048201526024016111a5565b613cc05f613cbb611a02565b613ef3565b50613ccb5f83613bb2565b505081546001600160d01b03191690915550565b613ce882610fc8565b613cf1816126c3565b6111038383613ef3565b6126d75f5f613fd5565b613d0f8282611a2b565b6110105760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016111a5565b5f516020615a175f395f51905f52545f5160206159b75f395f51905f5290600160d01b900465ffffffffffff168015613dd8574265ffffffffffff82161015613daf57600182015482546001600160d01b0316600160a01b90910465ffffffffffff16600160d01b02178255613dd8565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5905f90a15b5060010180546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b6064546040516302abf57960e61b8152721259195b9d1a599a595c95da1a5d195b1a5cdd606a1b60048201525f916001600160a01b03169063aafd5e4090602401613632565b5f84848484604051602001613e7494939291906158d5565b604051602081830303815290604052805190602001209050949350505050565b63bb7448008110613eb85760405163cb40339f60e01b815260040160405180910390fd5b5f8111610e135760405163fa050ec160e01b815260040160405180910390fd5b5f613ee283614360565b801561126957506112698383614392565b5f5f5160206159b75f395f51905f5283158015613f285750613f13611a02565b6001600160a01b0316836001600160a01b0316145b15613f40576001810180546001600160a01b03191690555b6113728484614418565b613f5382614491565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115613f9757610f2a82826144f4565b61101061455d565b5f65ffffffffffff821115613fd1576040516306dfcc6560e41b815260306004820152602481018390526044016111a5565b5090565b5f5160206159b75f395f51905f525f613fec612574565b835465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b03881617178455915061402c90508165ffffffffffff16151590565b15611103576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109905f90a150505050565b5f5f614069612304565b90508065ffffffffffff168365ffffffffffff16116140915761408c83826158ff565b611269565b61126965ffffffffffff84166206978061457c565b5f5f60205f8451602086015f885af1806140c5576040513d5f823e3d81fd5b50505f513d915081156140dc5780600114156140e9565b6001600160a01b0384163b155b1561110357604051635274afe760e01b81526001600160a01b03851660048201526024016111a5565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614163848261458b565b611103576040516001600160a01b0384811660248301525f604483015261419791869182169063095ea7b3906064016135cc565b61110384826140a6565b60605f6141ae85856145d0565b905084816141bb85614612565b6040516020016141cd9392919061591d565b6040516020818303038152906040529150509392505050565b6141ee61467a565b6126d757604051631afcd79f60e31b815260040160405180910390fd5b6126d76141e6565b61421b6141e6565b6110108282614693565b612cfb6141e6565b6142356141e6565b606480546001600160a01b0319166001600160a01b03831617905561425982612e1f565b50606555565b5f5f5160206159f75f395f51905f526142788484611a2b565b6142f7575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556142ad3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610dfb565b5f915050610dfb565b5f5160206159f75f395f51905f525f61431884610fc8565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b5f614372826301ffc9a760e01b614392565b8015610dfb575061438b826001600160e01b0319614392565b1592915050565b6040516001600160e01b0319821660248201525f90819060440160408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b17815282519293505f9283928392909183918a617530fa92503d91505f519050828015614402575060208210155b801561440d57505f81115b979650505050505050565b5f5f5160206159f75f395f51905f526144318484611a2b565b156142f7575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610dfb565b806001600160a01b03163b5f036144c657604051634c9c8ce360e01b81526001600160a01b03821660048201526024016111a5565b5f5160206159975f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051614510919061593a565b5f60405180830381855af49150503d805f8114614548576040519150601f19603f3d011682016040523d82523d5f602084013e61454d565b606091505b5091509150610eae8583836146f9565b34156126d75760405163b398979f60e01b815260040160405180910390fd5b5f828218828410028218611269565b5f5f5f5f60205f8651602088015f8a5af192503d91505f5190508280156119f8575081156145bc57806001146119f8565b50505050506001600160a01b03163b151590565b81516060901561460157816040516020016145eb9190615945565b6040516020818303038152906040529050610dfb565b816040516020016145eb919061596b565b606061462a6001600160801b03602084901c16614750565b6146408360601b6001600160601b031916614750565b6040516020016146649291909182526001600160c01b031916602082015260280190565b6040516020818303038152906040529050919050565b5f614683613b5b565b54600160401b900460ff16919050565b61469b6141e6565b5f5160206159b75f395f51905f526001600160a01b0382166146d257604051636116401160e11b81525f60048201526024016111a5565b80546001600160d01b0316600160d01b65ffffffffffff8516021781556111035f83613bb2565b6060826147095761408c826148e1565b815115801561472057506001600160a01b0384163b155b1561474957604051639996b31560e01b81526001600160a01b03851660048201526024016111a5565b5080611269565b5f5f825f1c9050806001600160801b0316905080600160401b02811777ffffffffffffffff0000000000000000ffffffffffffffff169050806401000000000281177bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16905080620100000281177dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff169050806101000281177eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1690508060100281177f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f1690505f6008827f080808080808080808080808080808080808080808080808080808080808080816816148635761486361585d565b0460047f040404040404040404040404040404040404040404040404040404040404040484160460027f020202020202020202020202020202020202020202020202020202020202020285160417166027029091017f3030303030303030303030303030303030303030303030303030303030303030019392505050565b8051156148f057805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f60208284031215614919575f5ffd5b81356001600160e01b031981168114611269575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561496c5761496c614930565b604052919050565b5f6001600160401b0382111561498c5761498c614930565b50601f01601f191660200190565b5f82601f8301126149a9575f5ffd5b81356149bc6149b782614974565b614944565b8181528460208386010111156149d0575f5ffd5b816020850160208301375f918101602001919091529392505050565b6001600160a01b0381168114610e13575f5ffd5b5f5f5f5f5f60a08688031215614a14575f5ffd5b853594506020860135935060408601356001600160401b03811115614a37575f5ffd5b614a438882890161499a565b9350506060860135614a54816149ec565b949793965091946080013592915050565b5f5f5f60608486031215614a77575f5ffd5b833592506020840135915060408401356001600160401b03811115614a9a575f5ffd5b614aa68682870161499a565b9150509250925092565b8035614abb816149ec565b919050565b5f60208284031215614ad0575f5ffd5b8135611269816149ec565b5f60208284031215614aeb575f5ffd5b5035919050565b5f5f60408385031215614b03575f5ffd5b823591506020830135614b15816149ec565b809150509250929050565b5f5f5f5f60808587031215614b33575f5ffd5b8435614b3e816149ec565b93506020850135925060408501356001600160401b03811115614b5f575f5ffd5b614b6b8782880161499a565b9250506060850135614b7c816149ec565b939692955090935050565b5f5f5f5f60808587031215614b9a575f5ffd5b843593506020850135925060408501356001600160401b03811115614bbd575f5ffd5b614bc98782880161499a565b949793965093946060013593505050565b5f5f5f60608486031215614bec575f5ffd5b8335614bf7816149ec565b92506020840135915060408401356001600160401b03811115614a9a575f5ffd5b5f5f60408385031215614c29575f5ffd5b8235614c34816149ec565b915060208301356001600160401b03811115614c4e575f5ffd5b614c5a8582860161499a565b9150509250929050565b5f5f8284036060811215614c76575f5ffd5b8335614c81816149ec565b92506040601f1982011215614c94575f5ffd5b506020830190509250929050565b5f5f5f5f60808587031215614cb5575f5ffd5b8435614cc0816149ec565b9350602085013592506040850135915060608501356001600160401b03811115614ce8575f5ffd5b614cf48782880161499a565b91505092959194509250565b5f60208284031215614d10575f5ffd5b813565ffffffffffff81168114611269575f5ffd5b5f5f5f5f60808587031215614d38575f5ffd5b8435614d43816149ec565b93506020850135925060408501356001600160401b03811115614bbd575f5ffd5b5f5f5f5f5f60a08688031215614d78575f5ffd5b8535614d83816149ec565b94506020860135614d93816149ec565b9350604086013592506060860135915060808601356001600160401b03811115614dbb575f5ffd5b614dc78882890161499a565b9150509295509295909350565b5f5f5f5f5f5f60c08789031215614de9575f5ffd5b8635614df4816149ec565b95506020870135614e04816149ec565b9450604087013593506060870135925060808701356001600160401b03811115614e2c575f5ffd5b614e3889828a0161499a565b9699959850939692959460a09093013593505050565b5f5f5f5f5f60a08688031215614e62575f5ffd5b8535614e6d816149ec565b94506020860135935060408601356001600160401b03811115614a37575f5ffd5b80511515825260208101511515602083015260408101511515604083015260608101511515606083015260808101511515608083015260a081015160a083015260c081015160c08301525050565b6001600160a01b038b811682528a811660208301528916604082015287151560608201526102008101614f126080830189614e8e565b6101608201969096526101808101949094526101a08401929092526101c08301526101e09091015295945050505050565b604080825283519082018190525f9060208501906060840190835b81811015614f855783516001600160a01b0316835260209384019390920191600101614f5e565b5050809250505082151560208301529392505050565b81516001600160a01b0316815261020081016020830151614fc760208401826001600160a01b03169052565b506040830151614fe260408401826001600160a01b03169052565b506060830151614ff6606084018215159052565b5060808301516150096080840182614e8e565b5060a083015161016083015260c083015161018083015260e08301516101a08301526101008301516101c0830152610120909201516101e09091015290565b5f5f60208385031215615059575f5ffd5b82356001600160401b0381111561506e575f5ffd5b8301601f8101851361507e575f5ffd5b80356001600160401b03811115615093575f5ffd5b8560208260051b84010111156150a7575f5ffd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561513c57603f198786030184526151278583516150b7565b9450602093840193919091019060010161510b565b50929695505050505050565b602081525f61126960208301846150b7565b5f5f6040838503121561516b575f5ffd5b82356001600160401b03811115615180575f5ffd5b61518c8582860161499a565b9250506020830135614b15816149ec565b5f5f5f606084860312156151af575f5ffd5b8335925060208401356151c1816149ec565b915060408401356151d1816149ec565b809150509250925092565b5f5f5f5f5f60a086880312156151f0575f5ffd5b85356151fb816149ec565b9450602086013593506040860135925060608601356001600160401b03811115615223575f5ffd5b61522f8882890161499a565b95989497509295608001359392505050565b634e487b7160e01b5f52602160045260245ffd5b602081016007831061527557634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f5f5f5f5f5f5f5f6101008a8c031215615294575f5ffd5b8935985060208a01356152a6816149ec565b975060408a01356152b6816149ec565b965060608a01356152c6816149ec565b955060808a01356001600160401b038111156152e0575f5ffd5b8a01601f81018c136152f0575f5ffd5b80356001600160401b03811115615305575f5ffd5b8c6020606083028401011115615319575f5ffd5b6020919091019550935060a08a0135925061533660c08b01614ab0565b915061534460e08b01614ab0565b90509295985092959850929598565b8015158114610e13575f5ffd5b5f5f5f5f5f5f60c08789031215615375575f5ffd5b863595506020870135945060408701356001600160401b03811115615398575f5ffd5b6153a489828a0161499a565b94505060608701356153b581615353565b925060808701356153c581615353565b915060a08701356153d581615353565b809150509295509295509295565b5f602082840312156153f3575f5ffd5b815161126981615353565b6001600160a01b03831681526040602082018190525f90611372908301846150b7565b5f81518060208401855e5f93019283525090919050565b6001600160601b03198460601b1681528260148201525f610eae6034830184615421565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610dfb57610dfb61545c565b604081525f61549560408301856150b7565b90508260208301529392505050565b80820180821115610dfb57610dfb61545c565b838152826020820152606060408201525f610eae60608301846150b7565b848152836020820152608060408201525f6154f360808301856150b7565b905082606083015295945050505050565b6001600160a01b03841681526060602082018190525f90615527908301856150b7565b9050826040830152949350505050565b5f60208284031215615547575f5ffd5b81516001600160401b0381111561555c575f5ffd5b8201601f8101841361556c575f5ffd5b80516001600160401b0381111561558557615585614930565b8060051b61559560208201614944565b918252602081840181019290810190878411156155b0575f5ffd5b6020850194505b8385101561440d57845192506155cc836149ec565b828252602094850194909101906155b7565b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e19843603018112615607575f5ffd5b8301803591506001600160401b03821115615620575f5ffd5b602001915036819003821315615634575f5ffd5b9250929050565b818382375f9101908152919050565b5f6020828403121561565a575f5ffd5b81516001600160401b0381111561566f575f5ffd5b8201601f8101841361567f575f5ffd5b805161568d6149b782614974565b8181528560208385010111156156a1575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f60208284031280156156cf575f5ffd5b50604051602081016001600160401b03811182821017156156f2576156f2614930565b6040529151825250919050565b86815285602082015260c060408201525f61571d60c08301876150b7565b6001600160a01b0395909516606083015250608081019290925260a0909101529392505050565b8082028115828204841417610dfb57610dfb61545c565b5f6020828403121561576b575f5ffd5b5051919050565b85815284602082015260a060408201525f61579060a08301866150b7565b606083019490945250608001529392505050565b6001600160801b0381168114610e13575f5ffd5b5f602082840312156157c8575f5ffd5b8135611269816157a4565b81356157de816157a4565b6001600160801b0381169050806001600160801b03198354161782556020830135615808816157a4565b60801b6fffffffffffffffffffffffffffffffff191617905550565b65ffffffffffff8181168382160190811115610dfb57610dfb61545c565b5f60208284031215615852575f5ffd5b8151611269816149ec565b634e487b7160e01b5f52601260045260245ffd5b5f8261588b57634e487b7160e01b5f52601260045260245ffd5b500490565b86815285602082015260c060408201525f6158ae60c08301876150b7565b60608301959095525060808101929092526001600160a01b031660a0909101529392505050565b6001600160601b03198560601b1681528360148201528260348201525f610eab6054830184615421565b65ffffffffffff8281168282160390811115610dfb57610dfb61545c565b5f610eae61593461592e8488615421565b86615421565b84615421565b5f6112698284615421565b600b60fa1b81525f61595a6001830184615421565b601d60f91b81526001019392505050565b5f61595a828461542156feb92d52e77ebaa0cae5c23e882d85609efbcb44029214147dd132daf9ef1018af360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbceef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840027b8807ed0d425f20d0c4bc217dc8c5223cdf4dda073a600a26677d83eb2fb5302dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800eef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401a26469706673582212204bf27e26e3b77a1580868df32126a301daa82e55ecad51b32fc2e77ba214b47e64736f6c634300081e0033","sourceMap":"769:21285:43:-:0;;;1171:4:3;1128:48;;2544:53:43;;;;;;;;;-1:-1:-1;4638:22:44;:20;:22::i;:::-;2568::43;:20;:22::i;:::-;769:21285;;7709:422:2;3147:66;7898:15;;;;;;;7894:76;;;7936:23;;-1:-1:-1;;;7936:23:2;;;;;;;;;;;7894:76;7983:14;;-1:-1:-1;;;;;7983:14:2;;;:34;7979:146;;8033:33;;-1:-1:-1;;;;;;8033:33:2;-1:-1:-1;;;;;8033:33:2;;;;;8085:29;;158:50:47;;;8085:29:2;;146:2:47;131:18;8085:29:2;;;;;;;7979:146;7758:373;7709:422::o;14:200:47:-;769:21285:43;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"6080604052600436106103ea575f3560e01c806391d148541161020a578063b8b4f9081161011e578063cf6eefb7116100a8578063f327b07511610078578063f327b07514610d4d578063f38fdc0214610d6c578063fba7f1e314610d8c578063fe4e198314610dab578063ff8c1a8c14610dc0575f5ffd5b8063cf6eefb714610c9f578063d547741f14610cd9578063d602b9fd14610cf8578063e92706c614610d0c575f5ffd5b8063c371dda7116100ee578063c371dda714610c23578063c78ef28c14610c38578063cc8463c814610c58578063cdb21cc614610c6c578063cefc142914610c8b575f5ffd5b8063b8b4f90814610b9a578063b9a3c84c14610bb9578063ba4b930c14610bd8578063bc58ccaa14610c04575f5ffd5b8063ab328fb21161019f578063af5d2f391161016f578063af5d2f3914610a92578063afe1fcff14610ab1578063b4988fd014610afc578063b6cdb8ee14610b1b578063b873c4df14610b3a575f5ffd5b8063ab328fb2146109ea578063ac9650d814610a0a578063ad3cb1cc14610a36578063ad5a755a14610a73575f5ffd5b8063a1eda53c116101da578063a1eda53c1461095e578063a217fddf146107db578063a625b01e14610991578063a9904f9b146109be575f5ffd5b806391d148541461080457806391f58dcb1461082357806393ae2ebd146108425780639d86698514610861575f5ffd5b80634f1ef286116103015780636b821d061161029657806384ef8ffc1161026657806384ef8ffc1461077e5780638aca6afc146107925780638da5cb5b146107c75780638ffc2120146107db57806391152f10146107ee575f5ffd5b80636b821d061461070257806376c7823f146107215780637746e7ae146107405780637c82288f1461075f575f5ffd5b80635e9a79a9116102d15780635e9a79a914610686578063634e93da146106a5578063649a5ec7146106c45780636982ece0146106e3575f5ffd5b80634f1ef2861461062157806352d1902d1461063457806353b59239146106485780635845e68a14610667575f5ffd5b80632589382b11610382578063347b4dba11610352578063347b4dba1461059157806336568abe146105b0578063473c45fe146105cf5780634835698a146105ee5780634ccb56f51461060d575f5ffd5b80632589382b1461050957806329cb924d146105415780632f2ff15d1461055357806332ecce9e14610572575f5ffd5b8063120698af116103bd578063120698af1461048d5780631480db39146104ac5780631fa50cef146104cb578063248a9ca3146104ea575f5ffd5b806301ffc9a7146103ee578063022d63fb146104225780630aa6220b1461044a57806311df92f114610460575b5f5ffd5b3480156103f9575f5ffd5b5061040d610408366004614909565b610dd7565b60405190151581526020015b60405180910390f35b34801561042d575f5ffd5b50620697805b60405165ffffffffffff9091168152602001610419565b348015610455575f5ffd5b5061045e610e01565b005b34801561046b575f5ffd5b5061047f61047a366004614a00565b610e16565b604051908152602001610419565b348015610498575f5ffd5b5061045e6104a7366004614a65565b610eb7565b3480156104b7575f5ffd5b5061045e6104c6366004614ac0565b610f2f565b3480156104d6575f5ffd5b5061045e6104e5366004614ac0565b610f91565b3480156104f5575f5ffd5b5061047f610504366004614adb565b610fc8565b348015610514575f5ffd5b5061047f54610529906001600160a01b031681565b6040516001600160a01b039091168152602001610419565b34801561054c575f5ffd5b504261047f565b34801561055e575f5ffd5b5061045e61056d366004614af2565b610fe8565b34801561057d575f5ffd5b5061045e61058c366004614adb565b611014565b34801561059c575f5ffd5b5061045e6105ab366004614b20565b611043565b3480156105bb575f5ffd5b5061045e6105ca366004614af2565b611109565b3480156105da575f5ffd5b5061045e6105e9366004614b87565b6111cb565b3480156105f9575f5ffd5b5061047f610608366004614bda565b61123a565b348015610618575f5ffd5b5061047f611270565b61045e61062f366004614c18565b611280565b34801561063f575f5ffd5b5061047f61129b565b348015610653575f5ffd5b5061047f610662366004614a65565b6112b6565b348015610672575f5ffd5b5061045e610681366004614c64565b611313565b348015610691575f5ffd5b5061047f6106a0366004614ca2565b61134b565b3480156106b0575f5ffd5b5061045e6106bf366004614ac0565b61137a565b3480156106cf575f5ffd5b5061045e6106de366004614d00565b61138d565b3480156106ee575f5ffd5b5061045e6106fd366004614d25565b6113a0565b34801561070d575f5ffd5b5061045e61071c366004614ac0565b611457565b34801561072c575f5ffd5b5061047f61073b366004614d64565b611486565b34801561074b575f5ffd5b5061052961075a366004614bda565b6117ee565b34801561076a575f5ffd5b5061047f610779366004614dd4565b61181f565b348015610789575f5ffd5b50610529611a02565b34801561079d575f5ffd5b506105296107ac366004614adb565b6104826020525f90815260409020546001600160a01b031681565b3480156107d2575f5ffd5b50610529611a1d565b3480156107e6575f5ffd5b5061047f5f81565b3480156107f9575f5ffd5b5061047f6104845481565b34801561080f575f5ffd5b5061040d61081e366004614af2565b611a2b565b34801561082e575f5ffd5b5061045e61083d366004614a65565b611a61565b34801561084d575f5ffd5b5061045e61085c366004614e4e565b611add565b34801561086c575f5ffd5b5061094861087b366004614adb565b5f6020818152918152604090819020805460018201546002830154845160e081018652600385015460ff8082161515835261010082048116151598830198909852620100008104881615159682019690965263010000008604871615156060820152640100000000909504861615156080860152600484015460a0860152600584015460c08601526006840154600785015460088601546009870154600a909701546001600160a01b03968716999587169896851697600160a01b9095049095169594929391929091908a565b6040516104199a99989796959493929190614edc565b348015610969575f5ffd5b50610972611c48565b6040805165ffffffffffff938416815292909116602083015201610419565b34801561099c575f5ffd5b506109b06109ab366004614bda565b611cb7565b604051610419929190614f43565b3480156109c9575f5ffd5b506109dd6109d8366004614ca2565b611d97565b6040516104199190614f9b565b3480156109f5575f5ffd5b5061047e54610529906001600160a01b031681565b348015610a15575f5ffd5b50610a29610a24366004615048565b611f44565b60405161041991906150e5565b348015610a41575f5ffd5b50610a66604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516104199190615148565b348015610a7e575f5ffd5b5061047f610a8d366004614b87565b61208a565b348015610a9d575f5ffd5b50610a66610aac36600461515a565b612109565b348015610abc575f5ffd5b50610ae7610acb366004614adb565b6104816020525f90815260409020805460019091015460ff1682565b60408051928352901515602083015201610419565b348015610b07575f5ffd5b5061045e610b1636600461519d565b612115565b348015610b26575f5ffd5b5061045e610b35366004614ac0565b612210565b348015610b45575f5ffd5b50610b7a610b54366004614ac0565b6104836020525f90815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610419565b348015610ba5575f5ffd5b5061047f610bb43660046151dc565b612272565b348015610bc4575f5ffd5b50606454610529906001600160a01b031681565b348015610be3575f5ffd5b50610bf7610bf2366004614ca2565b612281565b6040516104199190615255565b348015610c0f575f5ffd5b5061040d610c1e366004614ca2565b612296565b348015610c2e575f5ffd5b5061047f61200081565b348015610c43575f5ffd5b5061047f5f5160206159775f395f51905f5281565b348015610c63575f5ffd5b50610433612304565b348015610c77575f5ffd5b5061045e610c8636600461527b565b61237f565b348015610c96575f5ffd5b5061045e612535565b348015610caa575f5ffd5b50610cb3612574565b604080516001600160a01b03909316835265ffffffffffff909116602083015201610419565b348015610ce4575f5ffd5b5061045e610cf3366004614af2565b6125a1565b348015610d03575f5ffd5b5061045e6125c9565b348015610d17575f5ffd5b50610ae7610d26366004614af2565b61048060209081525f92835260408084209091529082529020805460019091015460ff1682565b348015610d58575f5ffd5b5061045e610d67366004615360565b6125db565b348015610d77575f5ffd5b5061047f5f5160206159d75f395f51905f5281565b348015610d97575f5ffd5b5061047f610da6366004614ca2565b612681565b348015610db6575f5ffd5b5061047f60655481565b348015610dcb575f5ffd5b5061047f600160ff1b81565b5f6001600160e01b031982166318a4c3c360e11b1480610dfb5750610dfb8261268f565b92915050565b5f610e0b816126c3565b610e136126cd565b50565b61047f54604051631d1d5b3960e11b81523360048201525f916001600160a01b031690633a3ab67290602401602060405180830381865afa158015610e5d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8191906153e3565b610e9e57604051630f3c7c2760e01b815260040160405180910390fd5b610eab86868686866126d9565b90505b95945050505050565b610ebf612b74565b610ec7612b97565b6001610ed533858585612ba3565b6006811115610ee657610ee6615241565b14610f0457604051633a4e124d60e11b815260040160405180910390fd5b5f610f1133858585612cd5565b600301805461ffff191661010117905550610f2a612cfb565b505050565b610f37612b74565b610f3f612b97565b610f565f5160206159d75f395f51905f52826125a1565b6040516001600160a01b038216907ffed5843dda9e5d83f59e467c52752f2241404c2a28c007aff779c3d8efeed2e6905f90a2610e13612cfb565b610f99612b74565b610fa1612b97565b610fb75f5160206159775f395f51905f526126c3565b610fc081612d0a565b610e13612cfb565b5f9081525f5160206159f75f395f51905f52602052604090206001015490565b8161100657604051631fe1e13d60e11b815260040160405180910390fd5b6110108282612d5d565b5050565b61101c612b74565b611024612b97565b61103a5f5160206159775f395f51905f526126c3565b610fc081612d79565b61104b612b74565b611053612b97565b6110695f5160206159d75f395f51905f526126c3565b6001600160a01b038116156110815761108181612dbe565b5f61108d85858561123a565b5f81815261048260205260409081902080546001600160a01b0319166001600160a01b038616908117909155905191925090859083907f6176bed8b34e20579b664c32ad00534f173e1f7c4410232beef89bed4464ddc0906110f2908a9089906153fe565b60405180910390a450611103612cfb565b50505050565b5f5160206159b75f395f51905f528215801561113d5750611128611a02565b6001600160a01b0316826001600160a01b0316145b156111c1575f5f61114c612574565b90925090506001600160a01b03821615158061116e575065ffffffffffff8116155b8061118157504265ffffffffffff821610155b156111ae576040516319ca5ebb60e01b815265ffffffffffff821660048201526024015b60405180910390fd5b5050805465ffffffffffff60a01b191681555b610f2a8383612dec565b6111d3612b74565b6111db612b97565b60016111e933868686612ba3565b60068111156111fa576111fa615241565b1461121857604051633a4e124d60e11b815260040160405180910390fd5b61122181612e1f565b8061122e33868686612cd5565b60050155611103612cfb565b5f83838360405160200161125093929190615438565b6040516020818303038152906040528051906020012090505b9392505050565b61127d6035612000615470565b81565b611288612e4c565b61129182612ef0565b6110108282612ef9565b5f6112a4612fb5565b505f5160206159975f395f51905f5290565b5f6112bf612b74565b6112c7612b97565b60066112d533868686612ba3565b60068111156112e6576112e6615241565b146112f9576112f733858585612ffe565b505b61130533858585612cd5565b600701549050611269612cfb565b61131b612b74565b611323612b97565b6113395f5160206159775f395f51905f526126c3565b61134382826132f7565b611010612cfb565b5f611354612b74565b61135c612b97565b61136885858585612ffe565b9050611372612cfb565b949350505050565b5f611384816126c3565b6110108261346a565b5f611397816126c3565b611010826134d5565b6113a8612b74565b6113b0612b97565b6113c65f5160206159d75f395f51905f526126c3565b6113cf81612e1f565b5f6113db85858561123a565b604080518082018252848152600160208083018281525f8681526104819092529084902092518355519101805460ff19169115159190911790555190915084906001600160a01b0387169083907fc5314bcb93c25473b858a5086195e309861a64b4c3ddae4d0a5cb9c5fb6f30f4906110f29088908890615483565b61145f612b74565b611467612b97565b61147d5f5160206159775f395f51905f526126c3565b610fc081613544565b5f61148f612b74565b611497612b97565b6001600160a01b0386166114be5760405163bef5ceeb60e01b815260040160405180910390fd5b60026114cc86868686612ba3565b60068111156114dd576114dd615241565b146114fb57604051631bc1990760e31b815260040160405180910390fd5b5f61150886868686612cd5565b6001810180546001600160a01b0319166001600160a01b038a16179055600a81015460048201549192509061153d82826154a4565b9350831561155f57600283015461155f906001600160a01b0316333087613597565b5f6115686135fe565b90505f61157485613671565b61157e90856154a4565b9050801561161657600285015461159f906001600160a01b03168383613684565b6115a76135fe565b600286015460408051602081018252848152905163432ce91960e11b81526001600160a01b03928316600482015290516024820152911690638659d232906044015f604051808303815f87803b1580156115ff575f5ffd5b505af1158015611611573d5f5f3e3d5ffd5b505050505b61161e61370b565b6001600160a01b031663216666a48a611637888c613744565b6116418b8f61378f565b6040518463ffffffff1660e01b815260040161165f939291906154b7565b5f604051808303815f87803b158015611676575f5ffd5b505af1158015611688573d5f5f3e3d5ffd5b50505060098601545f9150158015906116aa57506003860154610100900460ff165b156116d357506009850180545f90915560028601546116d3906001600160a01b03168c836137bf565b8b6001600160a01b0316865f015f9054906101000a90046001600160a01b03166001600160a01b03168c6001600160a01b03167f5165909c3d1c01c5d1e121ac6f6d01dda1ba24bc9e1f975b5a375339c15be7f38d8d8d8c6006015460405161173f94939291906154d5565b60405180910390a461174f612cfb565b6001600160a01b038b163b15158015611773575060038601546301000000900460ff165b156117d8576040516306c791b960e11b81526001600160a01b038c1690630d8f2372906117aa908d908d908d9087906004016154d5565b5f604051808303815f87803b1580156117c1575f5ffd5b505af11580156117d3573d5f5f3e3d5ffd5b505050505b6117e0612b97565b505050505050610eae612cfb565b5f6104825f6117fe86868661123a565b815260208101919091526040015f20546001600160a01b0316949350505050565b5f5f61182d87878787612cd5565b90505f61183b88888761123a565b5f8181526104806020908152604080832060028701546001600160a01b0316845290915290206001015490915060ff161561189d575f8181526104806020908152604080832060028601546001600160a01b0316845290915290205460048301555b5f818152610481602052604090206001015460ff16156118cc575f818152610481602052604090205460058301555b5f6118d88989886137f0565b604051631d1d5b3960e11b81526001600160a01b038c8116600483015291925090821690633a3ab67290602401602060405180830381865afa158015611920573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061194491906153e3565b61196157604051636ffe5a9560e01b815260040160405180910390fd5b604051631d1d5b3960e11b81523360048201526001600160a01b03821690633a3ab67290602401602060405180830381865afa1580156119a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c791906153e3565b6119e457604051637ed449a960e01b815260040160405180910390fd5b6119f28a8a8a8a8a8a613835565b93505050505b9695505050505050565b5f516020615a175f395f51905f52546001600160a01b031690565b5f611a26611a02565b905090565b5f9182525f5160206159f75f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611a69612b74565b611a71612b97565b6001611a7f33858585612ba3565b6006811115611a9057611a90615241565b14611aae57604051633a4e124d60e11b815260040160405180910390fd5b6001611abc33858585612cd5565b60030180549115156101000261ff0019909216919091179055610f2a612cfb565b611ae5612b74565b611aed612b97565b611b035f5160206159d75f395f51905f526126c3565b611b0b613a64565b604051631d1d5b3960e11b81526001600160a01b0384811660048301529190911690633a3ab67290602401602060405180830381865afa158015611b51573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7591906153e3565b611b9257604051631131fa7160e11b815260040160405180910390fd5b611b9c8282613aaa565b5f611ba886868661123a565b604080518082018252848152600160208083018281525f86815261048083528581206001600160a01b038b168083529352859020935184555192909101805460ff191692151592909217909155905191925090869083907f4544c320b43beb5421d5149ff92fa72b40f00ac65294c4b8ca3906f08fb5a8c290611c30908b908a908990615504565b60405180910390a450611c41612cfb565b5050505050565b5f516020615a175f395f51905f52545f90600160d01b900465ffffffffffff165f5160206159b75f395f51905f528115801590611c8d57504265ffffffffffff831610155b611c98575f5f611cae565b6001810154600160a01b900465ffffffffffff16825b92509250509091565b60605f5f611cc68686866137f0565b9050806001600160a01b031663d01f63f56040518163ffffffff1660e01b81526004015f60405180830381865afa158015611d03573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d2a9190810190615537565b816001600160a01b031663184d69ab6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d66573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d8a91906153e3565b9250925050935093915050565b611e1d60408051610140810182525f80825260208083018290528284018290526060808401839052845160e081018652838152918201839052938101829052928301819052608083810182905260a0840182905260c084019190915290919082019081526020015f81526020015f81526020015f81526020015f81526020015f81525090565b611e25612b74565b611e3185858585612cd5565b604080516101408101825282546001600160a01b0390811682526001840154811660208084019190915260028501549182168385015260ff600160a01b90920482161515606080850191909152845160e08082018752600388015480861615158352610100808204871615159584019590955262010000810486161515978301979097526301000000870485161515928201929092526401000000009095049092161515608085810191909152600486015460a080870191909152600587015460c08088019190915291850195909552600686015494840194909452600785015493830193909352600884015490820152600983015491810191909152600a909101546101208201529050949350505050565b6060816001600160401b03811115611f5e57611f5e614930565b604051908082528060200260200182016040528015611f9157816020015b6060815260200190600190039081611f7c5790505b5090505f5b82811015612083575f8030868685818110611fb357611fb36155de565b9050602002810190611fc591906155f2565b604051611fd392919061563b565b5f60405180830381855af49150503d805f811461200b576040519150601f19603f3d011682016040523d82523d5f602084013e612010565b606091505b50915091508161205b57604481511015612028575f5ffd5b60048101905080806020019051810190612042919061564a565b60405162461bcd60e51b81526004016111a59190615148565b8084848151811061206e5761206e6155de565b60209081029190910101525050600101611f96565b5092915050565b5f612093612b74565b61209b612b97565b60016120a933878787612ba3565b60068111156120ba576120ba615241565b146120d857604051633a4e124d60e11b815260040160405180910390fd5b5f6120e533878787612cd5565b60048101849055600a8101549091506120fe90846154a4565b915050611372612cfb565b6060611269838361378f565b5f61211e613b5b565b805490915060ff600160401b82041615906001600160401b03165f811580156121445750825b90505f826001600160401b0316600114801561215f5750303b155b90508115801561216d575080155b1561218b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156121b557845460ff60401b1916600160401b1785555b6121c0888888613b83565b831561220657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b612218612b74565b612220612b97565b6122375f5160206159d75f395f51905f5282610fe8565b6040516001600160a01b038216907f824f6fd7083aebf3e4245045a366a32f9489c6ce94efaba90ec0abbd10ddb1fb905f90a2610e13612cfb565b5f610eab33878787878761181f565b5f61228a612b74565b610eae85858585612ba3565b5f61229f612b74565b5f6122ac86868686612ba3565b905060068160068111156122c2576122c2615241565b14806122df575060058160068111156122dd576122dd615241565b145b806119f8575060038160068111156122f9576122f9615241565b149695505050505050565b5f516020615a175f395f51905f52545f905f5160206159b75f395f51905f5290600160d01b900465ffffffffffff16801580159061234957504265ffffffffffff8216105b612363578154600160d01b900465ffffffffffff16612378565b6001820154600160a01b900465ffffffffffff165b9250505090565b5f612388613b5b565b805490915060ff600160401b82041615906001600160401b03165f811580156123ae5750825b90505f826001600160401b031660011480156123c95750303b155b9050811580156123d7575080155b156123f55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561241f57845460ff60401b1916600160401b1785555b61242a8e8e88613b83565b6124415f5160206159775f395f51905f5288613bb2565b506124665f5160206159d75f395f51905f525f5160206159775f395f51905f52613c1e565b61246f8c612d0a565b6124788b613544565b5f5b898110156124d5576124cd8b8b83818110612497576124976155de565b6124ad9260206060909202019081019150614ac0565b8c8c848181106124bf576124bf6155de565b9050606002016020016132f7565b60010161247a565b506124df88612d79565b831561252557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050505050565b5f61253e612574565b509050336001600160a01b0382161461256c57604051636116401160e11b81523360048201526024016111a5565b610e13613c46565b5f5160206159b75f395f51905f52546001600160a01b03811691600160a01b90910465ffffffffffff1690565b816125bf57604051631fe1e13d60e11b815260040160405180910390fd5b6110108282613cdf565b5f6125d3816126c3565b610e13613cfb565b6125e3612b74565b6125eb612b97565b60016125f933888888612ba3565b600681111561260a5761260a615241565b1461262857604051633a4e124d60e11b815260040160405180910390fd5b5f61263533888888612cd5565b600301805463ffff00001916620100008615150263ff0000001916176301000000851515021764ff0000000019166401000000008415150217905550612679612cfb565b505050505050565b5f610eae3386868686611486565b5f6001600160e01b03198216637965db0b60e01b1480610dfb57506301ffc9a760e01b6001600160e01b0319831614610dfb565b610e138133613d05565b6126d75f5f613d3e565b565b5f6126e2612b74565b6126ea612b97565b5f6126f733888888612ba3565b600681111561270857612708615241565b146127265760405163f757fcff60e01b815260040160405180910390fd5b61272e613e16565b6001600160a01b03166390978d1b876040518263ffffffff1660e01b815260040161275b91815260200190565b602060405180830381865afa158015612776573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061279a91906153e3565b6127b7576040516356175d8f60e01b815260040160405180910390fd5b6127bf613a64565b604051631d1d5b3960e11b81526001600160a01b0385811660048301529190911690633a3ab67290602401602060405180830381865afa158015612805573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061282991906153e3565b61284657604051631131fa7160e11b815260040160405180910390fd5b42851115612867576040516347860b9760e01b815260040160405180910390fd5b6128746035612000615470565b8451111561289557604051630a56acd960e01b815260040160405180910390fd5b5f61289e6135fe565b604051635b97aadd60e01b81526001600160a01b0386811660048301529190911690635b97aadd90602401602060405180830381865afa1580156128e4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061290891906156be565b5f015190506040518061014001604052805f6001600160a01b031681526020015f6001600160a01b03168152602001856001600160a01b031681526020015f151581526020016040518060e001604052805f151581526020015f151581526020015f151581526020015f151581526020015f151581526020018481526020015f81525081526020015f81526020015f81526020015f8152602001848152602001828152505f5f6129ba338b8b8b613e5c565b815260208082019290925260409081015f20835181546001600160a01b03199081166001600160a01b039283161783558585015160018401805490921690831617905584830151600283018054606080890151939094166001600160a81b031990911617600160a01b9215159290920291909117905560808086015180516003850180549783015196830151948301519383015161ffff1990981691151561ff0019169190911761010096151587021763ffff00001916620100009415159490940263ff0000001916939093176301000000921515929092029190911764ff0000000019166401000000009515159590950294909417905560a080840151600483015560c0938401516005830155840151600682015591830151600783015560e08301516008830155820151600982015561012090910151600a909101558215612b1357612b136001600160a01b038516333086613597565b336001600160a01b03167ff1679315ff325c257a944e0ca1bfe7b26616039e9511f9610d4ba3eca851027b888888888887604051612b56969594939291906156ff565b60405180910390a2612b69816002615744565b915050610eae612cfb565b60325460ff166126d757604051633ee5aeb560e01b815260040160405180910390fd5b6032805460ff19169055565b5f5f612bb186868686612cd5565b60028101549091506001600160a01b0316612bcf575f915050611372565b80546001600160a01b0316612be8576001915050611372565b6002810154600160a01b900460ff1615612c06576006915050611372565b60018101546001600160a01b0316612c36574281600801541115612c2b576002612c2e565b60035b915050611372565b612c3e61370b565b6001600160a01b031663b551cd5086612c578488613744565b612c61878b61378f565b6040518463ffffffff1660e01b8152600401612c7f939291906154b7565b602060405180830381865afa158015612c9a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cbe91906153e3565b612cc95760046119f8565b50600595945050505050565b5f5f5f612ce487878787613e5c565b81526020019081526020015f209050949350505050565b6032805460ff19166001179055565b612d1381612dbe565b61047e80546001600160a01b0319166001600160a01b0383169081179091556040517fe983c4450684b2324d78afaa992b88be67cf4d3919d7a6539ca774d7bb5189f4905f90a250565b612d6682610fc8565b612d6f816126c3565b6111038383613bb2565b612d8281613e94565b6104848190556040518181527fc41d1b4ad42d6f594ce26dc949c6aa711df74301f1f2c17b3a36d30c9761abf39060200160405180910390a150565b612dcf81634e759c3d60e11b613ed8565b610e13576040516367cc38ef60e01b815260040160405180910390fd5b6001600160a01b0381163314612e155760405163334bd91960e11b815260040160405180910390fd5b610f2a8282613ef3565b61048454811015612e43576040516337d02b5d60e21b815260040160405180910390fd5b610e1381613e94565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612ed257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612ec65f5160206159975f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156126d75760405163703e46dd60e11b815260040160405180910390fd5b610e135f6126c3565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612f53575060408051601f3d908101601f19168201909252612f509181019061575b565b60015b612f7b57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016111a5565b5f5160206159975f395f51905f528114612fab57604051632a87526960e21b8152600481018290526024016111a5565b610f2a8383613f4a565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146126d75760405163703e46dd60e11b815260040160405180910390fd5b5f5f61300c86868686612ba3565b90505f61301b87878787612cd5565b60028101805460ff60a01b1916600160a01b1790559050600382600681111561304657613046615241565b0361309e57600681015460078201556009810154600a820154600483015461306e91906154a4565b61307891906154a4565b81546002830154919450613099916001600160a01b039081169116856137bf565b6131f3565b60058260068111156130b2576130b2615241565b036131da576130bf61370b565b6001600160a01b031663719c6d56876130d88489613744565b6130e2888c61378f565b6040518463ffffffff1660e01b8152600401613100939291906154b7565b602060405180830381865afa15801561311b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061313f919061575b565b6007820181905560068201546004830154911415905f61315e84613671565b6131689083615470565b9050836009015484600a0154828461318091906154a4565b61318a91906154a4565b61319491906154a4565b95506131d2836131ae5784546001600160a01b03166131bd565b60018501546001600160a01b03165b60028601546001600160a01b031690886137bf565b5050506131f3565b604051639c71cb8360e01b815260040160405180910390fd5b6001810154815460078301546040516001600160a01b0393841693928316928b16917f3f384afb4bd9f0aef0298c80399950011420eb33b0e1a750b20966270247b9a091613248918c918c918c918c90615772565b60405180910390a4613258612cfb565b6001600160a01b0387163b1515801561327d57506003810154640100000000900460ff165b156132e55760078101546040516304cc1fd560e01b81526001600160a01b038916916304cc1fd5916132b7918a918a918a916004016154d5565b5f604051808303815f87803b1580156132ce575f5ffd5b505af11580156132e0573d5f5f3e3d5ffd5b505050505b6132ed612b97565b5050949350505050565b6132ff613a64565b604051631d1d5b3960e11b81526001600160a01b0384811660048301529190911690633a3ab67290602401602060405180830381865afa158015613345573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061336991906153e3565b61338657604051631131fa7160e11b815260040160405180910390fd5b61339660408201602083016157b8565b6001600160801b03166133ac60208301836157b8565b6001600160801b031611156133d457604051635b1a743760e01b815260040160405180910390fd5b6001600160a01b0382165f9081526104836020526040902081906133f882826157d3565b50506001600160a01b0382167f143b6bf2ebf8381dc4db7edfc69b944d4a518b2be84f1d6230aecb2b698100e461343260208401846157b8565b61344260408501602086016157b8565b604080516001600160801b039384168152929091166020830152015b60405180910390a25050565b5f613473612304565b61347c42613f9f565b6134869190615824565b90506134928282613fd5565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200161345e565b5f6134df8261405f565b6134e842613f9f565b6134f29190615824565b90506134fe8282613d3e565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b61354d81612dbe565b61047f80546001600160a01b0319166001600160a01b0383169081179091556040517fab1796ea525d29607f67aabc405756efd2fc7c4eb2531e627f6ec697ac618a8e905f90a250565b6040516001600160a01b0384811660248301528381166044830152606482018390526111039186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506140a6565b6064546040516302abf57960e61b81526453746f726560d81b60048201525f916001600160a01b03169063aafd5e40906024015b602060405180830381865afa15801561364d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a269190615842565b60048101545f90610dfb90600290615871565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156136d1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136f5919061575b565b9050611103848461370685856154a4565b614112565b6064546040516302abf57960e61b8152654f7261636c6560d01b60048201525f916001600160a01b03169063aafd5e4090602401613632565b60038201545f9060ff16156137885760058301545f9081036137685760655461376e565b60058401545b90508084600801546137809190615470565b915050610dfb565b5080610dfb565b6060611269836040518060400160405280600b81526020016a37b7a932b8bab2b9ba32b960a91b815250846141a1565b6040516001600160a01b03838116602483015260448201839052610f2a91859182169063a9059cbb906064016135cc565b5f6104825f61380086868661123a565b815260208101919091526040015f20546001600160a01b0316905080611269575061047e546001600160a01b03169392505050565b5f61383e612b74565b613846612b97565b6001600160a01b03871661386d5760405163062a0f5b60e21b815260040160405180910390fd5b600161387b87878787612ba3565b600681111561388c5761388c615241565b146138aa57604051633a4e124d60e11b815260040160405180910390fd5b5f6138b787878787612cd5565b600381015490915060ff16156138eb57600160ff1b83036138eb5760405163cad802eb60e01b815260040160405180910390fd5b80546001600160a01b0319166001600160a01b0389161781556006810183905560058101545f0361391e57606554613924565b60058101545b61392e90426154a4565b6008820155600a810154600482015461394791906154a4565b91508115613969576002810154613969906001600160a01b0316333085613597565b600881015460028201546040516001600160a01b038b8116938b8216937f6e51dd00371aabffa82cd401592f76ed51e98a9ea4b58751c70463a2c78b5ca1936139bd938d938d938d938d9390911690615890565b60405180910390a36139cd612cfb565b6001600160a01b0387163b151580156139f05750600381015462010000900460ff165b15613a5357604051639c2fd1df60e01b81526001600160a01b03881690639c2fd1df90613a25908990899089906004016154b7565b5f604051808303815f87803b158015613a3c575f5ffd5b505af1158015613a4e573d5f5f3e3d5ffd5b505050505b613a5b612b97565b506119f8612cfb565b6064546040516302abf57960e61b81527210dbdb1b185d195c985b15da1a5d195b1a5cdd606a1b60048201525f916001600160a01b03169063aafd5e4090602401613632565b805f03613aca57604051634935f70160e11b815260040160405180910390fd5b6001600160a01b0382165f90815261048360209081526040918290208251808401909352546001600160801b03808216808552600160801b9092041691830191909152821015613b2d5760405163dba3b86160e01b815260040160405180910390fd5b80602001516001600160801b0316821115610f2a57604051631f7b5d6160e01b815260040160405180910390fd5b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610dfb565b613b8b6141e6565b613b9361420b565b613ba06203f48082614213565b613ba8614225565b610f2a838361422d565b5f5f5160206159b75f395f51905f5283613c14575f613bcf611a02565b6001600160a01b031614613bf657604051631fe1e13d60e11b815260040160405180910390fd5b6001810180546001600160a01b0319166001600160a01b0385161790555b611372848461425f565b81613c3c57604051631fe1e13d60e11b815260040160405180910390fd5b6110108282614300565b5f5160206159b75f395f51905f525f80613c5e612574565b91509150613c738165ffffffffffff16151590565b1580613c8757504265ffffffffffff821610155b15613caf576040516319ca5ebb60e01b815265ffffffffffff821660048201526024016111a5565b613cc05f613cbb611a02565b613ef3565b50613ccb5f83613bb2565b505081546001600160d01b03191690915550565b613ce882610fc8565b613cf1816126c3565b6111038383613ef3565b6126d75f5f613fd5565b613d0f8282611a2b565b6110105760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016111a5565b5f516020615a175f395f51905f52545f5160206159b75f395f51905f5290600160d01b900465ffffffffffff168015613dd8574265ffffffffffff82161015613daf57600182015482546001600160d01b0316600160a01b90910465ffffffffffff16600160d01b02178255613dd8565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5905f90a15b5060010180546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b6064546040516302abf57960e61b8152721259195b9d1a599a595c95da1a5d195b1a5cdd606a1b60048201525f916001600160a01b03169063aafd5e4090602401613632565b5f84848484604051602001613e7494939291906158d5565b604051602081830303815290604052805190602001209050949350505050565b63bb7448008110613eb85760405163cb40339f60e01b815260040160405180910390fd5b5f8111610e135760405163fa050ec160e01b815260040160405180910390fd5b5f613ee283614360565b801561126957506112698383614392565b5f5f5160206159b75f395f51905f5283158015613f285750613f13611a02565b6001600160a01b0316836001600160a01b0316145b15613f40576001810180546001600160a01b03191690555b6113728484614418565b613f5382614491565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115613f9757610f2a82826144f4565b61101061455d565b5f65ffffffffffff821115613fd1576040516306dfcc6560e41b815260306004820152602481018390526044016111a5565b5090565b5f5160206159b75f395f51905f525f613fec612574565b835465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b03881617178455915061402c90508165ffffffffffff16151590565b15611103576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109905f90a150505050565b5f5f614069612304565b90508065ffffffffffff168365ffffffffffff16116140915761408c83826158ff565b611269565b61126965ffffffffffff84166206978061457c565b5f5f60205f8451602086015f885af1806140c5576040513d5f823e3d81fd5b50505f513d915081156140dc5780600114156140e9565b6001600160a01b0384163b155b1561110357604051635274afe760e01b81526001600160a01b03851660048201526024016111a5565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614163848261458b565b611103576040516001600160a01b0384811660248301525f604483015261419791869182169063095ea7b3906064016135cc565b61110384826140a6565b60605f6141ae85856145d0565b905084816141bb85614612565b6040516020016141cd9392919061591d565b6040516020818303038152906040529150509392505050565b6141ee61467a565b6126d757604051631afcd79f60e31b815260040160405180910390fd5b6126d76141e6565b61421b6141e6565b6110108282614693565b612cfb6141e6565b6142356141e6565b606480546001600160a01b0319166001600160a01b03831617905561425982612e1f565b50606555565b5f5f5160206159f75f395f51905f526142788484611a2b565b6142f7575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556142ad3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610dfb565b5f915050610dfb565b5f5160206159f75f395f51905f525f61431884610fc8565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b5f614372826301ffc9a760e01b614392565b8015610dfb575061438b826001600160e01b0319614392565b1592915050565b6040516001600160e01b0319821660248201525f90819060440160408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b17815282519293505f9283928392909183918a617530fa92503d91505f519050828015614402575060208210155b801561440d57505f81115b979650505050505050565b5f5f5160206159f75f395f51905f526144318484611a2b565b156142f7575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610dfb565b806001600160a01b03163b5f036144c657604051634c9c8ce360e01b81526001600160a01b03821660048201526024016111a5565b5f5160206159975f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051614510919061593a565b5f60405180830381855af49150503d805f8114614548576040519150601f19603f3d011682016040523d82523d5f602084013e61454d565b606091505b5091509150610eae8583836146f9565b34156126d75760405163b398979f60e01b815260040160405180910390fd5b5f828218828410028218611269565b5f5f5f5f60205f8651602088015f8a5af192503d91505f5190508280156119f8575081156145bc57806001146119f8565b50505050506001600160a01b03163b151590565b81516060901561460157816040516020016145eb9190615945565b6040516020818303038152906040529050610dfb565b816040516020016145eb919061596b565b606061462a6001600160801b03602084901c16614750565b6146408360601b6001600160601b031916614750565b6040516020016146649291909182526001600160c01b031916602082015260280190565b6040516020818303038152906040529050919050565b5f614683613b5b565b54600160401b900460ff16919050565b61469b6141e6565b5f5160206159b75f395f51905f526001600160a01b0382166146d257604051636116401160e11b81525f60048201526024016111a5565b80546001600160d01b0316600160d01b65ffffffffffff8516021781556111035f83613bb2565b6060826147095761408c826148e1565b815115801561472057506001600160a01b0384163b155b1561474957604051639996b31560e01b81526001600160a01b03851660048201526024016111a5565b5080611269565b5f5f825f1c9050806001600160801b0316905080600160401b02811777ffffffffffffffff0000000000000000ffffffffffffffff169050806401000000000281177bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16905080620100000281177dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff169050806101000281177eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1690508060100281177f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f1690505f6008827f080808080808080808080808080808080808080808080808080808080808080816816148635761486361585d565b0460047f040404040404040404040404040404040404040404040404040404040404040484160460027f020202020202020202020202020202020202020202020202020202020202020285160417166027029091017f3030303030303030303030303030303030303030303030303030303030303030019392505050565b8051156148f057805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f60208284031215614919575f5ffd5b81356001600160e01b031981168114611269575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561496c5761496c614930565b604052919050565b5f6001600160401b0382111561498c5761498c614930565b50601f01601f191660200190565b5f82601f8301126149a9575f5ffd5b81356149bc6149b782614974565b614944565b8181528460208386010111156149d0575f5ffd5b816020850160208301375f918101602001919091529392505050565b6001600160a01b0381168114610e13575f5ffd5b5f5f5f5f5f60a08688031215614a14575f5ffd5b853594506020860135935060408601356001600160401b03811115614a37575f5ffd5b614a438882890161499a565b9350506060860135614a54816149ec565b949793965091946080013592915050565b5f5f5f60608486031215614a77575f5ffd5b833592506020840135915060408401356001600160401b03811115614a9a575f5ffd5b614aa68682870161499a565b9150509250925092565b8035614abb816149ec565b919050565b5f60208284031215614ad0575f5ffd5b8135611269816149ec565b5f60208284031215614aeb575f5ffd5b5035919050565b5f5f60408385031215614b03575f5ffd5b823591506020830135614b15816149ec565b809150509250929050565b5f5f5f5f60808587031215614b33575f5ffd5b8435614b3e816149ec565b93506020850135925060408501356001600160401b03811115614b5f575f5ffd5b614b6b8782880161499a565b9250506060850135614b7c816149ec565b939692955090935050565b5f5f5f5f60808587031215614b9a575f5ffd5b843593506020850135925060408501356001600160401b03811115614bbd575f5ffd5b614bc98782880161499a565b949793965093946060013593505050565b5f5f5f60608486031215614bec575f5ffd5b8335614bf7816149ec565b92506020840135915060408401356001600160401b03811115614a9a575f5ffd5b5f5f60408385031215614c29575f5ffd5b8235614c34816149ec565b915060208301356001600160401b03811115614c4e575f5ffd5b614c5a8582860161499a565b9150509250929050565b5f5f8284036060811215614c76575f5ffd5b8335614c81816149ec565b92506040601f1982011215614c94575f5ffd5b506020830190509250929050565b5f5f5f5f60808587031215614cb5575f5ffd5b8435614cc0816149ec565b9350602085013592506040850135915060608501356001600160401b03811115614ce8575f5ffd5b614cf48782880161499a565b91505092959194509250565b5f60208284031215614d10575f5ffd5b813565ffffffffffff81168114611269575f5ffd5b5f5f5f5f60808587031215614d38575f5ffd5b8435614d43816149ec565b93506020850135925060408501356001600160401b03811115614bbd575f5ffd5b5f5f5f5f5f60a08688031215614d78575f5ffd5b8535614d83816149ec565b94506020860135614d93816149ec565b9350604086013592506060860135915060808601356001600160401b03811115614dbb575f5ffd5b614dc78882890161499a565b9150509295509295909350565b5f5f5f5f5f5f60c08789031215614de9575f5ffd5b8635614df4816149ec565b95506020870135614e04816149ec565b9450604087013593506060870135925060808701356001600160401b03811115614e2c575f5ffd5b614e3889828a0161499a565b9699959850939692959460a09093013593505050565b5f5f5f5f5f60a08688031215614e62575f5ffd5b8535614e6d816149ec565b94506020860135935060408601356001600160401b03811115614a37575f5ffd5b80511515825260208101511515602083015260408101511515604083015260608101511515606083015260808101511515608083015260a081015160a083015260c081015160c08301525050565b6001600160a01b038b811682528a811660208301528916604082015287151560608201526102008101614f126080830189614e8e565b6101608201969096526101808101949094526101a08401929092526101c08301526101e09091015295945050505050565b604080825283519082018190525f9060208501906060840190835b81811015614f855783516001600160a01b0316835260209384019390920191600101614f5e565b5050809250505082151560208301529392505050565b81516001600160a01b0316815261020081016020830151614fc760208401826001600160a01b03169052565b506040830151614fe260408401826001600160a01b03169052565b506060830151614ff6606084018215159052565b5060808301516150096080840182614e8e565b5060a083015161016083015260c083015161018083015260e08301516101a08301526101008301516101c0830152610120909201516101e09091015290565b5f5f60208385031215615059575f5ffd5b82356001600160401b0381111561506e575f5ffd5b8301601f8101851361507e575f5ffd5b80356001600160401b03811115615093575f5ffd5b8560208260051b84010111156150a7575f5ffd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561513c57603f198786030184526151278583516150b7565b9450602093840193919091019060010161510b565b50929695505050505050565b602081525f61126960208301846150b7565b5f5f6040838503121561516b575f5ffd5b82356001600160401b03811115615180575f5ffd5b61518c8582860161499a565b9250506020830135614b15816149ec565b5f5f5f606084860312156151af575f5ffd5b8335925060208401356151c1816149ec565b915060408401356151d1816149ec565b809150509250925092565b5f5f5f5f5f60a086880312156151f0575f5ffd5b85356151fb816149ec565b9450602086013593506040860135925060608601356001600160401b03811115615223575f5ffd5b61522f8882890161499a565b95989497509295608001359392505050565b634e487b7160e01b5f52602160045260245ffd5b602081016007831061527557634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f5f5f5f5f5f5f5f6101008a8c031215615294575f5ffd5b8935985060208a01356152a6816149ec565b975060408a01356152b6816149ec565b965060608a01356152c6816149ec565b955060808a01356001600160401b038111156152e0575f5ffd5b8a01601f81018c136152f0575f5ffd5b80356001600160401b03811115615305575f5ffd5b8c6020606083028401011115615319575f5ffd5b6020919091019550935060a08a0135925061533660c08b01614ab0565b915061534460e08b01614ab0565b90509295985092959850929598565b8015158114610e13575f5ffd5b5f5f5f5f5f5f60c08789031215615375575f5ffd5b863595506020870135945060408701356001600160401b03811115615398575f5ffd5b6153a489828a0161499a565b94505060608701356153b581615353565b925060808701356153c581615353565b915060a08701356153d581615353565b809150509295509295509295565b5f602082840312156153f3575f5ffd5b815161126981615353565b6001600160a01b03831681526040602082018190525f90611372908301846150b7565b5f81518060208401855e5f93019283525090919050565b6001600160601b03198460601b1681528260148201525f610eae6034830184615421565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610dfb57610dfb61545c565b604081525f61549560408301856150b7565b90508260208301529392505050565b80820180821115610dfb57610dfb61545c565b838152826020820152606060408201525f610eae60608301846150b7565b848152836020820152608060408201525f6154f360808301856150b7565b905082606083015295945050505050565b6001600160a01b03841681526060602082018190525f90615527908301856150b7565b9050826040830152949350505050565b5f60208284031215615547575f5ffd5b81516001600160401b0381111561555c575f5ffd5b8201601f8101841361556c575f5ffd5b80516001600160401b0381111561558557615585614930565b8060051b61559560208201614944565b918252602081840181019290810190878411156155b0575f5ffd5b6020850194505b8385101561440d57845192506155cc836149ec565b828252602094850194909101906155b7565b634e487b7160e01b5f52603260045260245ffd5b5f5f8335601e19843603018112615607575f5ffd5b8301803591506001600160401b03821115615620575f5ffd5b602001915036819003821315615634575f5ffd5b9250929050565b818382375f9101908152919050565b5f6020828403121561565a575f5ffd5b81516001600160401b0381111561566f575f5ffd5b8201601f8101841361567f575f5ffd5b805161568d6149b782614974565b8181528560208385010111156156a1575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f60208284031280156156cf575f5ffd5b50604051602081016001600160401b03811182821017156156f2576156f2614930565b6040529151825250919050565b86815285602082015260c060408201525f61571d60c08301876150b7565b6001600160a01b0395909516606083015250608081019290925260a0909101529392505050565b8082028115828204841417610dfb57610dfb61545c565b5f6020828403121561576b575f5ffd5b5051919050565b85815284602082015260a060408201525f61579060a08301866150b7565b606083019490945250608001529392505050565b6001600160801b0381168114610e13575f5ffd5b5f602082840312156157c8575f5ffd5b8135611269816157a4565b81356157de816157a4565b6001600160801b0381169050806001600160801b03198354161782556020830135615808816157a4565b60801b6fffffffffffffffffffffffffffffffff191617905550565b65ffffffffffff8181168382160190811115610dfb57610dfb61545c565b5f60208284031215615852575f5ffd5b8151611269816149ec565b634e487b7160e01b5f52601260045260245ffd5b5f8261588b57634e487b7160e01b5f52601260045260245ffd5b500490565b86815285602082015260c060408201525f6158ae60c08301876150b7565b60608301959095525060808101929092526001600160a01b031660a0909101529392505050565b6001600160601b03198560601b1681528360148201528260348201525f610eab6054830184615421565b65ffffffffffff8281168282160390811115610dfb57610dfb61545c565b5f610eae61593461592e8488615421565b86615421565b84615421565b5f6112698284615421565b600b60fa1b81525f61595a6001830184615421565b601d60f91b81526001019392505050565b5f61595a828461542156feb92d52e77ebaa0cae5c23e882d85609efbcb44029214147dd132daf9ef1018af360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbceef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840027b8807ed0d425f20d0c4bc217dc8c5223cdf4dda073a600a26677d83eb2fb5302dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800eef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401a26469706673582212204bf27e26e3b77a1580868df32126a301daa82e55ecad51b32fc2e77ba214b47e64736f6c634300081e0033","sourceMap":"769:21285:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4146:219:1;;;;;;;;;;-1:-1:-1;4146:219:1;;;;;:::i;:::-;;:::i;:::-;;;566:14:47;;559:22;541:41;;529:2;514:18;4146:219:1;;;;;;;;9909:108;;;;;;;;;;-1:-1:-1;10004:6:1;9909:108;;;767:14:47;755:27;;;737:46;;725:2;710:18;9909:108:1;593:196:47;13102:126:1;;;;;;;;;;;;;:::i;:::-;;8019:400:43;;;;;;;;;;-1:-1:-1;8019:400:43;;;;;:::i;:::-;;:::i;:::-;;;3023:25:47;;;3011:2;2996:18;8019:400:43;2877:177:47;13731:507:44;;;;;;;;;;-1:-1:-1;13731:507:44;;;;;:::i;:::-;;:::i;5339:193:43:-;;;;;;;;;;-1:-1:-1;5339:193:43;;;;;:::i;:::-;;:::i;6695:150::-;;;;;;;;;;-1:-1:-1;6695:150:43;;;;;:::i;:::-;;:::i;4807:191:0:-;;;;;;;;;;-1:-1:-1;4807:191:0;;;;;:::i;:::-;;:::i;1690:51:43:-;;;;;;;;;;-1:-1:-1;1690:51:43;;;;-1:-1:-1;;;;;1690:51:43;;;;;;-1:-1:-1;;;;;4772:32:47;;;4754:51;;4742:2;4727:18;1690:51:43;4574:237:47;34522:104:44;;;;;;;;;;-1:-1:-1;34604:15:44;34522:104;;4656:276:1;;;;;;;;;;-1:-1:-1;4656:276:1;;;;;:::i;:::-;;:::i;6371:146:43:-;;;;;;;;;;-1:-1:-1;6371:146:43;;;;;:::i;:::-;;:::i;11170:687::-;;;;;;;;;;-1:-1:-1;11170:687:43;;;;;:::i;:::-;;:::i;5995:682:1:-;;;;;;;;;;-1:-1:-1;5995:682:1;;;;;:::i;:::-;;:::i;12355:503:44:-;;;;;;;;;;-1:-1:-1;12355:503:44;;;;;:::i;:::-;;:::i;16429:243:43:-;;;;;;;;;;-1:-1:-1;16429:243:43;;;;;:::i;:::-;;:::i;4392:96:44:-;;;;;;;;;;;;;:::i;4161:214:3:-;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;24005:451:44:-;;;;;;;;;;-1:-1:-1;24005:451:44;;;;;:::i;:::-;;:::i;5922:170:43:-;;;;;;;;;;-1:-1:-1;5922:170:43;;;;;:::i;:::-;;:::i;25032:274:44:-;;;;;;;;;;-1:-1:-1;25032:274:44;;;;;:::i;:::-;;:::i;10196:150:1:-;;;;;;;;;;-1:-1:-1;10196:150:1;;;;;:::i;:::-;;:::i;12486:145::-;;;;;;;;;;-1:-1:-1;12486:145:1;;;;;:::i;:::-;;:::i;10138:565:43:-;;;;;;;;;;-1:-1:-1;10138:565:43;;;;;:::i;:::-;;:::i;7016:138::-;;;;;;;;;;-1:-1:-1;7016:138:43;;;;;:::i;:::-;;:::i;20036:2501:44:-;;;;;;;;;;-1:-1:-1;20036:2501:44;;;;;:::i;:::-;;:::i;14423:288:43:-;;;;;;;;;;-1:-1:-1;14423:288:43;;;;;:::i;:::-;;:::i;12632:1246::-;;;;;;;;;;-1:-1:-1;12632:1246:43;;;;;:::i;:::-;;:::i;8482:211:1:-;;;;;;;;;;;;;:::i;2142:77:43:-;;;;;;;;;;-1:-1:-1;2142:77:43;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2142:77:43;;;4400:93:1;;;;;;;;;;;;;:::i;3947:63:44:-;;;;;;;;;;-1:-1:-1;3947:63:44;2443:4:0;3947:63:44;;2454:30:43;;;;;;;;;;;;;;;;3780:207:0;;;;;;;;;;-1:-1:-1;3780:207:0;;;;;:::i;:::-;;:::i;11500:418:44:-;;;;;;;;;;-1:-1:-1;11500:418:44;;;;;:::i;:::-;;:::i;8968:647:43:-;;;;;;;;;;-1:-1:-1;8968:647:43;;;;;:::i;:::-;;:::i;5858:43:46:-;;;;;;;;;;-1:-1:-1;5858:43:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5858:43:46;;;;;;;;;;;;-1:-1:-1;;;5858:43:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9483:368:1:-;;;;;;;;;;;;;:::i;:::-;;;;14880:14:47;14868:27;;;14850:46;;14932:27;;;;14927:2;14912:18;;14905:55;14823:18;9483:368:1;14680:286:47;15565:414:43;;;;;;;;;;-1:-1:-1;15565:414:43;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;25746:297:44:-;;;;;;;;;;-1:-1:-1;25746:297:44;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1627:57:43:-;;;;;;;;;;-1:-1:-1;1627:57:43;;;;-1:-1:-1;;;;;1627:57:43;;;700:1201:39;;;;;;;;;;-1:-1:-1;700:1201:39;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1819:58:3:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:3;;;;;;;;;;;;:::i;10353:591:44:-;;;;;;;;;;-1:-1:-1;10353:591:44;;;;;:::i;:::-;;:::i;27943:224::-;;;;;;;;;;-1:-1:-1;27943:224:44;;;;;:::i;:::-;;:::i;1992:62:43:-;;;;;;;;;;-1:-1:-1;1992:62:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;19683:25:47;;;19751:14;;19744:22;19739:2;19724:18;;19717:50;19656:18;1992:62:43;19515:258:47;4974:189:44;;;;;;;;;;-1:-1:-1;4974:189:44;;;;;:::i;:::-;;:::i;4918:187:43:-;;;;;;;;;;-1:-1:-1;4918:187:43;;;;;:::i;:::-;;:::i;2316:53::-;;;;;;;;;;-1:-1:-1;2316:53:43;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2316:53:43;;;;-1:-1:-1;;;2316:53:43;;;;;;;;;-1:-1:-1;;;;;20774:47:47;;;20756:66;;20858:47;;;;20853:2;20838:18;;20831:75;20729:18;2316:53:43;20582:330:47;18860:399:44;;;;;;;;;;-1:-1:-1;18860:399:44;;;;;:::i;:::-;;:::i;4071:38::-;;;;;;;;;;-1:-1:-1;4071:38:44;;;;-1:-1:-1;;;;;4071:38:44;;;26468:284;;;;;;;;;;-1:-1:-1;26468:284:44;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;27245:382::-;;;;;;;;;;-1:-1:-1;27245:382:44;;;;;:::i;:::-;;:::i;5492:50:46:-;;;;;;;;;;;;5538:4;5492:50;;1307:74:43;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1307:74:43;;9087:338:1;;;;;;;;;;;;;:::i;3266:1058:43:-;;;;;;;;;;-1:-1:-1;3266:1058:43;;;;;:::i;:::-;;:::i;11244:344:1:-;;;;;;;;;;;;;:::i;8751:278::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;24131:32:47;;;24113:51;;24212:14;24200:27;;;24195:2;24180:18;;24173:55;24086:18;8751:278:1;23941:293:47;5032:278:1;;;;;;;;;;-1:-1:-1;5032:278:1;;;;;:::i;:::-;;:::i;10819:128::-;;;;;;;;;;;;;:::i;1840:68:43:-;;;;;;;;;;-1:-1:-1;1840:68:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14804:761:44;;;;;;;;;;-1:-1:-1;14804:761:44;;;;;:::i;:::-;;:::i;1500:80:43:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1500:80:43;;23135:344:44;;;;;;;;;;-1:-1:-1;23135:344:44;;;;;:::i;:::-;;:::i;4170:39::-;;;;;;;;;;;;;;;;4494:60;;;;;;;;;;;;-1:-1:-1;;;4494:60:44;;4146:219:1;4231:4;-1:-1:-1;;;;;;4254:64:1;;-1:-1:-1;;;4254:64:1;;:104;;;4322:36;4346:11;4322:23;:36::i;:::-;4247:111;4146:219;-1:-1:-1;;4146:219:1:o;13102:126::-;2443:4:0;3272:16;2443:4;3272:10;:16::i;:::-;13193:28:1::1;:26;:28::i;:::-;13102:126:::0;:::o;8019:400:43:-;8249:18;;:44;;-1:-1:-1;;;8249:44:43;;8282:10;8249:44;;;4754:51:47;8212:17:43;;-1:-1:-1;;;;;8249:18:43;;:32;;4727:18:47;;8249:44:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8241:80;;;;-1:-1:-1;;;8241:80:43;;;;;;;;;;;;8338:74;8357:10;8369:9;8380:13;8395:8;8405:6;8338:18;:74::i;:::-;8331:81;;8019:400;;;;;;;;:::o;13731:507:44:-;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;13974:15:44::1;13911:59;13921:10;13933;13945:9;13956:13;13911:9;:59::i;:::-;:78;;;;;;;;:::i;:::-;;13890:137;;;;-1:-1:-1::0;;;13890:137:44::1;;;;;;;;;;;;14037:23;14063:61;14075:10;14087;14099:9;14110:13;14063:11;:61::i;:::-;14134:23;;:41:::0;;-1:-1:-1;;14185:46:44;;;;;-1:-1:-1;1908:20:38;:18;:20::i;:::-;13731:507:44;;;:::o;5339:193:43:-;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;5425:48:43::1;-1:-1:-1::0;;;;;;;;;;;5458:14:43::1;5425:10;:48::i;:::-;5488:37;::::0;-1:-1:-1;;;;;5488:37:43;::::1;::::0;::::1;::::0;;;::::1;1908:20:38::0;:18;:20::i;6695:150:43:-;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;4456:29:43::1;-1:-1:-1::0;;;;;;;;;;;4456:10:43::1;:29::i;:::-;6799:39:::2;6828:9;6799:28;:39::i;:::-;1908:20:38::0;:18;:20::i;4807:191:0:-;4872:7;4967:14;;;-1:-1:-1;;;;;;;;;;;4967:14:0;;;;;:24;;;;4807:191::o;4656:276:1:-;4786:4;4782:104;;4835:40;;-1:-1:-1;;;4835:40:1;;;;;;;;;;;4782:104;4895:30;4911:4;4917:7;4895:15;:30::i;:::-;4656:276;;:::o;6371:146:43:-;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;4456:29:43::1;-1:-1:-1::0;;;;;;;;;;;4456:10:43::1;:29::i;:::-;6473:37:::2;6493:16;6473:19;:37::i;11170:687::-:0;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;4641:32:43::1;-1:-1:-1::0;;;;;;;;;;;4641:10:43::1;:32::i;:::-;-1:-1:-1::0;;;;;11470:23:43;::::2;::::0;11466:92:::2;;11509:38;11537:9;11509:27;:38::i;:::-;11567:24;11594:57;11614:9;11625:10;11637:13;11594:19;:57::i;:::-;11661:42;::::0;;;:24:::2;:42;::::0;;;;;;:81;;-1:-1:-1;;;;;;11661:81:43::2;-1:-1:-1::0;;;;;11661:81:43;::::2;::::0;;::::2;::::0;;;11757:93;;11661:42;;-1:-1:-1;11661:81:43;11813:10;;11661:42;;11757:93:::2;::::0;::::2;::::0;11802:9;;11825:13;;11757:93:::2;:::i;:::-;;;;;;;;11379:478;1908:20:38::0;:18;:20::i;:::-;11170:687:43;;;;:::o;5995:682:1:-;-1:-1:-1;;;;;;;;;;;6231:26:1;;:55;;;;;6272:14;:12;:14::i;:::-;-1:-1:-1;;;;;6261:25:1;:7;-1:-1:-1;;;;;6261:25:1;;6231:55;6227:401;;;6303:23;6328:15;6347:21;:19;:21::i;:::-;6302:66;;-1:-1:-1;6302:66:1;-1:-1:-1;;;;;;6386:29:1;;;;;:58;;-1:-1:-1;16952:13:1;;;;6386:58;:91;;;-1:-1:-1;17180:15:1;17169:26;;;;6448:29;6386:91;6382:185;;;6504:48;;-1:-1:-1;;;6504:48:1;;767:14:47;755:27;;6504:48:1;;;737:46:47;710:18;;6504:48:1;;;;;;;;6382:185;-1:-1:-1;;6580:37:1;;-1:-1:-1;;;;6580:37:1;;;6227:401;6637:33;6656:4;6662:7;6637:18;:33::i;12355:503:44:-;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;12636:15:44::1;12573:59;12583:10;12595;12607:9;12618:13;12573:9;:59::i;:::-;:78;;;;;;;;:::i;:::-;;12552:137;;;;-1:-1:-1::0;;;12552:137:44::1;;;;;;;;;;;;12699:33;12717:14;12699:17;:33::i;:::-;12837:14;12742:61;12754:10;12766;12778:9;12789:13;12742:11;:61::i;:::-;:92:::0;;:109;1908:20:38;:18;:20::i;16429:243:43:-;16570:7;16627:9;16638:10;16650:13;16610:54;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16600:65;;;;;;16593:72;;16429:243;;;;;;:::o;4392:96:44:-;4442:46;4384:2;5538:4:46;4442:46:44;:::i;:::-;4392:96;:::o;4161:214:3:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;3708:134::-:0;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:3;:::o;24005:451:44:-;24171:6;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;24260:13:44::1;24197:59;24207:10;24219;24231:9;24242:13;24197:9;:59::i;:::-;:76;;;;;;;;:::i;:::-;;24193:164;;24289:57;24297:10;24309;24321:9;24332:13;24289:7;:57::i;:::-;;24193:164;24374:61;24386:10;24398;24410:9;24421:13;24374:11;:61::i;:::-;:75;;;24367:82;;1908:20:38::0;:18;:20::i;5922:170:43:-;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;4456:29:43::1;-1:-1:-1::0;;;;;;;;;;;4456:10:43::1;:29::i;:::-;6045:40:::2;6066:8;6076;6045:20;:40::i;:::-;1908:20:38::0;:18;:20::i;25032:274:44:-;25206:14;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;25243:56:44::1;25251:9;25262:10;25274:9;25285:13;25243:7;:56::i;:::-;25236:63;;1908:20:38::0;:18;:20::i;:::-;25032:274:44;;;;;;:::o;10196:150:1:-;2443:4:0;3272:16;2443:4;3272:10;:16::i;:::-;10303:36:1::1;10330:8;10303:26;:36::i;12486:145::-:0;2443:4:0;3272:16;2443:4;3272:10;:16::i;:::-;12590:34:1::1;12615:8;12590:24;:34::i;10138:565:43:-:0;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;4641:32:43::1;-1:-1:-1::0;;;;;;;;;;;4641:10:43::1;:32::i;:::-;10359:33:::2;10377:14;10359:17;:33::i;:::-;10402:24;10429:57;10449:9;10460:10;10472:13;10429:19;:57::i;:::-;10537:55;::::0;;;;::::2;::::0;;;;;10586:4:::2;10537:55;::::0;;::::2;::::0;;;-1:-1:-1;10496:38:43;;;:20:::2;:38:::0;;;;;;;:96;;;;;;::::2;::::0;;-1:-1:-1;;10496:96:43::2;::::0;::::2;;::::0;;;::::2;::::0;;10607:89;10496:38;;-1:-1:-1;10654:10:43;;-1:-1:-1;;;;;10607:89:43;::::2;::::0;10496:38;;10607:89:::2;::::0;::::2;::::0;10666:13;;10537:55;;10607:89:::2;:::i;7016:138::-:0;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;4456:29:43::1;-1:-1:-1::0;;;;;;;;;;;4456:10:43::1;:29::i;:::-;7114:33:::2;7137:9;7114:22;:33::i;20036:2501:44:-:0;20249:17;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;-1:-1:-1;;;;;20286:22:44;::::1;20278:62;;;;-1:-1:-1::0;;;20278:62:44::1;;;;;;;;;;;;20420:14;20358:58;20368:9;20379:10;20391:9;20402:13;20358:9;:58::i;:::-;:76;;;;;;;;:::i;:::-;;20350:112;;;;-1:-1:-1::0;;;20350:112:44::1;;;;;;;;;;;;20472:23;20498:60;20510:9;20521:10;20533:9;20544:13;20498:11;:60::i;:::-;20568:16;::::0;::::1;:27:::0;;-1:-1:-1;;;;;;20568:27:44::1;-1:-1:-1::0;;;;;20568:27:44;::::1;;::::0;;20625:16:::1;::::0;::::1;::::0;20666:28;;;;20568:16;;-1:-1:-1;20625:16:44;20716:15:::1;20625:16:::0;20666:28;20716:15:::1;:::i;:::-;20704:27:::0;-1:-1:-1;20745:13:44;;20741:115:::1;;20774:16;::::0;::::1;::::0;:71:::1;::::0;-1:-1:-1;;;;;20774:16:44::1;20808:10;20828:4;20835:9:::0;20774:33:::1;:71::i;:::-;20866:20;20889:11;:9;:11::i;:::-;20866:34;;21234:16;21264:27;21283:7;21264:18;:27::i;:::-;21253:38;::::0;:8;:38:::1;:::i;:::-;21234:57:::0;-1:-1:-1;21305:12:44;;21301:218:::1;;21333:16;::::0;::::1;::::0;:64:::1;::::0;-1:-1:-1;;;;;21333:16:44::1;21380:5:::0;21388:8;21333:38:::1;:64::i;:::-;21411:11;:9;:11::i;:::-;21450:16;::::0;::::1;::::0;21469:38:::1;::::0;;::::1;::::0;::::1;::::0;;;;;21411:97;;-1:-1:-1;;;21411:97:44;;-1:-1:-1;;;;;21450:16:44;;::::1;21411:97;::::0;::::1;27816:51:47::0;27903:13;;27883:18;;;27876:41;21411:30:44;::::1;::::0;::::1;::::0;27789:18:47;;21411:97:44::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21301:218;21529:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;21529:25:44::1;;21568:10;21580:46;21607:7;21616:9;21580:26;:46::i;:::-;21628:45;21648:13;21663:9;21628:19;:45::i;:::-;21529:154;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;21753:14:44::1;::::0;::::1;::::0;21721::::1;::::0;-1:-1:-1;21753:18:44;;;;:61:::1;;-1:-1:-1::0;21775:23:44::1;::::0;::::1;:39:::0;::::1;::::0;::::1;;;21753:61;21749:209;;;-1:-1:-1::0;21839:14:44::1;::::0;::::1;::::0;;21884:1:::1;21867:18:::0;;;21899:16:::1;::::0;::::1;::::0;:48:::1;::::0;-1:-1:-1;;;;;21899:16:44::1;21929:9:::0;21839:14;21899:29:::1;:48::i;:::-;22028:8;-1:-1:-1::0;;;;;21973:134:44::1;22010:7;:16;;;;;;;;;;-1:-1:-1::0;;;;;22010:16:44::1;-1:-1:-1::0;;;;;21973:134:44::1;21999:9;-1:-1:-1::0;;;;;21973:134:44::1;;22038:10;22050:9;22061:13;22076:7;:21;;;21973:134;;;;;;;;;:::i;:::-;;;;;;;;22229:30;:28;:30::i;:::-;-1:-1:-1::0;;;;;22294:29:44;::::1;1818:19:35::0;:23;;22294:82:44::1;;;;-1:-1:-1::0;22329:23:44::1;::::0;::::1;:47:::0;;;::::1;;;22294:82;22290:203;;;22392:90;::::0;-1:-1:-1;;;22392:90:44;;-1:-1:-1;;;;;22392:44:44;::::1;::::0;::::1;::::0;:90:::1;::::0;22437:10;;22449:9;;22460:13;;22475:6;;22392:90:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22290:203;22502:28;:26;:28::i;:::-;20268:2269;;;;;;1908:20:38::0;:18;:20::i;14423:288:43:-;14573:25;14621:24;:83;14646:57;14666:9;14677:10;14689:13;14646:19;:57::i;:::-;14621:83;;;;;;;;;;;-1:-1:-1;14621:83:43;;-1:-1:-1;;;;;14621:83:43;;14423:288;-1:-1:-1;;;;14423:288:43:o;12632:1246::-;12862:17;12955:23;12981:60;12993:9;13004:10;13016:9;13027:13;12981:11;:60::i;:::-;12955:86;;13051:24;13078:57;13098:9;13109:10;13121:13;13078:19;:57::i;:::-;13149:29;;;;:11;:29;;;;;;;;13179:16;;;;-1:-1:-1;;;;;13179:16:43;13149:47;;;;;;;13179:16;13149:53;;13051:84;;-1:-1:-1;13149:53:43;;13145:169;;;13249:29;;;;:11;:29;;;;;;;;13279:16;;;;-1:-1:-1;;;;;13279:16:43;13249:47;;;;;;;:54;13218:28;;;:85;13145:169;13327:38;;;;:20;:38;;;;;:44;;;;;13323:163;;;13428:38;;;;:20;:38;;;;;:47;13387:38;;;:88;13323:163;13496:35;13534:68;13565:9;13576:10;13588:13;13534:30;:68::i;:::-;13621:33;;-1:-1:-1;;;13621:33:43;;-1:-1:-1;;;;;4772:32:47;;;13621:33:43;;;4754:51:47;13496:106:43;;-1:-1:-1;13621:23:43;;;;;;4727:18:47;;13621:33:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13613:68;;;;-1:-1:-1;;;13613:68:43;;;;;;;;;;;;13699:35;;-1:-1:-1;;;13699:35:43;;13723:10;13699:35;;;4754:51:47;-1:-1:-1;;;;;13699:23:43;;;;;4727:18:47;;13699:35:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13691:68;;;;-1:-1:-1;;;13691:68:43;;;;;;;;;;;;13776:95;13798:8;13808:9;13819:10;13831:9;13842:13;13857;13776:21;:95::i;:::-;13769:102;;;;;12632:1246;;;;;;;;;:::o;8482:211:1:-;-1:-1:-1;;;;;;;;;;;8664:22:1;-1:-1:-1;;;;;8664:22:1;;8482:211::o;4400:93::-;4446:7;4472:14;:12;:14::i;:::-;4465:21;;4400:93;:::o;3780:207:0:-;3857:4;3949:14;;;-1:-1:-1;;;;;;;;;;;3949:14:0;;;;;;;;-1:-1:-1;;;;;3949:31:0;;;;;;;;;;;;;;;3780:207::o;11500:418:44:-;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;11748:15:44::1;11685:59;11695:10;11707;11719:9;11730:13;11685:9;:59::i;:::-;:78;;;;;;;;:::i;:::-;;11664:137;;;;-1:-1:-1::0;;;11664:137:44::1;;;;;;;;;;;;11907:4;11811:61;11823:10;11835;11847:9;11858:13;11811:11;:61::i;:::-;:77;;:100:::0;;;::::1;;;;-1:-1:-1::0;;11811:100:44;;::::1;::::0;;;::::1;::::0;;1908:20:38;:18;:20::i;8968:647:43:-;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;4641:32:43::1;-1:-1:-1::0;;;;;;;;;;;4641:10:43::1;:32::i;:::-;9202:25:::2;:23;:25::i;:::-;:58;::::0;-1:-1:-1;;;9202:58:43;;-1:-1:-1;;;;;4772:32:47;;;9202:58:43::2;::::0;::::2;4754:51:47::0;9202:39:43;;;::::2;::::0;::::2;::::0;4727:18:47;;9202:58:43::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9194:90;;;;-1:-1:-1::0;;;9194:90:43::2;;;;;;;;;;;;9294:29;9308:8;9318:4;9294:13;:29::i;:::-;9333:24;9360:57;9380:9;9391:10;9403:13;9360:19;:57::i;:::-;9469:39;::::0;;;;::::2;::::0;;;;;9502:4:::2;9469:39;::::0;;::::2;::::0;;;-1:-1:-1;9427:29:43;;;:11:::2;:29:::0;;;;;-1:-1:-1;;;;;9427:39:43;::::2;::::0;;;;;;;;:81;;;;;;;;::::2;::::0;;-1:-1:-1;;9427:81:43::2;::::0;::::2;;::::0;;;::::2;::::0;;;9523:85;;9427:29;;-1:-1:-1;9427:39:43;9566:10;;9427:29;;9523:85:::2;::::0;::::2;::::0;9555:9;;9578:13;;9469:39;;9523:85:::2;:::i;:::-;;;;;;;;9184:431;1908:20:38::0;:18;:20::i;:::-;8968:647:43;;;;;:::o;9483:368:1:-;-1:-1:-1;;;;;;;;;;;9706:23:1;9548:15;;-1:-1:-1;;;9706:23:1;;;;-1:-1:-1;;;;;;;;;;;16952:13:1;;;;;9747:57;;-1:-1:-1;17180:15:1;17169:26;;;;9775:29;9747:57;9746:98;;9839:1;9842;9746:98;;;9809:15;;;;-1:-1:-1;;;9809:15:1;;;;9826:8;9746:98;9739:105;;;;;9483:368;;:::o;15565:414:43:-;15726:33;15761:14;15791:35;15829:68;15860:9;15871:10;15883:13;15829:30;:68::i;:::-;15791:106;;15915:9;-1:-1:-1;;;;;15915:22:43;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15915:24:43;;;;;;;;;;;;:::i;:::-;15941:9;-1:-1:-1;;;;;15941:28:43;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15907:65;;;;;15565:414;;;;;;:::o;25746:297:44:-;25939:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25939:14:44;2127:19:38;:17;:19::i;:::-;25976:60:44::1;25988:9;25999:10;26011:9;26022:13;25976:11;:60::i;:::-;25969:67;::::0;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;25969:67:44;;::::1;::::0;;;;::::1;::::0;;::::1;;::::0;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;-1:-1:-1::0;;;25969:67:44;;::::1;::::0;::::1;;;::::0;;;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;::::0;;::::1;::::0;;::::1;::::0;::::1;;;::::0;;::::1;::::0;;;;;;::::1;::::0;::::1;;;::::0;;;;;;;;;::::1;::::0;::::1;;;::::0;;;;;;;;;;::::1;::::0;;::::1;;;::::0;;;;;;;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;;;::::1;::::0;::::1;::::0;;;;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;-1:-1:-1;25746:297:44;;;;;;:::o;700:1201:39:-;760:22;816:4;-1:-1:-1;;;;;804:24:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;794:34:39;-1:-1:-1;843:9:39;838:1057;858:15;;;838:1057;;;1458:12;;1503:4;1522;;1527:1;1522:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;1495:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1457:73;;;;1550:7;1545:306;;1677:2;1661:6;:13;:18;1657:32;;;1681:8;;;1657:32;1760:4;1752:6;1748:17;1738:27;;1818:6;1807:28;;;;;;;;;;;;:::i;:::-;1800:36;;-1:-1:-1;;;1800:36:39;;;;;;;;:::i;1545:306::-;1878:6;1865:7;1873:1;1865:10;;;;;;;;:::i;:::-;;;;;;;;;;:19;-1:-1:-1;;875:3:39;;838:1057;;;;700:1201;;;;:::o;10353:591:44:-;10523:17;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;10640:15:44::1;10577:59;10587:10;10599;10611:9;10622:13;10577:9;:59::i;:::-;:78;;;;;;;;:::i;:::-;;10556:137;;;;-1:-1:-1::0;;;10556:137:44::1;;;;;;;;;;;;10703:23;10729:61;10741:10;10753;10765:9;10776:13;10729:11;:61::i;:::-;10800:28:::0;;;:35;;;10921:16:::1;::::0;::::1;::::0;10703:87;;-1:-1:-1;10914:23:44::1;::::0;10831:4;10914:23:::1;:::i;:::-;10907:30;;;1908:20:38::0;:18;:20::i;27943:224:44:-;28080:12;28115:45;28135:13;28150:9;28115:19;:45::i;4974:189::-;4158:30:2;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:2;-1:-1:-1;;;4302:15:2;;;4301:16;;-1:-1:-1;;;;;4348:14:2;4279:19;4724:16;;:34;;;;;4744:14;4724:34;4704:54;;4768:17;4788:11;-1:-1:-1;;;;;4788:16:2;4803:1;4788:16;:50;;;;-1:-1:-1;4816:4:2;4808:25;:30;4788:50;4768:70;;4854:12;4853:13;:30;;;;;4871:12;4870:13;4853:30;4849:91;;;4906:23;;-1:-1:-1;;;4906:23:2;;;;;;;;;;;4849:91;4949:18;;-1:-1:-1;;4949:18:2;4966:1;4949:18;;;4977:67;;;;5011:22;;-1:-1:-1;;;;5011:22:2;-1:-1:-1;;;5011:22:2;;;4977:67;5090:66:44::1;5116:9;5127:14;5143:12;5090:25;:66::i;:::-;5068:14:2::0;5064:101;;;5098:23;;-1:-1:-1;;;;5098:23:2;;;5140:14;;-1:-1:-1;32390:50:47;;5140:14:2;;32378:2:47;32363:18;5140:14:2;;;;;;;5064:101;4092:1079;;;;;4974:189:44;;;:::o;4918:187:43:-;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;5001:47:43::1;-1:-1:-1::0;;;;;;;;;;;5033:14:43::1;5001:9;:47::i;:::-;5063:35;::::0;-1:-1:-1;;;;;5063:35:43;::::1;::::0;::::1;::::0;;;::::1;1908:20:38::0;:18;:20::i;18860:399:44:-;19063:17;19161:91;19177:10;19189:9;19200:10;19212:9;19223:13;19238;19161:15;:91::i;26468:284::-;26659:5;2127:19:38;:17;:19::i;:::-;26687:58:44::1;26697:9;26708:10;26720:9;26731:13;26687:9;:58::i;27245:382::-:0;27436:4;2127:19:38;:17;:19::i;:::-;27456:11:44::1;27470:58;27480:9;27491:10;27503:9;27514:13;27470:9;:58::i;:::-;27456:72:::0;-1:-1:-1;27554:13:44::1;27545:5;:22;;;;;;;;:::i;:::-;;:49;;;-1:-1:-1::0;27580:14:44::1;27571:5;:23;;;;;;;;:::i;:::-;;27545:49;:75;;;-1:-1:-1::0;27607:13:44::1;27598:5;:22;;;;;;;;:::i;:::-;;27538:82:::0;27245:382;-1:-1:-1;;;;;;27245:382:44:o;9087:338:1:-;-1:-1:-1;;;;;;;;;;;9284:23:1;9145:6;;-1:-1:-1;;;;;;;;;;;3245:45:1;-1:-1:-1;;;9284:23:1;;;;16952:13;;;;;9325:56;;-1:-1:-1;17180:15:1;17169:26;;;;9353:28;9324:94;;9403:15;;-1:-1:-1;;;9403:15:1;;;;9324:94;;;9385:15;;;;-1:-1:-1;;;9385:15:1;;;;9324:94;9317:101;;;;9087:338;:::o;3266:1058:43:-;4158:30:2;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:2;-1:-1:-1;;;4302:15:2;;;4301:16;;-1:-1:-1;;;;;4348:14:2;4279:19;4724:16;;:34;;;;;4744:14;4724:34;4704:54;;4768:17;4788:11;-1:-1:-1;;;;;4788:16:2;4803:1;4788:16;:50;;;;-1:-1:-1;4816:4:2;4808:25;:30;4788:50;4768:70;;4854:12;4853:13;:30;;;;;4871:12;4870:13;4853:30;4849:91;;;4906:23;;-1:-1:-1;;;4906:23:2;;;;;;;;;;;4849:91;4949:18;;-1:-1:-1;;4949:18:2;4966:1;4949:18;;;4977:67;;;;5011:22;;-1:-1:-1;;;;5011:22:2;-1:-1:-1;;;5011:22:2;;;4977:67;3619:73:43::1;3645:16;3663:14;3679:12;3619:25;:73::i;:::-;3874:42;-1:-1:-1::0;;;;;;;;;;;3904:11:43::1;3874:10;:42::i;:::-;;3926:54;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;3926:13:43::1;:54::i;:::-;3991:55;4020:25;3991:28;:55::i;:::-;4056:43;4079:19;4056:22;:43::i;:::-;4114:9;4109:162;4129:29:::0;;::::1;4109:162;;;4179:81;4200:18;;4219:1;4200:21;;;;;;;:::i;:::-;:30;::::0;::::1;:21;::::0;;::::1;;:30:::0;;::::1;::::0;-1:-1:-1;4200:30:43::1;:::i;:::-;4232:18;;4251:1;4232:21;;;;;;;:::i;:::-;;;;;;:27;;4179:20;:81::i;:::-;4160:3;;4109:162;;;;4280:37;4300:16;4280:19;:37::i;:::-;5068:14:2::0;5064:101;;;5098:23;;-1:-1:-1;;;;5098:23:2;;;5140:14;;-1:-1:-1;32390:50:47;;5140:14:2;;32378:2:47;32363:18;5140:14:2;;;;;;;5064:101;4092:1079;;;;;3266:1058:43;;;;;;;;;:::o;11244:344:1:-;11308:23;11337:21;:19;:21::i;:::-;-1:-1:-1;11307:51:1;-1:-1:-1;966:10:4;-1:-1:-1;;;;;11372:31:1;;;11368:175;;11486:46;;-1:-1:-1;;;11486:46:1;;966:10:4;11486:46:1;;;4754:51:47;4727:18;;11486:46:1;4574:237:47;11368:175:1;11552:29;:27;:29::i;8751:278::-;-1:-1:-1;;;;;;;;;;;8967:22:1;-1:-1:-1;;;;;8967:22:1;;;-1:-1:-1;;;8991:30:1;;;;;;8751:278::o;5032:::-;5163:4;5159:104;;5212:40;;-1:-1:-1;;;5212:40:1;;;;;;;;;;;5159:104;5272:31;5289:4;5295:7;5272:16;:31::i;10819:128::-;2443:4:0;3272:16;2443:4;3272:10;:16::i;:::-;10911:29:1::1;:27;:29::i;14804:761:44:-:0;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;15161:15:44::1;15098:59;15108:10;15120;15132:9;15143:13;15098:9;:59::i;:::-;:78;;;;;;;;:::i;:::-;;15077:137;;;;-1:-1:-1::0;;;15077:137:44::1;;;;;;;;;;;;15224:23;15250:61;15262:10;15274;15286:9;15297:13;15250:11;:61::i;:::-;15321:23;;:73:::0;;-1:-1:-1;;15404:73:44;15321;;::::1;;;-1:-1:-1::0;;15404:73:44;;;;::::1;;;;-1:-1:-1::0;;15487:71:44::1;::::0;;::::1;;;;::::0;;-1:-1:-1;1908:20:38;:18;:20::i;:::-;14804:761:44;;;;;;:::o;23135:344::-;23294:17;23396:76;23412:10;23424:9;23435:10;23447:9;23458:13;23396:15;:76::i;3491:202:0:-;3576:4;-1:-1:-1;;;;;;3599:47:0;;-1:-1:-1;;;3599:47:0;;:87;;-1:-1:-1;;;;;;;;;;1101:40:5;;;3650:36:0;1002:146:5;4196:103:0;4262:30;4273:4;966:10:4;4262::0;:30::i;13355:94:1:-;13420:22;13437:1;13440;13420:16;:22::i;:::-;13355:94::o;7694:2132:44:-;7908:17;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;8008:13:44::1;7945:59;7955:10;7967;7979:9;7990:13;7945:9;:59::i;:::-;:76;;;;;;;;:::i;:::-;;7937:111;;;;-1:-1:-1::0;;;7937:111:44::1;;;;;;;;;;;;8066:25;:23;:25::i;:::-;-1:-1:-1::0;;;;;8066:47:44::1;;8114:10;8066:59;;;;;;;;;;;;;3023:25:47::0;;3011:2;2996:18;;2877:177;8066:59:44::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8058:93;;;;-1:-1:-1::0;;;8058:93:44::1;;;;;;;;;;;;8169:25;:23;:25::i;:::-;:58;::::0;-1:-1:-1;;;8169:58:44;;-1:-1:-1;;;;;4772:32:47;;;8169:58:44::1;::::0;::::1;4754:51:47::0;8169:39:44;;;::::1;::::0;::::1;::::0;4727:18:47;;8169:58:44::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8161:90;;;;-1:-1:-1::0;;;8161:90:44::1;;;;;;;;;;;;34604:15:::0;8269:9:::1;:29;;8261:59;;;;-1:-1:-1::0;;;8261:59:44::1;;;;;;;;;;;;4442:46;4384:2;5538:4:46;4442:46:44;:::i;:::-;8509:13;:20;:47;;8501:80;;;;-1:-1:-1::0;;;8501:80:44::1;;;;;;;;;;;;8592:16;8611:11;:9;:11::i;:::-;:46;::::0;-1:-1:-1;;;8611:46:44;;-1:-1:-1;;;;;4772:32:47;;;8611:46:44::1;::::0;::::1;4754:51:47::0;8611:27:44;;;::::1;::::0;::::1;::::0;4727:18:47;;8611:46:44::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:55;;;8592:74;;8745:645;;;;;;;;8785:1;-1:-1:-1::0;;;;;8745:645:44::1;;;;;8819:1;-1:-1:-1::0;;;;;8745:645:44::1;;;;;8845:8;-1:-1:-1::0;;;;;8745:645:44::1;;;;;8876:5;8745:645;;;;;;8912:316;;;;;;;;8958:5;8912:316;;;;;;8998:5;8912:316;;;;;;9046:5;8912:316;;;;;;9094:5;8912:316;;;;;;9141:5;8912:316;;;;;;9170:8;8912:316;;;;9212:1;8912:316;;::::0;8745:645:::1;;;;9257:1;8745:645;;;;9287:1;8745:645;;;;9318:1;8745:645;;;;9341:6;8745:645;;;;9371:8;8745:645;;::::0;8676:8:::1;:66;8685:56;8692:10;8704;8716:9;8727:13;8685:6;:56::i;:::-;8676:66:::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;8676:66:44;:714;;;;-1:-1:-1;;;;;;8676:714:44;;::::1;-1:-1:-1::0;;;;;8676:714:44;;::::1;;::::0;;;;::::1;::::0;-1:-1:-1;8676:714:44;::::1;::::0;;;;::::1;::::0;;::::1;;::::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;::::1;-1:-1:-1::0;;;;;;8676:714:44;;;;-1:-1:-1;;;8676:714:44;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;8676:714:44;;;;::::1;;-1:-1:-1::0;;8676:714:44;;;;;::::1;::::0;::::1;;::::0;::::1;;-1:-1:-1::0;;8676:714:44;;;::::1;;::::0;;;::::1;-1:-1:-1::0;;8676:714:44;;;;;;;::::1;;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;8676:714:44::1;::::0;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;9405:10;;9401:101:::1;;9431:60;-1:-1:-1::0;;;;;9431:25:44;::::1;9457:10;9477:4;9484:6:::0;9431:25:::1;:60::i;:::-;9530:10;-1:-1:-1::0;;;;;9517:99:44::1;;9542:10;9554:9;9565:13;9588:8;9599:6;9607:8;9517:99;;;;;;;;;;;:::i;:::-;;;;;;;;9807:12;:8:::0;9818:1:::1;9807:12;:::i;:::-;9800:19;;;1908:20:38::0;:18;:20::i;2667:183::-;2799:11;;;;2791:52;;;;-1:-1:-1;;;2791:52:38;;;;;;;;;;;2856:136;2966:11;:19;;-1:-1:-1;;2966:19:38;;;2856:136::o;31793:818:44:-;31945:5;31966:23;31992:60;32004:9;32015:10;32027:9;32038:13;31992:11;:60::i;:::-;32075:16;;;;31966:86;;-1:-1:-1;;;;;;32075:16:44;32063:65;;32115:13;32108:20;;;;;32063:65;32143:16;;-1:-1:-1;;;;;32143:16:44;32139:58;;32182:15;32175:22;;;;;32139:58;32212:15;;;;-1:-1:-1;;;32212:15:44;;;;32208:41;;;32236:13;32229:20;;;;;32208:41;32264:16;;;;-1:-1:-1;;;;;32264:16:44;32260:143;;34604:15;32317:7;:22;;;:42;;:75;;32378:14;32317:75;;;32362:13;32317:75;32310:82;;;;;32260:143;32420:12;:10;:12::i;:::-;-1:-1:-1;;;;;32420:21:44;;32455:10;32467:46;32494:7;32503:9;32467:26;:46::i;:::-;32515:45;32535:13;32550:9;32515:19;:45::i;:::-;32420:150;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:184;;32590:14;32420:184;;;-1:-1:-1;32573:14:44;;31793:818;-1:-1:-1;;;;;31793:818:44:o;31139:264::-;31293:15;31331:8;:65;31340:55;31347:9;31358:10;31370:9;31381:13;31340:6;:55::i;:::-;31331:65;;;;;;;;;;;31324:72;;31139:264;;;;;;:::o;2998:206:38:-;3179:11;:18;;-1:-1:-1;;3179:18:38;3193:4;3179:18;;;2998:206::o;18194:251:43:-;18270:38;18298:9;18270:27;:38::i;:::-;18318:24;:63;;-1:-1:-1;;;;;;18318:63:43;-1:-1:-1;;;;;18318:63:43;;;;;;;;18396:42;;;;-1:-1:-1;;18396:42:43;18194:251;:::o;5294:136:0:-;5368:18;5381:4;5368:12;:18::i;:::-;3272:16;3283:4;3272:10;:16::i;:::-;5398:25:::1;5409:4;5415:7;5398:10;:25::i;17842:221:43:-:0;17916:41;17940:16;17916:23;:41::i;:::-;17967:15;:34;;;18016:40;;3023:25:47;;;18016:40:43;;3011:2:47;2996:18;18016:40:43;;;;;;;17842:221;:::o;19045:250::-;19146:87;19178:9;-1:-1:-1;;;19146:31:43;:87::i;:::-;19125:163;;;;-1:-1:-1;;;19125:163:43;;;;;;;;;;;6396:245:0;-1:-1:-1;;;;;6489:34:0;;966:10:4;6489:34:0;6485:102;;6546:30;;-1:-1:-1;;;6546:30:0;;;;;;;;;;;6485:102;6597:37;6609:4;6615:18;6597:11;:37::i;20383:182:43:-;20481:15;;20469:8;:27;;20461:54;;;;-1:-1:-1;;;20461:54:43;;;;;;;;;;;;20525:33;20549:8;20525:23;:33::i;4578:312:3:-;4658:4;-1:-1:-1;;;;;4667:6:3;4650:23;;;:120;;;4764:6;-1:-1:-1;;;;;4728:42:3;:32;-1:-1:-1;;;;;;;;;;;1519:53:15;-1:-1:-1;;;;;1519:53:15;;1441:138;4728:32:3;-1:-1:-1;;;;;4728:42:3;;;4650:120;4633:251;;;4844:29;;-1:-1:-1;;;4844:29:3;;;;;;;;;;;6738:91:44;6435:30;2443:4:0;6435:10:44;:30::i;6032:538:3:-;6149:17;-1:-1:-1;;;;;6131:50:3;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6131:52:3;;;;;;;;-1:-1:-1;;6131:52:3;;;;;;;;;;;;:::i;:::-;;;6127:437;;6493:60;;-1:-1:-1;;;6493:60:3;;-1:-1:-1;;;;;4772:32:47;;6493:60:3;;;4754:51:47;4727:18;;6493:60:3;4574:237:47;6127:437:3;-1:-1:-1;;;;;;;;;;;6225:40:3;;6221:120;;6292:34;;-1:-1:-1;;;6292:34:3;;;;;3023:25:47;;;2996:18;;6292:34:3;2877:177:47;6221:120:3;6354:54;6384:17;6403:4;6354:29;:54::i;5007:213::-;5081:4;-1:-1:-1;;;;;5090:6:3;5073:23;;5069:145;;5174:29;;-1:-1:-1;;;5174:29:3;;;;;;;;;;;28441:2692:44;28577:14;28607:11;28621:58;28631:9;28642:10;28654:9;28665:13;28621:9;:58::i;:::-;28607:72;;28764:23;28790:60;28802:9;28813:10;28825:9;28836:13;28790:11;:60::i;:::-;28860:15;;;:22;;-1:-1:-1;;;;28860:22:44;-1:-1:-1;;;28860:22:44;;;28764:86;-1:-1:-1;28906:13:44;28897:5;:22;;;;;;;;:::i;:::-;;28893:1535;;29065:21;;;;29041;;;:45;29159:14;;;;29140:16;;;;29109:28;;;;:47;;29140:16;29109:47;:::i;:::-;:64;;;;:::i;:::-;29217:16;;29187;;;;29100:73;;-1:-1:-1;29187:55:44;;-1:-1:-1;;;;;29187:16:44;;;;29217;29100:73;29187:29;:55::i;:::-;28893:1535;;;29272:14;29263:5;:23;;;;;;;;:::i;:::-;;29259:1169;;29442:12;:10;:12::i;:::-;-1:-1:-1;;;;;29442:21:44;;29481:10;29509:46;29536:7;29545:9;29509:26;:46::i;:::-;29573:45;29593:13;29608:9;29573:19;:45::i;:::-;29442:190;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29418:21;;;:214;;;29693:21;;;;29743:28;;;;29668:46;;;;29646:19;29887:27;29418:7;29887:18;:27::i;:::-;29880:34;;:4;:34;:::i;:::-;29857:57;;30238:7;:14;;;30219:7;:16;;;30204:12;30197:4;:19;;;;:::i;:::-;:38;;;;:::i;:::-;:55;;;;:::i;:::-;30188:64;;30266:91;30296:14;:52;;30332:16;;-1:-1:-1;;;;;30332:16:44;30296:52;;;30313:16;;;;-1:-1:-1;;;;;30313:16:44;30296:52;30266:16;;;;-1:-1:-1;;;;;30266:16:44;;30350:6;30266:29;:91::i;:::-;29288:1080;;;29259:1169;;;30395:22;;-1:-1:-1;;;30395:22:44;;;;;;;;;;;29259:1169;30516:16;;;;30486;;30620:21;;;;30443:228;;-1:-1:-1;;;;;30516:16:44;;;;30486;;;;30443:228;;;;;;;30546:10;;30570:9;;30593:13;;30655:6;;30443:228;:::i;:::-;;;;;;;;30812:30;:28;:30::i;:::-;-1:-1:-1;;;;;30877:29:44;;1818:19:35;:23;;30877:81:44;;;;-1:-1:-1;30912:23:44;;;:46;;;;;;30877:81;30873:216;;;31056:21;;;;30974:104;;-1:-1:-1;;;30974:104:44;;-1:-1:-1;;;;;30974:43:44;;;;;:104;;31018:10;;31030:9;;31041:13;;30974:104;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30873:216;31098:28;:26;:28::i;:::-;28597:2536;;28441:2692;;;;;;:::o;17167:426:43:-;17270:25;:23;:25::i;:::-;:58;;-1:-1:-1;;;17270:58:43;;-1:-1:-1;;;;;4772:32:47;;;17270:58:43;;;4754:51:47;17270:39:43;;;;;;;4727:18:47;;17270:58:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17262:90;;;;-1:-1:-1;;;17262:90:43;;;;;;;;;;;;17394:20;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17370:44:43;:20;;;;:8;:20;:::i;:::-;-1:-1:-1;;;;;17370:44:43;;;17362:84;;;;-1:-1:-1;;;17362:84:43;;;;;;;;;;;;-1:-1:-1;;;;;17456:27:43;;;;;;:17;:27;;;;;17486:8;;17456:38;17486:8;17456:27;:38;:::i;:::-;-1:-1:-1;;;;;;;17509:77:43;;;17543:20;;;;:8;:20;:::i;:::-;17565;;;;;;;;:::i;:::-;17509:77;;;-1:-1:-1;;;;;20774:47:47;;;20756:66;;20858:47;;;;20853:2;20838:18;;20831:75;20729:18;17509:77:43;;;;;;;;17167:426;;:::o;10473:288:1:-;10554:18;10612:19;:17;:19::i;:::-;10575:34;10593:15;10575:17;:34::i;:::-;:56;;;;:::i;:::-;10554:77;;10641:46;10665:8;10675:11;10641:23;:46::i;:::-;10702:52;;767:14:47;755:27;;737:46;;-1:-1:-1;;;;;10702:52:1;;;;;725:2:47;710:18;10702:52:1;593:196:47;12756:288:1;12834:18;12892:26;12909:8;12892:16;:26::i;:::-;12855:34;12873:15;12855:17;:34::i;:::-;:63;;;;:::i;:::-;12834:84;;12928:39;12945:8;12955:11;12928:16;:39::i;:::-;12982:55;;;14880:14:47;14868:27;;;14850:46;;14932:27;;14927:2;14912:18;;14905:55;12982::1;;14823:18:47;12982:55:1;;;;;;;12824:220;12756:288;:::o;18569:233:43:-;18639:38;18667:9;18639:27;:38::i;:::-;18687:18;:57;;-1:-1:-1;;;;;;18687:57:43;-1:-1:-1;;;;;18687:57:43;;;;;;;;18759:36;;;;-1:-1:-1;;18759:36:43;18569:233;:::o;1618:188:18:-;1745:53;;-1:-1:-1;;;;;36402:32:47;;;1745:53:18;;;36384:51:47;36471:32;;;36451:18;;;36444:60;36520:18;;;36513:34;;;1718:81:18;;1738:5;;1760:18;;;;;36357::47;;1745:53:18;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1745:53:18;;;;;;;;;;;1718:19;:81::i;32993:155:44:-;33085:6;;:55;;-1:-1:-1;;;33085:55:44;;-1:-1:-1;;;33085:55:44;;;3023:25:47;33037:14:44;;-1:-1:-1;;;;;33085:6:44;;:31;;2996:18:47;;33085:55:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;31409:180::-;31550:28;;;;31484:7;;31550:32;;31581:1;;31550:32;:::i;3146:225:18:-;3265:39;;-1:-1:-1;;;3265:39:18;;3289:4;3265:39;;;37350:51:47;-1:-1:-1;;;;;37437:32:47;;;37417:18;;;37410:60;3242:20:18;;3265:15;;;;;;37323:18:47;;3265:39:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3242:62;-1:-1:-1;3314:50:18;3327:5;3334:7;3343:20;3358:5;3242:62;3343:20;:::i;:::-;3314:12;:50::i;32617:177:44:-;32730:6;;:56;;-1:-1:-1;;;32730:56:44;;-1:-1:-1;;;32730:56:44;;;3023:25:47;32662:24:44;;-1:-1:-1;;;;;32730:6:44;;:31;;2996:18:47;;32730:56:44;2877:177:47;33371:473:44;33532:23;;;:34;33505:7;;33532:34;;33528:310;;;33617:38;;;;33582:16;;33617:43;;:102;;33704:15;;33617:102;;;33663:38;;;;33617:102;33582:137;;33765:8;33740:7;:22;;;:33;;;;:::i;:::-;33733:40;;;;;33528:310;-1:-1:-1;33811:16:44;33804:23;;34144:372;34243:12;34433:76;34469:13;34433:76;;;;;;;;;;;;;-1:-1:-1;;;34433:76:44;;;34499:9;34433:35;:76::i;1219:160:18:-;1328:43;;-1:-1:-1;;;;;37908:32:47;;;1328:43:18;;;37890:51:47;37957:18;;;37950:34;;;1301:71:18;;1321:5;;1343:14;;;;;37863:18:47;;1328:43:18;37716:274:47;21182:415:43;21336:35;21399:24;:83;21424:57;21444:9;21455:10;21467:13;21424:19;:57::i;:::-;21399:83;;;;;;;;;;;-1:-1:-1;21399:83:43;;-1:-1:-1;;;;;21399:83:43;;-1:-1:-1;21399:83:43;21492:99;;-1:-1:-1;21556:24:43;;-1:-1:-1;;;;;21556:24:43;21182:415;;;;;:::o;16340:1923:44:-;16591:17;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;-1:-1:-1;;;;;16628:22:44;::::1;16620:62;;;;-1:-1:-1::0;;;16620:62:44::1;;;;;;;;;;;;16775:15;16713:58;16723:9;16734:10;16746:9;16757:13;16713:9;:58::i;:::-;:77;;;;;;;;:::i;:::-;;16692:136;;;;-1:-1:-1::0;;;16692:136:44::1;;;;;;;;;;;;16838:23;16864:60;16876:9;16887:10;16899:9;16910:13;16864:11;:60::i;:::-;16938:23;::::0;::::1;:34:::0;16838:86;;-1:-1:-1;16938:34:44::1;;16934:134;;;-1:-1:-1::0;;;16996:13:44::1;:35:::0;16988:69:::1;;;;-1:-1:-1::0;;;16988:69:44::1;;;;;;;;;;;;17077:27:::0;;-1:-1:-1;;;;;;17077:27:44::1;-1:-1:-1::0;;;;;17077:27:44;::::1;;::::0;;17114:21:::1;::::0;::::1;:37:::0;;;17296:38;;;;-1:-1:-1;17296:43:44;:102:::1;;17383:15;;17296:102;;;17342:38:::0;;;;17296:102:::1;17264:135;::::0;34604:15;17264:135:::1;:::i;:::-;17239:22;::::0;::::1;:160:::0;17453:16:::1;::::0;::::1;::::0;17422:28;;;;:47:::1;::::0;17453:16;17422:47:::1;:::i;:::-;17410:59:::0;-1:-1:-1;17483:13:44;;17479:90:::1;;17498:16;::::0;::::1;::::0;:71:::1;::::0;-1:-1:-1;;;;;17498:16:44::1;17532:10;17552:4;17559:9:::0;17498:33:::1;:71::i;:::-;17757:22;::::0;::::1;::::0;17801:16:::1;::::0;::::1;::::0;17585:243:::1;::::0;-1:-1:-1;;;;;17585:243:44;;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;17656:10;;17680:9;;17703:13;;17730;;17801:16;;::::1;::::0;17585:243:::1;:::i;:::-;;;;;;;;17963:30;:28;:30::i;:::-;-1:-1:-1::0;;;;;18028:29:44;::::1;1818:19:35::0;:23;;18028:82:44::1;;;;-1:-1:-1::0;18063:23:44::1;::::0;::::1;:47:::0;;;::::1;;;18028:82;18024:195;;;18126:82;::::0;-1:-1:-1;;;18126:82:44;;-1:-1:-1;;;;;18126:44:44;::::1;::::0;::::1;::::0;:82:::1;::::0;18171:10;;18183:9;;18194:13;;18126:82:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18024:195;18228:28;:26;:28::i;:::-;16610:1653;1908:20:38::0;:18;:20::i;32800:187:44:-;32910:6;;:69;;-1:-1:-1;;;32910:69:44;;-1:-1:-1;;;32910:69:44;;;3023:25:47;32858:16:44;;-1:-1:-1;;;;;32910:6:44;;:31;;2996:18:47;;32910:69:44;2877:177:47;19707:364:43;19793:4;19801:1;19793:9;19785:40;;;;-1:-1:-1;;;19785:40:43;;;;;;;;;;;;-1:-1:-1;;;;;19867:27:43;;19835:29;19867:27;;;:17;:27;;;;;;;;;19835:59;;;;;;;;;-1:-1:-1;;;;;19835:59:43;;;;;;-1:-1:-1;;;19835:59:43;;;;;;;;;;;19912:41;;;19904:74;;;;-1:-1:-1;;;19904:74:43;;;;;;;;;;;;20012:12;:24;;;-1:-1:-1;;;;;20004:33:43;19996:4;:41;;19988:76;;;;-1:-1:-1;;;19988:76:43;;;;;;;;;;;9071:205:2;9129:30;;3147:66;9186:27;8819:122;5392:441:44;6929:20:2;:18;:20::i;:::-;5548:24:44::1;:22;:24::i;:::-;5582:59;5620:6;5628:12;5582:37;:59::i;:::-;5726:28;:26;:28::i;:::-;5764:62;5800:9;5811:14;5764:35;:62::i;7105:475:1:-:0;7191:4;-1:-1:-1;;;;;;;;;;;7314:4:1;7310:216;;7386:1;7360:14;:12;:14::i;:::-;-1:-1:-1;;;;;7360:28:1;;7356:114;;7415:40;;-1:-1:-1;;;7415:40:1;;;;;;;;;;;7356:114;7483:22;;;:32;;-1:-1:-1;;;;;;7483:32:1;-1:-1:-1;;;;;7483:32:1;;;;;7310:216;7542:31;7559:4;7565:7;7542:16;:31::i;8110:248::-;8206:4;8202:104;;8255:40;;-1:-1:-1;;;8255:40:1;;;;;;;;;;;8202:104;8315:36;8335:4;8341:9;8315:19;:36::i;11716:581::-;-1:-1:-1;;;;;;;;;;;11782:47:1;;11923:21;:19;:21::i;:::-;11885:59;;;;11959:24;11974:8;16952:13;;;;;16866:106;11959:24;11958:25;:58;;;-1:-1:-1;17180:15:1;17169:26;;;;11987:29;11958:58;11954:144;;;12039:48;;-1:-1:-1;;;12039:48:1;;767:14:47;755:27;;12039:48:1;;;737:46:47;710:18;;12039:48:1;593:196:47;11954:144:1;12107:47;2443:4:0;12139:14:1;:12;:14::i;:::-;12107:11;:47::i;:::-;-1:-1:-1;12164:40:1;2443:4:0;12195:8:1;12164:10;:40::i;:::-;-1:-1:-1;;12214:29:1;;-1:-1:-1;;;;;;12253:37:1;;;;-1:-1:-1;11716:581:1:o;5710:138:0:-;5785:18;5798:4;5785:12;:18::i;:::-;3272:16;3283:4;3272:10;:16::i;:::-;5815:26:::1;5827:4;5833:7;5815:11;:26::i;11075:111:1:-:0;11141:38;11173:1;11177;11141:23;:38::i;4429:197:0:-;4517:22;4525:4;4531:7;4517;:22::i;:::-;4512:108;;4562:47;;-1:-1:-1;;;4562:47:0;;-1:-1:-1;;;;;37908:32:47;;4562:47:0;;;37890:51:47;37957:18;;;37950:34;;;37863:18;;4562:47:0;37716:274:47;16023:698:1;-1:-1:-1;;;;;;;;;;;16228:23:1;-1:-1:-1;;;;;;;;;;;3245:45:1;-1:-1:-1;;;16228:23:1;;;;16952:13;;16262:369;;17180:15;17169:26;;;;16309:312;;;16429:15;;;;16411:33;;-1:-1:-1;;;;;16411:33:1;-1:-1:-1;;;16429:15:1;;;;;-1:-1:-1;;;16411:33:1;;;;16309:312;;;16573:33;;;;;;;16309:312;-1:-1:-1;16641:15:1;;:26;;-1:-1:-1;;;;;16677:37:1;-1:-1:-1;;;16641:26:1;;;;;-1:-1:-1;;;;;16677:37:1;;-1:-1:-1;;;16677:37:1;;;;;;;;;;;;;;16023:698::o;33154:211:44:-;33288:6;;:69;;-1:-1:-1;;;33288:69:44;;-1:-1:-1;;;33288:69:44;;;3023:25:47;33212:28:44;;-1:-1:-1;;;;;33288:6:44;;:31;;2996:18:47;;33288:69:44;2877:177:47;28173:262:44;28322:7;28379:9;28390:10;28402:9;28413:13;28362:65;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;28352:76;;;;;;28345:83;;28173:262;;;;;;:::o;31595:192::-;31693:10;31681:9;:22;31673:51;;;;-1:-1:-1;;;31673:51:44;;;;;;;;;;;;31754:1;31742:9;:13;31734:46;;;;-1:-1:-1;;;31734:46:44;;;;;;;;;;;1364:283:25;1451:4;1559:23;1574:7;1559:14;:23::i;:::-;:81;;;;;1586:54;1619:7;1628:11;1586:32;:54::i;7631:376:1:-;7718:4;-1:-1:-1;;;;;;;;;;;7841:26:1;;:55;;;;;7882:14;:12;:14::i;:::-;-1:-1:-1;;;;;7871:25:1;:7;-1:-1:-1;;;;;7871:25:1;;7841:55;7837:115;;;7919:22;;;7912:29;;-1:-1:-1;;;;;;7912:29:1;;;7837:115;7968:32;7986:4;7992:7;7968:17;:32::i;2264:344:15:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:15;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;14296:213:28:-;14352:6;14382:16;14374:24;;14370:103;;;14421:41;;-1:-1:-1;;;14421:41:28;;14452:2;14421:41;;;39507:36:47;39559:18;;;39552:34;;;39480:18;;14421:41:28;39326:266:47;14370:103:28;-1:-1:-1;14496:5:28;14296:213::o;15237:632:1:-;-1:-1:-1;;;;;;;;;;;15326:47:1;15454:21;:19;:21::i;:::-;15486:33;;15529:44;;;-1:-1:-1;;;15529:44:1;-1:-1:-1;;;;;;15529:44:1;;;-1:-1:-1;;;;;15486:33:1;;15529:44;;;;15429:46;-1:-1:-1;15685:27:1;;-1:-1:-1;15429:46:1;16952:13;;;;;16866:106;15685:27;15681:182;;;15822:30;;;;;;;15316:553;;15237:632;;:::o;13796:1249::-;13870:6;13888:19;13910;:17;:19::i;:::-;13888:41;;14859:12;14848:23;;:8;:23;;;:190;;15015:23;15030:8;15015:12;:23;:::i;:::-;14848:190;;;14897:51;;;;10004:6;14897:8;:51::i;8370:720:18:-;8450:18;8478:19;8616:4;8613:1;8606:4;8600:11;8593:4;8587;8583:15;8580:1;8573:5;8566;8561:60;8673:7;8663:176;;8717:4;8711:11;8762:16;8759:1;8754:3;8739:40;8808:16;8803:3;8796:29;8663:176;-1:-1:-1;;8916:1:18;8910:8;8866:16;;-1:-1:-1;8942:15:18;;:68;;8994:11;9009:1;8994:16;;8942:68;;;-1:-1:-1;;;;;8960:26:18;;;:31;8942:68;8938:146;;;9033:40;;-1:-1:-1;;;9033:40:18;;-1:-1:-1;;;;;4772:32:47;;9033:40:18;;;4754:51:47;4727:18;;9033:40:18;4574:237:47;5084:380:18;5199:47;;;-1:-1:-1;;;;;37908:32:47;;5199:47:18;;;37890:51:47;37957:18;;;;37950:34;;;5199:47:18;;;;;;;;;;37863:18:47;;;;5199:47:18;;;;;;;;-1:-1:-1;;;;;5199:47:18;-1:-1:-1;;;5199:47:18;;;5262:44;5214:13;5199:47;5262:23;:44::i;:::-;5257:201;;5349:43;;-1:-1:-1;;;;;37908:32:47;;;5349:43:18;;;37890:51:47;5389:1:18;37957:18:47;;;37950:34;5322:71:18;;5342:5;;5364:13;;;;;37863:18:47;;5349:43:18;37716:274:47;5322:71:18;5407:40;5427:5;5434:12;5407:19;:40::i;5184:337:29:-;5336:12;5360:19;5382:42;5398:20;5420:3;5382:15;:42::i;:::-;5360:64;;5458:20;5480:6;5488:25;5507:5;5488:18;:25::i;:::-;5441:73;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5434:80;;;5184:337;;;;;:::o;7082:141:2:-;7149:17;:15;:17::i;:::-;7144:73;;7189:17;;-1:-1:-1;;;7189:17:2;;;;;;;;;;;2970:67:3;6929:20:2;:18;:20::i;3416:222:1:-;6929:20:2;:18;:20::i;:::-;3549:82:1::1;3597:12;3611:19;3549:47;:82::i;934:489:38:-:0;6929:20:2;:18;:20::i;6055:246:44:-;6929:20:2;:18;:20::i;:::-;6179:6:44::1;:40:::0;;-1:-1:-1;;;;;;6179:40:44::1;-1:-1:-1::0;;;;;6179:40:44;::::1;;::::0;;6229:28:::1;6247:9:::0;6229:17:::1;:28::i;:::-;-1:-1:-1::0;6267:15:44::1;:27:::0;6055:246::o;7318:387:0:-;7395:4;-1:-1:-1;;;;;;;;;;;7485:22:0;7493:4;7499:7;7485;:22::i;:::-;7480:219;;7523:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7523:31:0;;;;;;;;;:38;;-1:-1:-1;;7523:38:0;7557:4;7523:38;;;7607:12;966:10:4;;887:96;7607:12:0;-1:-1:-1;;;;;7580:40:0;7598:7;-1:-1:-1;;;;;7580:40:0;7592:4;7580:40;;;;;;;;;;7641:4;7634:11;;;;;7480:219;7683:5;7676:12;;;;;6766:318;-1:-1:-1;;;;;;;;;;;6849:30:0;6946:18;6959:4;6946:12;:18::i;:::-;6974:8;:14;;;;;;;;;;;:24;;:36;;;7025:52;6918:46;;-1:-1:-1;7001:9:0;;6918:46;;6983:4;;7025:52;;6974:8;7025:52;6839:245;;6766:318;;:::o;719:427:25:-;783:4;991:68;1024:7;-1:-1:-1;;;991:32:25;:68::i;:::-;:148;;;;-1:-1:-1;1076:63:25;1109:7;-1:-1:-1;;;;;;1076:32:25;:63::i;:::-;1075:64;972:167;719:427;-1:-1:-1;;719:427:25:o;4403:648::-;4574:56;;-1:-1:-1;;;;;;40571:33:47;;4574:56:25;;;40553:52:47;4505:4:25;;;;40526:18:47;;4574:56:25;;;-1:-1:-1;;4574:56:25;;;;;;;;;;;;;;;-1:-1:-1;;;;;4574:56:25;-1:-1:-1;;;4574:56:25;;;4854:20;;4574:56;;-1:-1:-1;;;;;;;4574:56:25;;-1:-1:-1;;4819:7:25;4812:5;4801:86;4790:97;;4914:16;4900:30;;4964:4;4958:11;4943:26;;4996:7;:29;;;;;5021:4;5007:10;:18;;4996:29;:48;;;;;5043:1;5029:11;:15;4996:48;4989:55;4403:648;-1:-1:-1;;;;;;;4403:648:25:o;7942:388:0:-;8020:4;-1:-1:-1;;;;;;;;;;;8109:22:0;8117:4;8123:7;8109;:22::i;:::-;8105:219;;;8181:5;8147:14;;;;;;;;;;;-1:-1:-1;;;;;8147:31:0;;;;;;;;;;:39;;-1:-1:-1;;8147:39:0;;;8205:40;966:10:4;;8147:14:0;;8205:40;;8181:5;8205:40;8266:4;8259:11;;;;;1671:281:15;1748:17;-1:-1:-1;;;;;1748:29:15;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:15;;-1:-1:-1;;;;;4772:32:47;;1805:47:15;;;4754:51:47;4727:18;;1805:47:15;4574:237:47;1744:119:15;-1:-1:-1;;;;;;;;;;;1872:73:15;;-1:-1:-1;;;;;;1872:73:15;-1:-1:-1;;;;;1872:73:15;;;;;;;;;;1671:281::o;3916:253:19:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:19;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;6113:122:15:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:15;;;;;;;;;;;5617:111:27;5675:7;5312:5;;;5709;;;5311:36;5306:42;;5701:20;5071:294;9592:480:18;9675:4;9691:12;9713:18;9741:19;9875:4;9872:1;9865:4;9859:11;9852:4;9846;9842:15;9839:1;9832:5;9825;9820:60;9809:71;;9907:16;9893:30;;9957:1;9951:8;9936:23;;9985:7;:80;;;;-1:-1:-1;9997:15:18;;:67;;10048:11;10063:1;10048:16;9997:67;;;-1:-1:-1;;;;;;;;;;10015:26:18;;:30;;;9592:480::o;6928:295:29:-;7057:27;;7029:12;;7057:31;7053:164;;7133:3;7111:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;7104:38;;;;7053:164;7197:3;7180:26;;;;;;;;:::i;3145:218::-;3207:12;3267:47;-1:-1:-1;;;;;3287:26:29;;;;;3267:19;:47::i;:::-;3323:31;3351:1;3343:10;;-1:-1:-1;;;;;3323:31:29;;:19;:31::i;:::-;3250:106;;;;;;;;41795:19:47;;;-1:-1:-1;;;;;;41844:41:47;41839:2;41830:12;;41823:63;41911:2;41902:12;;41640:280;3250:106:29;;;;;;;;;;;;;3231:125;;3145:218;;;:::o;8485:120:2:-;8535:4;8558:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8558:40:2;;;;;;-1:-1:-1;8485:120:2:o;3644:468:1:-;6929:20:2;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;3894:33:1;::::1;3890:115;;3950:44;::::0;-1:-1:-1;;;3950:44:1;;3991:1:::1;3950:44;::::0;::::1;4754:51:47::0;4727:18;;3950:44:1::1;4574:237:47::0;3890:115:1::1;4014:30:::0;;-1:-1:-1;;;;;4014:30:1::1;-1:-1:-1::0;;;4014:30:1::1;::::0;::::1;;;::::0;;4054:51:::1;-1:-1:-1::0;4085:19:1;4054:10:::1;:51::i;4437:582:19:-:0;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;4605:408::-;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:19;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:19;;-1:-1:-1;;;;;4772:32:47;;4933:24:19;;;4754:51:47;4727:18;;4933:24:19;4574:237:47;4853:119:19;-1:-1:-1;4992:10:19;4985:17;;897:1306:29;965:7;1008:9;1028:7;1020:16;;1008:28;;1088:1;-1:-1:-1;;;;;1088:70:29;1084:74;;1182:1;-1:-1:-1;;;1182:9:29;1177:1;:15;1196:66;1176:86;1172:90;;1286:1;1290:5;1286:9;1281:1;:15;1300:66;1280:86;1276:90;;1390:1;1394:5;1390:9;1385:1;:15;1404:66;1384:86;1380:90;;1494:1;1498:4;1494:8;1489:1;:14;1507:66;1488:85;1484:89;;1597:1;1601:4;1597:8;1592:1;:14;1610:66;1591:85;1587:89;;1717:9;1804:1;1730;1734:66;1730:70;1729:76;;;;;:::i;:::-;;1906:1;1836:66;1832:70;;1831:76;2008:1;1938:66;1934:70;;1933:76;2037:5;2032:11;2047:4;2031:20;2027:24;;;2054:66;2027:93;;;-1:-1:-1;;;897:1306:29:o;5559:434:19:-;5690:17;;:21;5686:301;;5894:10;5888:17;5881:4;5869:10;5865:21;5858:48;5686:301;5957:19;;-1:-1:-1;;;5957:19:19;;;;;;;;;;;14:286:47;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:47;;209:43;;199:71;;266:1;263;256:12;794:127;855:10;850:3;846:20;843:1;836:31;886:4;883:1;876:15;910:4;907:1;900:15;926:275;997:2;991:9;1062:2;1043:13;;-1:-1:-1;;1039:27:47;1027:40;;-1:-1:-1;;;;;1082:34:47;;1118:22;;;1079:62;1076:88;;;1144:18;;:::i;:::-;1180:2;1173:22;926:275;;-1:-1:-1;926:275:47:o;1206:186::-;1254:4;-1:-1:-1;;;;;1279:6:47;1276:30;1273:56;;;1309:18;;:::i;:::-;-1:-1:-1;1375:2:47;1354:15;-1:-1:-1;;1350:29:47;1381:4;1346:40;;1206:186::o;1397:486::-;1439:5;1492:3;1485:4;1477:6;1473:17;1469:27;1459:55;;1510:1;1507;1500:12;1459:55;1550:6;1537:20;1581:52;1597:35;1625:6;1597:35;:::i;:::-;1581:52;:::i;:::-;1658:6;1649:7;1642:23;1712:3;1705:4;1696:6;1688;1684:19;1680:30;1677:39;1674:59;;;1729:1;1726;1719:12;1674:59;1794:6;1787:4;1779:6;1775:17;1768:4;1759:7;1755:18;1742:59;1850:1;1821:20;;;1843:4;1817:31;1810:42;;;;1825:7;1397:486;-1:-1:-1;;;1397:486:47:o;1888:139::-;-1:-1:-1;;;;;1971:31:47;;1961:42;;1951:70;;2017:1;2014;2007:12;2032:840;2151:6;2159;2167;2175;2183;2236:3;2224:9;2215:7;2211:23;2207:33;2204:53;;;2253:1;2250;2243:12;2204:53;2298:23;;;-1:-1:-1;2418:2:47;2403:18;;2390:32;;-1:-1:-1;2499:2:47;2484:18;;2471:32;-1:-1:-1;;;;;2515:30:47;;2512:50;;;2558:1;2555;2548:12;2512:50;2581:49;2622:7;2613:6;2602:9;2598:22;2581:49;:::i;:::-;2571:59;;;2682:2;2671:9;2667:18;2654:32;2695:41;2728:7;2695:41;:::i;:::-;2032:840;;;;-1:-1:-1;2032:840:47;;2835:3;2820:19;2807:33;;2032:840;-1:-1:-1;;2032:840:47:o;3059:554::-;3145:6;3153;3161;3214:2;3202:9;3193:7;3189:23;3185:32;3182:52;;;3230:1;3227;3220:12;3182:52;3275:23;;;-1:-1:-1;3395:2:47;3380:18;;3367:32;;-1:-1:-1;3476:2:47;3461:18;;3448:32;-1:-1:-1;;;;;3492:30:47;;3489:50;;;3535:1;3532;3525:12;3489:50;3558:49;3599:7;3590:6;3579:9;3575:22;3558:49;:::i;:::-;3548:59;;;3059:554;;;;;:::o;3618:142::-;3686:20;;3715:39;3686:20;3715:39;:::i;:::-;3618:142;;;:::o;3765:255::-;3824:6;3877:2;3865:9;3856:7;3852:23;3848:32;3845:52;;;3893:1;3890;3883:12;3845:52;3932:9;3919:23;3951:39;3984:5;3951:39;:::i;4025:226::-;4084:6;4137:2;4125:9;4116:7;4112:23;4108:32;4105:52;;;4153:1;4150;4143:12;4105:52;-1:-1:-1;4198:23:47;;4025:226;-1:-1:-1;4025:226:47:o;4816:375::-;4884:6;4892;4945:2;4933:9;4924:7;4920:23;4916:32;4913:52;;;4961:1;4958;4951:12;4913:52;5006:23;;;-1:-1:-1;5105:2:47;5090:18;;5077:32;5118:41;5077:32;5118:41;:::i;:::-;5178:7;5168:17;;;4816:375;;;;;:::o;5427:733::-;5522:6;5530;5538;5546;5599:3;5587:9;5578:7;5574:23;5570:33;5567:53;;;5616:1;5613;5606:12;5567:53;5655:9;5642:23;5674:39;5707:5;5674:39;:::i;:::-;5732:5;-1:-1:-1;5810:2:47;5795:18;;5782:32;;-1:-1:-1;5891:2:47;5876:18;;5863:32;-1:-1:-1;;;;;5907:30:47;;5904:50;;;5950:1;5947;5940:12;5904:50;5973:49;6014:7;6005:6;5994:9;5990:22;5973:49;:::i;:::-;5963:59;;;6074:2;6063:9;6059:18;6046:32;6087:41;6120:7;6087:41;:::i;:::-;5427:733;;;;-1:-1:-1;5427:733:47;;-1:-1:-1;;5427:733:47:o;6165:675::-;6260:6;6268;6276;6284;6337:3;6325:9;6316:7;6312:23;6308:33;6305:53;;;6354:1;6351;6344:12;6305:53;6399:23;;;-1:-1:-1;6519:2:47;6504:18;;6491:32;;-1:-1:-1;6600:2:47;6585:18;;6572:32;-1:-1:-1;;;;;6616:30:47;;6613:50;;;6659:1;6656;6649:12;6613:50;6682:49;6723:7;6714:6;6703:9;6699:22;6682:49;:::i;:::-;6165:675;;;;-1:-1:-1;6672:59:47;;6804:2;6789:18;6776:32;;-1:-1:-1;;;6165:675:47:o;6845:583::-;6931:6;6939;6947;7000:2;6988:9;6979:7;6975:23;6971:32;6968:52;;;7016:1;7013;7006:12;6968:52;7055:9;7042:23;7074:39;7107:5;7074:39;:::i;:::-;7132:5;-1:-1:-1;7210:2:47;7195:18;;7182:32;;-1:-1:-1;7291:2:47;7276:18;;7263:32;-1:-1:-1;;;;;7307:30:47;;7304:50;;;7350:1;7347;7340:12;7433:463;7510:6;7518;7571:2;7559:9;7550:7;7546:23;7542:32;7539:52;;;7587:1;7584;7577:12;7539:52;7626:9;7613:23;7645:39;7678:5;7645:39;:::i;:::-;7703:5;-1:-1:-1;7759:2:47;7744:18;;7731:32;-1:-1:-1;;;;;7775:30:47;;7772:50;;;7818:1;7815;7808:12;7772:50;7841:49;7882:7;7873:6;7862:9;7858:22;7841:49;:::i;:::-;7831:59;;;7433:463;;;;;:::o;8081:428::-;8193:6;8201;8245:9;8236:7;8232:23;8275:2;8271;8267:11;8264:31;;;8291:1;8288;8281:12;8264:31;8330:9;8317:23;8349:39;8382:5;8349:39;:::i;:::-;8407:5;-1:-1:-1;8446:2:47;-1:-1:-1;;8428:16:47;;8424:25;8421:45;;;8462:1;8459;8452:12;8421:45;;8500:2;8489:9;8485:18;8475:28;;8081:428;;;;;:::o;8514:704::-;8609:6;8617;8625;8633;8686:3;8674:9;8665:7;8661:23;8657:33;8654:53;;;8703:1;8700;8693:12;8654:53;8742:9;8729:23;8761:39;8794:5;8761:39;:::i;:::-;8819:5;-1:-1:-1;8897:2:47;8882:18;;8869:32;;-1:-1:-1;9000:2:47;8985:18;;8972:32;;-1:-1:-1;9081:2:47;9066:18;;9053:32;-1:-1:-1;;;;;9097:30:47;;9094:50;;;9140:1;9137;9130:12;9094:50;9163:49;9204:7;9195:6;9184:9;9180:22;9163:49;:::i;:::-;9153:59;;;8514:704;;;;;;;:::o;9223:280::-;9281:6;9334:2;9322:9;9313:7;9309:23;9305:32;9302:52;;;9350:1;9347;9340:12;9302:52;9389:9;9376:23;9439:14;9432:5;9428:26;9421:5;9418:37;9408:65;;9469:1;9466;9459:12;9508:704;9603:6;9611;9619;9627;9680:3;9668:9;9659:7;9655:23;9651:33;9648:53;;;9697:1;9694;9687:12;9648:53;9736:9;9723:23;9755:39;9788:5;9755:39;:::i;:::-;9813:5;-1:-1:-1;9891:2:47;9876:18;;9863:32;;-1:-1:-1;9972:2:47;9957:18;;9944:32;-1:-1:-1;;;;;9988:30:47;;9985:50;;;10031:1;10028;10021:12;10217:854;10321:6;10329;10337;10345;10353;10406:3;10394:9;10385:7;10381:23;10377:33;10374:53;;;10423:1;10420;10413:12;10374:53;10462:9;10449:23;10481:39;10514:5;10481:39;:::i;:::-;10539:5;-1:-1:-1;10596:2:47;10581:18;;10568:32;10609:41;10568:32;10609:41;:::i;:::-;10669:7;-1:-1:-1;10749:2:47;10734:18;;10721:32;;-1:-1:-1;10852:2:47;10837:18;;10824:32;;-1:-1:-1;10933:3:47;10918:19;;10905:33;-1:-1:-1;;;;;10950:30:47;;10947:50;;;10993:1;10990;10983:12;10947:50;11016:49;11057:7;11048:6;11037:9;11033:22;11016:49;:::i;:::-;11006:59;;;10217:854;;;;;;;;:::o;11076:974::-;11188:6;11196;11204;11212;11220;11228;11281:3;11269:9;11260:7;11256:23;11252:33;11249:53;;;11298:1;11295;11288:12;11249:53;11337:9;11324:23;11356:39;11389:5;11356:39;:::i;:::-;11414:5;-1:-1:-1;11471:2:47;11456:18;;11443:32;11484:41;11443:32;11484:41;:::i;:::-;11544:7;-1:-1:-1;11624:2:47;11609:18;;11596:32;;-1:-1:-1;11727:2:47;11712:18;;11699:32;;-1:-1:-1;11808:3:47;11793:19;;11780:33;-1:-1:-1;;;;;11825:30:47;;11822:50;;;11868:1;11865;11858:12;11822:50;11891:49;11932:7;11923:6;11912:9;11908:22;11891:49;:::i;:::-;11076:974;;;;-1:-1:-1;11076:974:47;;;;;12013:3;11998:19;;;11985:33;;-1:-1:-1;;;11076:974:47:o;12263:869::-;12382:6;12390;12398;12406;12414;12467:3;12455:9;12446:7;12442:23;12438:33;12435:53;;;12484:1;12481;12474:12;12435:53;12523:9;12510:23;12542:39;12575:5;12542:39;:::i;:::-;12600:5;-1:-1:-1;12678:2:47;12663:18;;12650:32;;-1:-1:-1;12759:2:47;12744:18;;12731:32;-1:-1:-1;;;;;12775:30:47;;12772:50;;;12818:1;12815;12808:12;13137:516;13238:5;13232:12;13225:20;13218:28;13213:3;13206:41;13310:4;13303:5;13299:16;13293:23;13286:31;13279:39;13272:4;13267:3;13263:14;13256:63;13382:4;13375:5;13371:16;13365:23;13358:31;13351:39;13344:4;13339:3;13335:14;13328:63;13454:4;13447:5;13443:16;13437:23;13430:31;13423:39;13416:4;13411:3;13407:14;13400:63;13526:4;13519:5;13515:16;13509:23;13502:31;13495:39;13488:4;13483:3;13479:14;13472:63;13584:4;13577:5;13573:16;13567:23;13560:4;13555:3;13551:14;13544:47;13640:4;13633:5;13629:16;13623:23;13616:4;13611:3;13607:14;13600:47;;;13137:516::o;13658:1017::-;-1:-1:-1;;;;;14148:32:47;;;14130:51;;14217:32;;;14212:2;14197:18;;14190:60;14286:32;;14281:2;14266:18;;14259:60;14362:14;;14355:22;14350:2;14335:18;;14328:50;14117:3;14102:19;;14387:62;14444:3;14429:19;;14421:6;14387:62;:::i;:::-;14480:3;14465:19;;14458:35;;;;14524:3;14509:19;;14502:35;;;;14568:3;14553:19;;14546:35;;;;14612:3;14597:19;;14590:35;14656:3;14641:19;;;14634:35;13658:1017;;-1:-1:-1;;;;;13658:1017:47:o;14971:726::-;15183:2;15195:21;;;15265:13;;15168:18;;;15287:22;;;15135:4;;15378;15366:17;;;15340:2;15325:18;;;15135:4;15411:199;15425:6;15422:1;15419:13;15411:199;;;15490:13;;-1:-1:-1;;;;;15486:39:47;15474:52;;15555:4;15583:17;;;;15546:14;;;;15522:1;15440:9;15411:199;;;15415:3;;15627;15619:11;;;;15682:6;15675:14;15668:22;15661:4;15650:9;15646:20;15639:52;14971:726;;;;;:::o;15702:1147::-;15947:13;;-1:-1:-1;;;;;4531:31:47;4519:44;;15888:3;15873:19;;16019:4;16011:6;16007:17;16001:24;16034:81;16109:4;16098:9;16094:20;16080:12;-1:-1:-1;;;;;4531:31:47;4519:44;;4438:131;16034:81;;16164:4;16156:6;16152:17;16146:24;16179:83;16256:4;16245:9;16241:20;16225:14;-1:-1:-1;;;;;4531:31:47;4519:44;;4438:131;16179:83;;16311:4;16303:6;16299:17;16293:24;16326:53;16373:4;16362:9;16358:20;16342:14;375:13;368:21;356:34;;305:91;16326:53;;16428:4;16420:6;16416:17;16410:24;16443:71;16508:4;16497:9;16493:20;16477:14;16443:71;:::i;:::-;-1:-1:-1;16572:4:47;16560:17;;16554:24;16545:6;16530:22;;16523:56;16637:4;16625:17;;16619:24;16610:6;16595:22;;16588:56;16702:4;16690:17;;16684:24;16675:6;16660:22;;16653:56;16767:6;16755:19;;16749:26;16740:6;16725:22;;16718:58;16834:6;16822:19;;;16816:26;16807:6;16792:22;;;16785:58;15702:1147;:::o;16854:621::-;16951:6;16959;17012:2;17000:9;16991:7;16987:23;16983:32;16980:52;;;17028:1;17025;17018:12;16980:52;17068:9;17055:23;-1:-1:-1;;;;;17093:6:47;17090:30;17087:50;;;17133:1;17130;17123:12;17087:50;17156:22;;17209:4;17201:13;;17197:27;-1:-1:-1;17187:55:47;;17238:1;17235;17228:12;17187:55;17278:2;17265:16;-1:-1:-1;;;;;17296:6:47;17293:30;17290:50;;;17336:1;17333;17326:12;17290:50;17389:7;17384:2;17374:6;17371:1;17367:14;17363:2;17359:23;17355:32;17352:45;17349:65;;;17410:1;17407;17400:12;17349:65;17441:2;17433:11;;;;;17463:6;;-1:-1:-1;16854:621:47;-1:-1:-1;;;16854:621:47:o;17480:299::-;17532:3;17570:5;17564:12;17597:6;17592:3;17585:19;17653:6;17646:4;17639:5;17635:16;17628:4;17623:3;17619:14;17613:47;17705:1;17698:4;17689:6;17684:3;17680:16;17676:27;17669:38;17768:4;17761:2;17757:7;17752:2;17744:6;17740:15;17736:29;17731:3;17727:39;17723:50;17716:57;;;17480:299;;;;:::o;17784:790::-;17944:4;17992:2;17981:9;17977:18;18022:2;18011:9;18004:21;18045:6;18080;18074:13;18111:6;18103;18096:22;18149:2;18138:9;18134:18;18127:25;;18211:2;18201:6;18198:1;18194:14;18183:9;18179:30;18175:39;18161:53;;18249:2;18241:6;18237:15;18270:1;18280:265;18294:6;18291:1;18288:13;18280:265;;;18387:2;18383:7;18371:9;18363:6;18359:22;18355:36;18350:3;18343:49;18415:50;18458:6;18449;18443:13;18415:50;:::i;:::-;18405:60;-1:-1:-1;18500:2:47;18523:12;;;;18488:15;;;;;18316:1;18309:9;18280:265;;;-1:-1:-1;18562:6:47;;17784:790;-1:-1:-1;;;;;;17784:790:47:o;18579:230::-;18728:2;18717:9;18710:21;18691:4;18748:55;18799:2;18788:9;18784:18;18776:6;18748:55;:::i;18814:463::-;18891:6;18899;18952:2;18940:9;18931:7;18927:23;18923:32;18920:52;;;18968:1;18965;18958:12;18920:52;19008:9;18995:23;-1:-1:-1;;;;;19033:6:47;19030:30;19027:50;;;19073:1;19070;19063:12;19027:50;19096:49;19137:7;19128:6;19117:9;19113:22;19096:49;:::i;:::-;19086:59;;;19195:2;19184:9;19180:18;19167:32;19208:39;19241:5;19208:39;:::i;19778:524::-;19855:6;19863;19871;19924:2;19912:9;19903:7;19899:23;19895:32;19892:52;;;19940:1;19937;19930:12;19892:52;19985:23;;;-1:-1:-1;20084:2:47;20069:18;;20056:32;20097:41;20056:32;20097:41;:::i;:::-;20157:7;-1:-1:-1;20216:2:47;20201:18;;20188:32;20229:41;20188:32;20229:41;:::i;:::-;20289:7;20279:17;;;19778:524;;;;;:::o;20917:824::-;21020:6;21028;21036;21044;21052;21105:3;21093:9;21084:7;21080:23;21076:33;21073:53;;;21122:1;21119;21112:12;21073:53;21161:9;21148:23;21180:39;21213:5;21180:39;:::i;:::-;21238:5;-1:-1:-1;21316:2:47;21301:18;;21288:32;;-1:-1:-1;21419:2:47;21404:18;;21391:32;;-1:-1:-1;21500:2:47;21485:18;;21472:32;-1:-1:-1;;;;;21516:30:47;;21513:50;;;21559:1;21556;21549:12;21513:50;21582:49;21623:7;21614:6;21603:9;21599:22;21582:49;:::i;:::-;20917:824;;;;-1:-1:-1;20917:824:47;;21704:3;21689:19;21676:33;;20917:824;-1:-1:-1;;;20917:824:47:o;21978:127::-;22039:10;22034:3;22030:20;22027:1;22020:31;22070:4;22067:1;22060:15;22094:4;22091:1;22084:15;22110:339;22253:2;22238:18;;22286:1;22275:13;;22265:144;;22331:10;22326:3;22322:20;22319:1;22312:31;22366:4;22363:1;22356:15;22394:4;22391:1;22384:15;22265:144;22418:25;;;22110:339;:::o;22454:1482::-;22640:6;22648;22656;22664;22672;22680;22688;22696;22704;22757:3;22745:9;22736:7;22732:23;22728:33;22725:53;;;22774:1;22771;22764:12;22725:53;22819:23;;;-1:-1:-1;22918:2:47;22903:18;;22890:32;22931:41;22890:32;22931:41;:::i;:::-;22991:7;-1:-1:-1;23050:2:47;23035:18;;23022:32;23063:41;23022:32;23063:41;:::i;:::-;23123:7;-1:-1:-1;23182:2:47;23167:18;;23154:32;23195:41;23154:32;23195:41;:::i;:::-;23255:7;-1:-1:-1;23313:3:47;23298:19;;23285:33;-1:-1:-1;;;;;23330:30:47;;23327:50;;;23373:1;23370;23363:12;23327:50;23396:22;;23449:4;23441:13;;23437:27;-1:-1:-1;23427:55:47;;23478:1;23475;23468:12;23427:55;23518:2;23505:16;-1:-1:-1;;;;;23536:6:47;23533:30;23530:50;;;23576:1;23573;23566:12;23530:50;23630:7;23625:2;23619;23611:6;23607:15;23603:2;23599:24;23595:33;23592:46;23589:66;;;23651:1;23648;23641:12;23589:66;23682:2;23674:11;;;;;-1:-1:-1;23704:6:47;-1:-1:-1;23783:3:47;23768:19;;23755:33;;-1:-1:-1;23833:39:47;23867:3;23852:19;;23833:39;:::i;:::-;23823:49;;23891:39;23925:3;23914:9;23910:19;23891:39;:::i;:::-;23881:49;;22454:1482;;;;;;;;;;;:::o;24634:118::-;24720:5;24713:13;24706:21;24699:5;24696:32;24686:60;;24742:1;24739;24732:12;24757:962;24861:6;24869;24877;24885;24893;24901;24954:3;24942:9;24933:7;24929:23;24925:33;24922:53;;;24971:1;24968;24961:12;24922:53;25016:23;;;-1:-1:-1;25136:2:47;25121:18;;25108:32;;-1:-1:-1;25217:2:47;25202:18;;25189:32;-1:-1:-1;;;;;25233:30:47;;25230:50;;;25276:1;25273;25266:12;25230:50;25299:49;25340:7;25331:6;25320:9;25316:22;25299:49;:::i;:::-;25289:59;;;25400:2;25389:9;25385:18;25372:32;25413:30;25435:7;25413:30;:::i;:::-;25462:7;-1:-1:-1;25521:3:47;25506:19;;25493:33;25535:30;25493:33;25535:30;:::i;:::-;25584:7;-1:-1:-1;25643:3:47;25628:19;;25615:33;25657:30;25615:33;25657:30;:::i;:::-;25706:7;25696:17;;;24757:962;;;;;;;;:::o;25724:245::-;25791:6;25844:2;25832:9;25823:7;25819:23;25815:32;25812:52;;;25860:1;25857;25850:12;25812:52;25892:9;25886:16;25911:28;25933:5;25911:28;:::i;25974:325::-;-1:-1:-1;;;;;26149:32:47;;26131:51;;26218:2;26213;26198:18;;26191:30;;;-1:-1:-1;;26238:55:47;;26274:18;;26266:6;26238:55;:::i;26304:211::-;26345:3;26383:5;26377:12;26427:6;26420:4;26413:5;26409:16;26404:3;26398:36;26489:1;26453:16;;26478:13;;;-1:-1:-1;26453:16:47;;26304:211;-1:-1:-1;26304:211:47:o;26520:366::-;-1:-1:-1;;;;;26756:31:47;26747:6;26743:2;26739:15;26735:53;26730:3;26723:66;26819:6;26814:2;26809:3;26805:12;26798:28;26705:3;26842:38;26876:2;26871:3;26867:12;26859:6;26842:38;:::i;26891:127::-;26952:10;26947:3;26943:20;26940:1;26933:31;26983:4;26980:1;26973:15;27007:4;27004:1;26997:15;27023:128;27090:9;;;27111:11;;;27108:37;;;27125:18;;:::i;27156:299::-;27331:2;27320:9;27313:21;27294:4;27351:55;27402:2;27391:9;27387:18;27379:6;27351:55;:::i;:::-;27343:63;;27442:6;27437:2;27426:9;27422:18;27415:34;27156:299;;;;;:::o;27460:125::-;27525:9;;;27546:10;;;27543:36;;;27559:18;;:::i;27928:370::-;28131:6;28120:9;28113:25;28174:6;28169:2;28158:9;28154:18;28147:34;28217:2;28212;28201:9;28197:18;28190:30;28094:4;28237:55;28288:2;28277:9;28273:18;28265:6;28237:55;:::i;28303:441::-;28532:6;28521:9;28514:25;28575:6;28570:2;28559:9;28555:18;28548:34;28618:3;28613:2;28602:9;28598:18;28591:31;28495:4;28639:56;28690:3;28679:9;28675:19;28667:6;28639:56;:::i;:::-;28631:64;;28731:6;28726:2;28715:9;28711:18;28704:34;28303:441;;;;;;;:::o;29197:396::-;-1:-1:-1;;;;;29400:32:47;;29382:51;;29469:2;29464;29449:18;;29442:30;;;-1:-1:-1;;29489:55:47;;29525:18;;29517:6;29489:55;:::i;:::-;29481:63;;29580:6;29575:2;29564:9;29560:18;29553:34;29197:396;;;;;;:::o;29598:1009::-;29693:6;29746:2;29734:9;29725:7;29721:23;29717:32;29714:52;;;29762:1;29759;29752:12;29714:52;29795:9;29789:16;-1:-1:-1;;;;;29820:6:47;29817:30;29814:50;;;29860:1;29857;29850:12;29814:50;29883:22;;29936:4;29928:13;;29924:27;-1:-1:-1;29914:55:47;;29965:1;29962;29955:12;29914:55;29998:2;29992:9;-1:-1:-1;;;;;30016:6:47;30013:30;30010:56;;;30046:18;;:::i;:::-;30092:6;30089:1;30085:14;30119:28;30143:2;30139;30135:11;30119:28;:::i;:::-;30181:19;;;30225:2;30255:11;;;30251:20;;;30216:12;;;;30283:19;;;30280:39;;;30315:1;30312;30305:12;30280:39;30347:2;30343;30339:11;30328:22;;30359:218;30375:6;30370:3;30367:15;30359:218;;;30448:3;30442:10;30429:23;;30465:39;30498:5;30465:39;:::i;:::-;30517:18;;;30564:2;30392:12;;;;30555;;;;30359:218;;30612:127;30673:10;30668:3;30664:20;30661:1;30654:31;30704:4;30701:1;30694:15;30728:4;30725:1;30718:15;30744:521;30821:4;30827:6;30887:11;30874:25;30981:2;30977:7;30966:8;30950:14;30946:29;30942:43;30922:18;30918:68;30908:96;;31000:1;30997;30990:12;30908:96;31027:33;;31079:20;;;-1:-1:-1;;;;;;31111:30:47;;31108:50;;;31154:1;31151;31144:12;31108:50;31187:4;31175:17;;-1:-1:-1;31218:14:47;31214:27;;;31204:38;;31201:58;;;31255:1;31252;31245:12;31201:58;30744:521;;;;;:::o;31270:271::-;31453:6;31445;31440:3;31427:33;31409:3;31479:16;;31504:13;;;31479:16;31270:271;-1:-1:-1;31270:271:47:o;31546:686::-;31626:6;31679:2;31667:9;31658:7;31654:23;31650:32;31647:52;;;31695:1;31692;31685:12;31647:52;31728:9;31722:16;-1:-1:-1;;;;;31753:6:47;31750:30;31747:50;;;31793:1;31790;31783:12;31747:50;31816:22;;31869:4;31861:13;;31857:27;-1:-1:-1;31847:55:47;;31898:1;31895;31888:12;31847:55;31931:2;31925:9;31956:52;31972:35;32000:6;31972:35;:::i;31956:52::-;32031:6;32024:5;32017:21;32079:7;32074:2;32065:6;32061:2;32057:15;32053:24;32050:37;32047:57;;;32100:1;32097;32090:12;32047:57;32148:6;32143:2;32139;32135:11;32130:2;32123:5;32119:14;32113:42;32200:1;32175:18;;;32195:2;32171:27;32164:38;;;;32179:5;31546:686;-1:-1:-1;;;;31546:686:47:o;32451:546::-;32547:6;32607:2;32595:9;32586:7;32582:23;32578:32;32622:2;32619:22;;;32637:1;32634;32627:12;32619:22;-1:-1:-1;32706:2:47;32700:9;32748:2;32736:15;;-1:-1:-1;;;;;32766:34:47;;32802:22;;;32763:62;32760:88;;;32828:18;;:::i;:::-;32864:2;32857:22;32920:16;;32945:21;;-1:-1:-1;32952:6:47;32451:546;-1:-1:-1;32451:546:47:o;33002:613::-;33289:6;33278:9;33271:25;33332:6;33327:2;33316:9;33312:18;33305:34;33375:3;33370:2;33359:9;33355:18;33348:31;33252:4;33396:56;33447:3;33436:9;33432:19;33424:6;33396:56;:::i;:::-;-1:-1:-1;;;;;33488:32:47;;;;33483:2;33468:18;;33461:60;-1:-1:-1;33552:3:47;33537:19;;33530:35;;;;33508:3;33581:19;;;33574:35;33488:32;33388:64;-1:-1:-1;;;33002:613:47:o;33620:168::-;33693:9;;;33724;;33741:15;;;33735:22;;33721:37;33711:71;;33762:18;;:::i;33793:184::-;33863:6;33916:2;33904:9;33895:7;33891:23;33887:32;33884:52;;;33932:1;33929;33922:12;33884:52;-1:-1:-1;33955:16:47;;33793:184;-1:-1:-1;33793:184:47:o;34170:513::-;34427:6;34416:9;34409:25;34470:6;34465:2;34454:9;34450:18;34443:34;34513:3;34508:2;34497:9;34493:18;34486:31;34390:4;34534:56;34585:3;34574:9;34570:19;34562:6;34534:56;:::i;:::-;34621:2;34606:18;;34599:34;;;;-1:-1:-1;34664:3:47;34649:19;34642:35;34526:64;34170:513;-1:-1:-1;;;34170:513:47:o;34688:146::-;-1:-1:-1;;;;;34767:5:47;34763:46;34756:5;34753:57;34743:85;;34824:1;34821;34814:12;34839:247;34898:6;34951:2;34939:9;34930:7;34926:23;34922:32;34919:52;;;34967:1;34964;34957:12;34919:52;35006:9;34993:23;35025:31;35050:5;35025:31;:::i;35091:567::-;35261:5;35248:19;35276:33;35301:7;35276:33;:::i;:::-;-1:-1:-1;;;;;35332:7:47;35328:48;35318:58;;35460:2;-1:-1:-1;;;;;35418:39:47;35411:4;35405:11;35401:57;35398:65;35392:4;35385:79;35512:2;35505:5;35501:14;35488:28;35525:33;35550:7;35525:33;:::i;:::-;35595:3;35591:17;-1:-1:-1;;35587:63:47;35580:71;35567:85;;-1:-1:-1;35091:567:47:o;35998:179::-;36097:14;36066:22;;;36090;;;36062:51;;36125:23;;36122:49;;;36151:18;;:::i;36558:259::-;36628:6;36681:2;36669:9;36660:7;36656:23;36652:32;36649:52;;;36697:1;36694;36687:12;36649:52;36729:9;36723:16;36748:39;36781:5;36748:39;:::i;36822:127::-;36883:10;36878:3;36874:20;36871:1;36864:31;36914:4;36911:1;36904:15;36938:4;36935:1;36928:15;36954:217;36994:1;37020;37010:132;;37064:10;37059:3;37055:20;37052:1;37045:31;37099:4;37096:1;37089:15;37127:4;37124:1;37117:15;37010:132;-1:-1:-1;37156:9:47;;36954:217::o;37995:611::-;38280:6;38269:9;38262:25;38323:6;38318:2;38307:9;38303:18;38296:34;38366:3;38361:2;38350:9;38346:18;38339:31;38243:4;38387:56;38438:3;38427:9;38423:19;38415:6;38387:56;:::i;:::-;38474:2;38459:18;;38452:34;;;;-1:-1:-1;38517:3:47;38502:19;;38495:35;;;;-1:-1:-1;;;;;38567:32:47;38587:3;38546:19;;;38539:61;38379:64;37995:611;-1:-1:-1;;;37995:611:47:o;38890:431::-;-1:-1:-1;;;;;39154:31:47;39145:6;39141:2;39137:15;39133:53;39128:3;39121:66;39217:6;39212:2;39207:3;39203:12;39196:28;39254:6;39249:2;39244:3;39240:12;39233:28;39103:3;39277:38;39311:2;39306:3;39302:12;39294:6;39277:38;:::i;39597:182::-;39698:14;39691:22;;;39667;;;39663:51;;39726:24;;39723:50;;;39753:18;;:::i;40071:333::-;40292:3;40317:81;40342:55;40367:29;40392:3;40384:6;40367:29;:::i;:::-;40359:6;40342:55;:::i;:::-;40334:6;40317:81;:::i;40616:189::-;40745:3;40770:29;40795:3;40787:6;40770:29;:::i;40810:477::-;-1:-1:-1;;;41166:3:47;41159:16;41141:3;41194:37;41228:1;41223:3;41219:11;41211:6;41194:37;:::i;:::-;-1:-1:-1;;;41240:15:47;;41279:1;41271:10;;40810:477;-1:-1:-1;;;40810:477:47:o;41292:343::-;41522:3;41550:29;41575:3;41567:6;41550:29;:::i","linkReferences":{},"immutableReferences":{"1500":[{"start":11863,"length":32},{"start":11904,"length":32},{"start":12224,"length":32}]}},"methodIdentifiers":{"CONFIG_ADMIN_ROLE()":"c78ef28c","DEFAULT_ADMIN_ROLE()":"a217fddf","OO_ANCILLARY_DATA_LIMIT()":"4ccb56f5","REQUEST_MANAGER_ROLE()":"f38fdc02","TOO_EARLY_RESPONSE()":"ff8c1a8c","UPGRADE_ADMIN_ROLE()":"8ffc2120","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","acceptDefaultAdminTransfer()":"cefc1429","addRequestManager(address)":"b6cdb8ee","allowedBondRanges(address)":"b873c4df","ancillaryBytesLimit()":"c371dda7","beginDefaultAdminTransfer(address)":"634e93da","cancelDefaultAdminTransfer()":"d602b9fd","changeDefaultAdminDelay(uint48)":"649a5ec7","customBonds(bytes32,address)":"e92706c6","customLivenessValues(bytes32)":"afe1fcff","customProposerWhitelists(bytes32)":"8aca6afc","defaultAdmin()":"84ef8ffc","defaultAdminDelay()":"cc8463c8","defaultAdminDelayIncreaseWait()":"022d63fb","defaultLiveness()":"fe4e1983","defaultProposerWhitelist()":"ab328fb2","disputePrice(address,bytes32,uint256,bytes)":"fba7f1e3","disputePriceFor(address,address,bytes32,uint256,bytes)":"76c7823f","finder()":"b9a3c84c","getCurrentTime()":"29cb924d","getCustomProposerWhitelist(address,bytes32,bytes)":"7746e7ae","getManagedRequestId(address,bytes32,bytes)":"4835698a","getProposerWhitelistWithEnabledStatus(address,bytes32,bytes)":"a625b01e","getRequest(address,bytes32,uint256,bytes)":"a9904f9b","getRoleAdmin(bytes32)":"248a9ca3","getState(address,bytes32,uint256,bytes)":"ba4b930c","grantRole(bytes32,address)":"2f2ff15d","hasPrice(address,bytes32,uint256,bytes)":"bc58ccaa","hasRole(bytes32,address)":"91d14854","initialize(uint256,address,address)":"b4988fd0","initialize(uint256,address,address,address,(address,(uint128,uint128))[],uint256,address,address)":"cdb21cc6","minimumLiveness()":"91152f10","multicall(bytes[])":"ac9650d8","owner()":"8da5cb5b","pendingDefaultAdmin()":"cf6eefb7","pendingDefaultAdminDelay()":"a1eda53c","proposePrice(address,bytes32,uint256,bytes,int256)":"b8b4f908","proposePriceFor(address,address,bytes32,uint256,bytes,int256)":"7c82288f","proxiableUUID()":"52d1902d","removeRequestManager(address)":"1480db39","renounceRole(bytes32,address)":"36568abe","requestManagerSetBond(address,bytes32,bytes,address,uint256)":"93ae2ebd","requestManagerSetCustomLiveness(address,bytes32,bytes,uint256)":"6982ece0","requestManagerSetProposerWhitelist(address,bytes32,bytes,address)":"347b4dba","requestPrice(bytes32,uint256,bytes,address,uint256)":"11df92f1","requesterWhitelist()":"2589382b","requests(bytes32)":"9d866985","revokeRole(bytes32,address)":"d547741f","rollbackDefaultAdminDelay()":"0aa6220b","setAllowedBondRange(address,(uint128,uint128))":"5845e68a","setBond(bytes32,uint256,bytes,uint256)":"ad5a755a","setCallbacks(bytes32,uint256,bytes,bool,bool,bool)":"f327b075","setCustomLiveness(bytes32,uint256,bytes,uint256)":"473c45fe","setDefaultProposerWhitelist(address)":"1fa50cef","setEventBased(bytes32,uint256,bytes)":"120698af","setMinimumLiveness(uint256)":"32ecce9e","setRefundOnDispute(bytes32,uint256,bytes)":"91f58dcb","setRequesterWhitelist(address)":"6b821d06","settle(address,bytes32,uint256,bytes)":"5e9a79a9","settleAndGetPrice(bytes32,uint256,bytes)":"53b59239","stampAncillaryData(bytes,address)":"af5d2f39","supportsInterface(bytes4)":"01ffc9a7","upgradeToAndCall(address,bytes)":"4f1ef286"}}}},"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol":{"OptimisticOracleV2":{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OO_ANCILLARY_DATA_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"TOO_EARLY_RESPONSE","inputs":[],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"acceptDefaultAdminTransfer","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ancillaryBytesLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"beginDefaultAdminTransfer","inputs":[{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelDefaultAdminTransfer","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"changeDefaultAdminDelay","inputs":[{"name":"newDelay","type":"uint48","internalType":"uint48"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"defaultAdmin","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"defaultAdminDelay","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"defaultAdminDelayIncreaseWait","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"defaultLiveness","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"disputePrice","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disputePriceFor","inputs":[{"name":"disputer","type":"address","internalType":"address"},{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"finder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract FinderInterface"}],"stateMutability":"view"},{"type":"function","name":"getCurrentTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRequest","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"tuple","internalType":"struct OptimisticOracleV2Interface.Request","components":[{"name":"proposer","type":"address","internalType":"address"},{"name":"disputer","type":"address","internalType":"address"},{"name":"currency","type":"address","internalType":"contract IERC20"},{"name":"settled","type":"bool","internalType":"bool"},{"name":"requestSettings","type":"tuple","internalType":"struct OptimisticOracleV2Interface.RequestSettings","components":[{"name":"eventBased","type":"bool","internalType":"bool"},{"name":"refundOnDispute","type":"bool","internalType":"bool"},{"name":"callbackOnPriceProposed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceDisputed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceSettled","type":"bool","internalType":"bool"},{"name":"bond","type":"uint256","internalType":"uint256"},{"name":"customLiveness","type":"uint256","internalType":"uint256"}]},{"name":"proposedPrice","type":"int256","internalType":"int256"},{"name":"resolvedPrice","type":"int256","internalType":"int256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"reward","type":"uint256","internalType":"uint256"},{"name":"finalFee","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getState","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint8","internalType":"enum OptimisticOracleV2Interface.State"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasPrice","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_liveness","type":"uint256","internalType":"uint256"},{"name":"_finderAddress","type":"address","internalType":"address"},{"name":"upgradeAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingDefaultAdmin","inputs":[],"outputs":[{"name":"newAdmin","type":"address","internalType":"address"},{"name":"schedule","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"pendingDefaultAdminDelay","inputs":[],"outputs":[{"name":"newDelay","type":"uint48","internalType":"uint48"},{"name":"schedule","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"proposePrice","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"proposedPrice","type":"int256","internalType":"int256"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"proposePriceFor","inputs":[{"name":"proposer","type":"address","internalType":"address"},{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"proposedPrice","type":"int256","internalType":"int256"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestPrice","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"currency","type":"address","internalType":"contract IERC20"},{"name":"reward","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"requests","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"proposer","type":"address","internalType":"address"},{"name":"disputer","type":"address","internalType":"address"},{"name":"currency","type":"address","internalType":"contract IERC20"},{"name":"settled","type":"bool","internalType":"bool"},{"name":"requestSettings","type":"tuple","internalType":"struct OptimisticOracleV2Interface.RequestSettings","components":[{"name":"eventBased","type":"bool","internalType":"bool"},{"name":"refundOnDispute","type":"bool","internalType":"bool"},{"name":"callbackOnPriceProposed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceDisputed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceSettled","type":"bool","internalType":"bool"},{"name":"bond","type":"uint256","internalType":"uint256"},{"name":"customLiveness","type":"uint256","internalType":"uint256"}]},{"name":"proposedPrice","type":"int256","internalType":"int256"},{"name":"resolvedPrice","type":"int256","internalType":"int256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"reward","type":"uint256","internalType":"uint256"},{"name":"finalFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollbackDefaultAdminDelay","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBond","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"bond","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"setCallbacks","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"callbackOnPriceProposed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceDisputed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceSettled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setCustomLiveness","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"customLiveness","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setEventBased","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRefundOnDispute","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settle","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"payout","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"settleAndGetPrice","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"stampAncillaryData","inputs":[{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"requester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"DefaultAdminDelayChangeCanceled","inputs":[],"anonymous":false},{"type":"event","name":"DefaultAdminDelayChangeScheduled","inputs":[{"name":"newDelay","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"effectSchedule","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"DefaultAdminTransferCanceled","inputs":[],"anonymous":false},{"type":"event","name":"DefaultAdminTransferScheduled","inputs":[{"name":"newAdmin","type":"address","indexed":true,"internalType":"address"},{"name":"acceptSchedule","type":"uint48","indexed":false,"internalType":"uint48"}],"anonymous":false},{"type":"event","name":"DisputePrice","inputs":[{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":true,"internalType":"address"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"proposedPrice","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ProposePrice","inputs":[{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":true,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"proposedPrice","type":"int256","indexed":false,"internalType":"int256"},{"name":"expirationTimestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RequestPrice","inputs":[{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"reward","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"finalFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Settle","inputs":[{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":true,"internalType":"address"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"price","type":"int256","indexed":false,"internalType":"int256"},{"name":"payout","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlEnforcedDefaultAdminDelay","inputs":[{"name":"schedule","type":"uint48","internalType":"uint48"}]},{"type":"error","name":"AccessControlEnforcedDefaultAdminRules","inputs":[]},{"type":"error","name":"AccessControlInvalidDefaultAdmin","inputs":[{"name":"defaultAdmin","type":"address","internalType":"address"}]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AncillaryDataTooLong","inputs":[]},{"type":"error","name":"CannotProposeTooEarly","inputs":[]},{"type":"error","name":"DisputerAddressCannotBeZero","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"LivenessCannotBeZero","inputs":[]},{"type":"error","name":"LivenessTooLarge","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ProposerAddressCannotBeZero","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"RequestNotSettleable","inputs":[]},{"type":"error","name":"RequestStateNotInvalid","inputs":[]},{"type":"error","name":"RequestStateNotProposed","inputs":[]},{"type":"error","name":"RequestStateNotRequested","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"TimestampInFuture","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnsupportedCurrency","inputs":[]},{"type":"error","name":"UnsupportedIdentifier","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"name\":\"AccessControlEnforcedDefaultAdminDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AccessControlEnforcedDefaultAdminRules\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"defaultAdmin\",\"type\":\"address\"}],\"name\":\"AccessControlInvalidDefaultAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AncillaryDataTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotProposeTooEarly\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DisputerAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LivenessCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LivenessTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProposerAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RequestNotSettleable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RequestStateNotInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RequestStateNotProposed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RequestStateNotRequested\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampInFuture\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedCurrency\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedIdentifier\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminDelayChangeCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"effectSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminDelayChangeScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DefaultAdminTransferCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"acceptSchedule\",\"type\":\"uint48\"}],\"name\":\"DefaultAdminTransferScheduled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"DisputePrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"ProposePrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"name\":\"RequestPrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"price\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"payout\",\"type\":\"uint256\"}],\"name\":\"Settle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OO_ANCILLARY_DATA_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOO_EARLY_RESPONSE\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ancillaryBytesLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"beginDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelDefaultAdminTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"}],\"name\":\"changeDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultAdminDelayIncreaseWait\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultLiveness\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"disputePrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"disputePriceFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finder\",\"outputs\":[{\"internalType\":\"contract FinderInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"getRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"eventBased\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"refundOnDispute\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceProposed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceDisputed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceSettled\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct OptimisticOracleV2Interface.RequestSettings\",\"name\":\"requestSettings\",\"type\":\"tuple\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"internalType\":\"struct OptimisticOracleV2Interface.Request\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"getState\",\"outputs\":[{\"internalType\":\"enum OptimisticOracleV2Interface.State\",\"name\":\"\",\"type\":\"uint8\"}],\"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\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"hasPrice\",\"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\":\"uint256\",\"name\":\"_liveness\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_finderAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgradeAdmin\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingDefaultAdminDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"newDelay\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"schedule\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"proposePrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"proposePriceFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"name\":\"requestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"requests\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"eventBased\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"refundOnDispute\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceProposed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceDisputed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceSettled\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct OptimisticOracleV2Interface.RequestSettings\",\"name\":\"requestSettings\",\"type\":\"tuple\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollbackDefaultAdminDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"setBond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceProposed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceDisputed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceSettled\",\"type\":\"bool\"}],\"name\":\"setCallbacks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"name\":\"setCustomLiveness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"setEventBased\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"setRefundOnDispute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"payout\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"settleAndGetPrice\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"}],\"name\":\"stampAncillaryData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"custom:security-contact\":\"bugs@umaproject.org\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlEnforcedDefaultAdminDelay(uint48)\":[{\"details\":\"The delay for transferring the default admin delay is enforced and the operation must wait until `schedule`. NOTE: `schedule` can be 0 indicating there's no transfer scheduled.\"}],\"AccessControlEnforcedDefaultAdminRules()\":[{\"details\":\"At least one of the following rules was violated: - The `DEFAULT_ADMIN_ROLE` must only be managed by itself. - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time. - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps.\"}],\"AccessControlInvalidDefaultAdmin(address)\":[{\"details\":\"The new default admin is not a valid default admin.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"DefaultAdminDelayChangeCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass.\"},\"DefaultAdminDelayChangeScheduled(uint48,uint48)\":{\"details\":\"Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next delay to be applied between default admin transfer after `effectSchedule` has passed.\"},\"DefaultAdminTransferCanceled()\":{\"details\":\"Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule.\"},\"DefaultAdminTransferScheduled(address,uint48)\":{\"details\":\"Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule` passes.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"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`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"acceptDefaultAdminTransfer()\":{\"details\":\"Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. After calling the function: - `DEFAULT_ADMIN_ROLE` should be granted to the caller. - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder. - {pendingDefaultAdmin} should be reset to zero values. Requirements: - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`. - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed.\"},\"beginDefaultAdminTransfer(address)\":{\"details\":\"Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance after the current timestamp plus a {defaultAdminDelay}. Requirements: - Only can be called by the current {defaultAdmin}. Emits a DefaultAdminRoleChangeStarted event.\"},\"cancelDefaultAdminTransfer()\":{\"details\":\"Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}. A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function. Requirements: - Only can be called by the current {defaultAdmin}. May emit a DefaultAdminTransferCanceled event.\"},\"changeDefaultAdminDelay(uint48)\":{\"details\":\"Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting into effect after the current timestamp plus a {defaultAdminDelay}. This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay} set before calling. The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin} complete transfer (including acceptance). The schedule is designed for two scenarios: - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by {defaultAdminDelayIncreaseWait}. - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`. A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change. Requirements: - Only can be called by the current {defaultAdmin}. Emits a DefaultAdminDelayChangeScheduled event and may emit a DefaultAdminDelayChangeCanceled event.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"defaultAdmin()\":{\"details\":\"Returns the address of the current `DEFAULT_ADMIN_ROLE` holder.\"},\"defaultAdminDelay()\":{\"details\":\"Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started. This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set the acceptance schedule. NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this function returns the new delay. See {changeDefaultAdminDelay}.\"},\"defaultAdminDelayIncreaseWait()\":{\"details\":\"Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay}) to take effect. Default to 5 days. When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds) that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can be overrode for a custom {defaultAdminDelay} increase scheduling. IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise, there's a risk of setting a high new delay that goes into effect almost immediately without the possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds).\"},\"disputePrice(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was valid (the proposal was incorrect).\"}},\"disputePriceFor(address,address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"disputer\":\"address to set as the disputer.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was valid (the proposal was incorrect).\"}},\"getRequest(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"the Request data structure.\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getState(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"the State.\"}},\"grantRole(bytes32,address)\":{\"details\":\"See {AccessControl-grantRole}. Reverts for `DEFAULT_ADMIN_ROLE`.\"},\"hasPrice(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"boolean indicating true if price exists and false if not.\"}},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(uint256,address,address)\":{\"details\":\"Used only for standalone deployments of the OptimisticOracleV2Upgradeable contract.\",\"params\":{\"_finderAddress\":\"finder to use to get addresses of DVM contracts.\",\"_liveness\":\"default liveness applied to each price request.\"}},\"owner()\":{\"details\":\"Gets the address of the owner.\"},\"pendingDefaultAdmin()\":{\"details\":\"Returns a tuple of a `newAdmin` and an accept schedule. After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role by calling {acceptDefaultAdminTransfer}, completing the role transfer. A zero value only in `acceptSchedule` indicates no pending admin transfer. NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced.\"},\"pendingDefaultAdminDelay()\":{\"details\":\"Returns a tuple of `newDelay` and an effect schedule. After the `schedule` passes, the `newDelay` will get into effect immediately for every new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}. A zero value only in `effectSchedule` indicates no pending delay change. NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay} will be zero after the effect schedule.\"},\"proposePrice(address,bytes32,uint256,bytes,int256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"proposedPrice\":\"price being proposed.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct.\"}},\"proposePriceFor(address,address,bytes32,uint256,bytes,int256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"proposedPrice\":\"price being proposed.\",\"proposer\":\"address to set as the proposer.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"See {AccessControl-renounceRole}. For the `DEFAULT_ADMIN_ROLE`, it only allows renouncing in two steps by first calling {beginDefaultAdminTransfer} to the `address(0)`, so it's required that the {pendingDefaultAdmin} schedule has also passed when calling this function. After its execution, it will not be possible to call `onlyRole(DEFAULT_ADMIN_ROLE)` functions. NOTE: Renouncing `DEFAULT_ADMIN_ROLE` will leave the contract without a {defaultAdmin}, thereby disabling any functionality that is only available for it, and the possibility of reassigning a non-administrated role.\"},\"requestPrice(bytes32,uint256,bytes,address,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data representing additional args being passed with the price request.\",\"currency\":\"ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\",\"identifier\":\"price identifier being requested.\",\"reward\":\"reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0, which could make sense if the contract requests and proposes the value in the same call or provides its own reward system.\",\"timestamp\":\"timestamp of the price being requested.\"},\"returns\":{\"totalBond\":\"default bond (final fee) + final fee that the proposer and disputer will be required to pay. This can be changed with a subsequent call to setBond().\"}},\"revokeRole(bytes32,address)\":{\"details\":\"See {AccessControl-revokeRole}. Reverts for `DEFAULT_ADMIN_ROLE`.\"},\"rollbackDefaultAdminDelay()\":{\"details\":\"Cancels a scheduled {defaultAdminDelay} change. Requirements: - Only can be called by the current {defaultAdmin}. May emit a DefaultAdminDelayChangeCanceled event.\"},\"setBond(bytes32,uint256,bytes,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"bond\":\"custom bond amount to set.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"new bond + final fee that the proposer and disputer will be required to pay. This can be changed again with a subsequent call to setBond().\"}},\"setCallbacks(bytes32,uint256,bytes,bool,bool,bool)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"callbackOnPriceDisputed\":\"whether to enable the callback onPriceDisputed.\",\"callbackOnPriceProposed\":\"whether to enable the callback onPriceProposed.\",\"callbackOnPriceSettled\":\"whether to enable the callback onPriceSettled.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"}},\"setCustomLiveness(bytes32,uint256,bytes,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"customLiveness\":\"new custom liveness.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"}},\"setEventBased(bytes32,uint256,bytes)\":{\"details\":\"Calling this method has a few impacts on the request: 1. The timestamp at which the request is evaluated is the time of the proposal, not the timestamp associated with the request. 2. The proposer cannot propose the \\\"too early\\\" value (TOO_EARLY_RESPONSE). This is to ensure that a proposer who prematurely proposes a response loses their bond. 3. RefundoOnDispute is automatically set, meaning disputes trigger the reward to be automatically refunded to the requesting contract.\",\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"}},\"setRefundOnDispute(bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"}},\"settle(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"payout\":\"the amount that the \\\"winner\\\" (proposer or disputer) receives on settlement. This amount includes the returned bonds as well as additional rewards.\"}},\"settleAndGetPrice(bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"resolved price.\"}},\"stampAncillaryData(bytes,address)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"requester\":\"sender of the initial price request.\"},\"returns\":{\"_0\":\"the stamped ancillary bytes.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"Reserve storage slots for future versions of this base contract to add state variables without affecting the storage layout of child contracts. Decrement the size of __gap whenever state variables are added. This is at the bottom of contract to make sure its always at the end of storage. See https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable#storage-gaps\"}},\"title\":\"Optimistic Oracle.\",\"version\":1},\"userdoc\":{\"errors\":{\"AncillaryDataTooLong()\":[{\"notice\":\"Thrown when ancillary data exceeds the allowed limit.\"}],\"CannotProposeTooEarly()\":[{\"notice\":\"Thrown when trying to propose the \\\"too early\\\" response for event-based requests.\"}],\"DisputerAddressCannotBeZero()\":[{\"notice\":\"Thrown when a disputer address is zero.\"}],\"LivenessCannotBeZero()\":[{\"notice\":\"Thrown when liveness period cannot be zero.\"}],\"LivenessTooLarge()\":[{\"notice\":\"Thrown when liveness period is too large.\"}],\"ProposerAddressCannotBeZero()\":[{\"notice\":\"Thrown when a proposer address is zero.\"}],\"RequestNotSettleable()\":[{\"notice\":\"Thrown when trying to settle a request that is not settleable.\"}],\"RequestStateNotInvalid()\":[{\"notice\":\"Thrown when a request is not in the expected Invalid state.\"}],\"RequestStateNotProposed()\":[{\"notice\":\"Thrown when a request is not in the expected Proposed state.\"}],\"RequestStateNotRequested()\":[{\"notice\":\"Thrown when a request is not in the expected Requested state.\"}],\"TimestampInFuture()\":[{\"notice\":\"Thrown when a timestamp is in the future.\"}],\"UnsupportedCurrency()\":[{\"notice\":\"Thrown when a currency is not supported by the collateral whitelist.\"}],\"UnsupportedIdentifier()\":[{\"notice\":\"Thrown when an identifier is not supported by the identifier whitelist.\"}]},\"kind\":\"user\",\"methods\":{\"disputePrice(address,bytes32,uint256,bytes)\":{\"notice\":\"Disputes a price value for an existing price request with an active proposal.\"},\"disputePriceFor(address,address,bytes32,uint256,bytes)\":{\"notice\":\"Disputes a price request with an active proposal on another address' behalf. Note: this address will receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\"},\"getRequest(address,bytes32,uint256,bytes)\":{\"notice\":\"Gets the current data structure containing all information about a price request.\"},\"getState(address,bytes32,uint256,bytes)\":{\"notice\":\"Computes the current state of a price request. See the State enum for more details.\"},\"hasPrice(address,bytes32,uint256,bytes)\":{\"notice\":\"Checks if a given request has resolved, expired or been settled (i.e the optimistic oracle has a price).\"},\"initialize(uint256,address,address)\":{\"notice\":\"Initializer (external).\"},\"proposePrice(address,bytes32,uint256,bytes,int256)\":{\"notice\":\"Proposes a price value for an existing price request.\"},\"proposePriceFor(address,address,bytes32,uint256,bytes,int256)\":{\"notice\":\"Proposes a price value on another address' behalf. Note: this address will receive any rewards that come from this proposal. However, any bonds are pulled from the caller.\"},\"requestPrice(bytes32,uint256,bytes,address,uint256)\":{\"notice\":\"Requests a new price.\"},\"setBond(bytes32,uint256,bytes,uint256)\":{\"notice\":\"Set the proposal bond associated with a price request.\"},\"setCallbacks(bytes32,uint256,bytes,bool,bool,bool)\":{\"notice\":\"Sets which callbacks should be enabled for the request.\"},\"setCustomLiveness(bytes32,uint256,bytes,uint256)\":{\"notice\":\"Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before being auto-resolved.\"},\"setEventBased(bytes32,uint256,bytes)\":{\"notice\":\"Sets the request to be an \\\"event-based\\\" request.\"},\"setRefundOnDispute(bytes32,uint256,bytes)\":{\"notice\":\"Sets the request to refund the reward if the proposal is disputed. This can help to \\\"hedge\\\" the caller in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's bond, so there is still profit to be made even if the reward is refunded.\"},\"settle(address,bytes32,uint256,bytes)\":{\"notice\":\"Attempts to settle an outstanding price request. Will revert if it isn't settleable.\"},\"settleAndGetPrice(bytes32,uint256,bytes)\":{\"notice\":\"Retrieves a price that was previously requested by a caller. Reverts if the request is not settled or settleable. Note: this method is not view so that this call may actually settle the price request if it hasn't been settled.\"},\"stampAncillaryData(bytes,address)\":{\"notice\":\"Generates stamped ancillary data in the format that it would be used in the case of a price dispute.\"}},\"notice\":\"Pre-DVM escalation contract that allows faster settlement.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol\":\"OptimisticOracleV2\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x85a70e2b1b65e9ba456add364d22b97eb9944083df1c39c0b4bd6a4b5aa386a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d32a33be6ca4d8e89b9e82e3f9cec7a6c4e040534152313ff55da85b8f193059\",\"dweb:/ipfs/QmeR55L8t2A8xZ1nvT5y4yVWfFbbmpaGAtGBMz3GGNpuyP\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol\":{\"keccak256\":\"0x2922ed589f7063a685dffc9297f8b669c1e86f2fde9078c08d8bff079cf636a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bd42676681a1c4563f61a767bfbc50ef207544a3d6eee9aa66830cc15ccb679\",\"dweb:/ipfs/QmRMCKEXNWJq1EdCjNQtTXf9tuppnyGtaiBCiNk3TYVcK1\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x6694b63ddb2c59bbe341c846171798350e8f72fa02189fcdeaca864e28b54e1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d945d33e2189ac4e531e4ed228f59ca957b3898c4f9051f4b8c7ae44d72b23a\",\"dweb:/ipfs/QmRcEwubTe3xyXxthijs5fVzEgUFSxeddjd5PGfhBnkunX\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol\":{\"keccak256\":\"0x956d6404c7b61b920a9ccbc9918f94a2bd3004de3dd13310995eda5bc17f1ead\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c12dc67a285548d455683db60f1ed845c03ac3c27f8f24f905defd3c54601406\",\"dweb:/ipfs/QmXDaxKsnq6RxH44VPSqxjLyygdXn3GR1o6W9pr2iXzjZq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol\":{\"keccak256\":\"0x21529ba6918f994ec44fb97cef2b717d730268e911a4e626f3e425a4394f7bae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10949be539eb61e5ea8996cc93f21be61949c16a1b717adc2b3f8f099c1e1feb\",\"dweb:/ipfs/QmagATozhFXBUVTLaiHWyqVPgew9N1x18V6hBF46AZPeLw\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508\",\"dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/protocol/packages/core/contracts/common/implementation/AncillaryData.sol\":{\"keccak256\":\"0x8ff33ac32d3e6de25de9e0ac2c0ff9a621f187fa97e9ee84092b327471baa3ce\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0bbaed49756e8cf7ef405e132f441cd7a735ac6186a200b0179147e7d137b74a\",\"dweb:/ipfs/QmeSBJX5a61LZPxbkUKS2NF4LSxemgDwjD65fCAmyP7PX2\"]},\"lib/protocol/packages/core/contracts/common/implementation/Lockable.sol\":{\"keccak256\":\"0x41d78fcce54598ad5f26bc0b778c0f4fedbd836401625e49e736979f69a87ef0\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://4ce111bb50441ef5125e7d42284f6debbc17fd589515d7b8cede7e9d1d5f0ede\",\"dweb:/ipfs/QmaXiXACWVEDDHoCHNXdVBoNpf8QNHkUZ1kf5MfbxfL6jj\"]},\"lib/protocol/packages/core/contracts/data-verification-mechanism/implementation/Constants.sol\":{\"keccak256\":\"0xe40957105a9240c6bcb9753fd0011fe9f382c437cd6771c57bf7a96f8ceb9c84\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://cbf0d25e841b1f5c4022d09fb29220cb428139443cb29c4ab8dbfff71dffcc05\",\"dweb:/ipfs/QmSVVr5wH1tZi6WmKyuy1K8yS6JN4DeK5kWaZpPKtXiqkK\"]},\"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/FinderInterface.sol\":{\"keccak256\":\"0x9166fbfe08e954eb86d33c114fcde7ce4fd0dda5d9d28b31210582bfc769fa86\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e611e12bcaaebfdf65b67c566ff1d34708e757f01a445bd87c55862e89383b81\",\"dweb:/ipfs/QmYNSq5oopTShdS6j4VWKqoLxmQSRKmWebCxw6K4LfmKrf\"]},\"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/IdentifierWhitelistInterface.sol\":{\"keccak256\":\"0x9ae86a30dd1a8c03fb2c6d27be570bb30c4c0b13ac63cde8620b7e4b51d88dc9\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://a71d2aff48e075ecab56a9c9767775d1d77e04ec9191fed124e71003220549e3\",\"dweb:/ipfs/QmYPWsZXro6fzqpZY6UxQ5X8znEXfLp2sun8oXzdz8bTyc\"]},\"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/OracleAncillaryInterface.sol\":{\"keccak256\":\"0xd58b41fe1e389f7871db7c04f2c05c1aac1d0455bbc521534da81fd657016a1f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://cc532e9c550bb1bba0daa33fda748590cd06ce94a9566fe65dac04e7d40977bc\",\"dweb:/ipfs/QmZKvfRW2LJFt5MWZbKuU9ujkXnS2hkPUJVj8wwJWcuZGX\"]},\"src/common/implementation/AddressLegacy.sol\":{\"keccak256\":\"0x441f6c1a04ebb7ad44e54e1b9e3a6ca9f2468358842f93ec73e392f928daf85f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c2cba7f3e831503913b6a147eec2f5fc6a2c5cdf1df11ae65582a42c5680ecd\",\"dweb:/ipfs/QmdBEXFnViR66ibJeyjKNh2xJoY8v1y3u3u1D9UXdPawFA\"]},\"src/common/implementation/AddressWhitelist.sol\":{\"keccak256\":\"0x3849b2e73172d5d5f617a447137026cf3a779cc050441ad9b70613faee837596\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://ace04f18fe4e939c2f4fde32412407b23298129d2534efc1835dc8615a9ee7ff\",\"dweb:/ipfs/QmbNGpi9uD3j9ek3HhdBFuKrnb9YYXhAfvyJxSdRMFVB3P\"]},\"src/common/implementation/LockableUpgradeable.sol\":{\"keccak256\":\"0x1a10eec9d7f12b051d343c65016a9c60a4bece53da4da2eceb8a8dc007b336e2\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9b8c203e136583fa946e4ae0e7bc9774837f865f8b319daa97c84ceb8a16c95b\",\"dweb:/ipfs/QmPJPPL27TB8qt66ZHquDCYtuubcTStRqxn4nxQnehMdA2\"]},\"src/common/interfaces/AddressWhitelistInterface.sol\":{\"keccak256\":\"0x126b2bc590041cf213c274bedc91c06a263ddff5e11a090be80d7db8b1cb0d8f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0f47e32816f895d4a3a060eded9bba7853eff6a6d99c3de5b4d1ca8359ce1c49\",\"dweb:/ipfs/QmVWt7xTr68owupHSUUJNfV2N3n2bTvTWtXCDtu8k3uVBN\"]},\"src/common/interfaces/FixedPointInterface.sol\":{\"keccak256\":\"0xceca09e6aa78c97698fa0b1f40657f6c3c723d5d94150ef6476affb9671df753\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://d5d1b01017749d96befb5c2e8a8c6d9dd041f57e1d9a66238c296cc28512d2e5\",\"dweb:/ipfs/QmVPiky59JTngjwZNdxbmD7H1Lwa5AgTjzv975wSnavFFy\"]},\"src/data-verification-mechanism/interfaces/StoreInterface.sol\":{\"keccak256\":\"0x1905509e908c6a9b8b3a89449d2d86fd7192d0e588cbe542edd21351d9971ee5\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://346e602f41469943453fbe039bf7554b23e1eba3128ff3858d32b35ebcc2ae88\",\"dweb:/ipfs/QmcjZ73TwMjondBDKEHyZ9KUjZzcxsy6Dmqs8QxPK3KBde\"]},\"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol\":{\"keccak256\":\"0x14157a690a9a3f56f7a5311cafc00a599412b1a451304b06abd4bc6e7ae1c968\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://fba453d2ef031ecb366a2cbe597a388e1344587e19f2f11f16c5287a93429313\",\"dweb:/ipfs/QmS7iPT9h261CpZUu2iNfqpLrZf983fM9k7RDqmA4tRz1k\"]},\"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol\":{\"keccak256\":\"0x33a251fab5e475a286832db9bc3aabf7f597497f07e06c2da8779d4f486336d1\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e8789e875af4c98c16a085279a5dd545fe2fe32716e66c41343ea0edaf8fad9f\",\"dweb:/ipfs/QmQTzL8h24WkcfchRfSRrCysAfSprVCF2RNc4AMQTchTyZ\"]}},\"version\":1}","userdoc":{},"devdoc":{},"storageLayout":{"storage":[{"astId":11412,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"requests","offset":0,"slot":"0","type":"t_mapping(t_bytes32,t_struct(Request)11388_storage)"},{"astId":11639,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)49_storage"},{"astId":8163,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"_notEntered","offset":0,"slot":"50","type":"t_bool"},{"astId":8243,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"__gap","offset":0,"slot":"51","type":"t_array(t_uint256)49_storage"},{"astId":9436,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"finder","offset":0,"slot":"100","type":"t_contract(FinderInterface)7719"},{"astId":9439,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"defaultLiveness","offset":0,"slot":"101","type":"t_uint256"},{"astId":11126,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)998_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568","base":"t_uint256"},"t_array(t_uint256)998_storage":{"encoding":"inplace","label":"uint256[998]","numberOfBytes":"31936","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_contract(FinderInterface)7719":{"encoding":"inplace","label":"contract FinderInterface","numberOfBytes":"20"},"t_contract(IERC20)2591":{"encoding":"inplace","label":"contract IERC20","numberOfBytes":"20"},"t_int256":{"encoding":"inplace","label":"int256","numberOfBytes":"32"},"t_mapping(t_bytes32,t_struct(Request)11388_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct OptimisticOracleV2Interface.Request)","numberOfBytes":"32","value":"t_struct(Request)11388_storage"},"t_struct(Request)11388_storage":{"encoding":"inplace","label":"struct OptimisticOracleV2Interface.Request","numberOfBytes":"352","members":[{"astId":11367,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"proposer","offset":0,"slot":"0","type":"t_address"},{"astId":11369,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"disputer","offset":0,"slot":"1","type":"t_address"},{"astId":11372,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"currency","offset":0,"slot":"2","type":"t_contract(IERC20)2591"},{"astId":11374,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"settled","offset":20,"slot":"2","type":"t_bool"},{"astId":11377,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"requestSettings","offset":0,"slot":"3","type":"t_struct(RequestSettings)11365_storage"},{"astId":11379,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"proposedPrice","offset":0,"slot":"6","type":"t_int256"},{"astId":11381,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"resolvedPrice","offset":0,"slot":"7","type":"t_int256"},{"astId":11383,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"expirationTime","offset":0,"slot":"8","type":"t_uint256"},{"astId":11385,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"reward","offset":0,"slot":"9","type":"t_uint256"},{"astId":11387,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"finalFee","offset":0,"slot":"10","type":"t_uint256"}]},"t_struct(RequestSettings)11365_storage":{"encoding":"inplace","label":"struct OptimisticOracleV2Interface.RequestSettings","numberOfBytes":"96","members":[{"astId":11352,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"eventBased","offset":0,"slot":"0","type":"t_bool"},{"astId":11354,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"refundOnDispute","offset":1,"slot":"0","type":"t_bool"},{"astId":11356,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"callbackOnPriceProposed","offset":2,"slot":"0","type":"t_bool"},{"astId":11358,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"callbackOnPriceDisputed","offset":3,"slot":"0","type":"t_bool"},{"astId":11360,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"callbackOnPriceSettled","offset":4,"slot":"0","type":"t_bool"},{"astId":11362,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"bond","offset":0,"slot":"1","type":"t_uint256"},{"astId":11364,"contract":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol:OptimisticOracleV2","label":"customLiveness","offset":0,"slot":"2","type":"t_uint256"}]},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613ee56100f95f395f818161215c0152818161218501526122c50152613ee55ff3fe608060405260043610610275575f3560e01c806391f58dcb1161014a578063ba4b930c116100be578063d547741f11610078578063d547741f14610841578063d602b9fd14610860578063f327b07514610874578063fba7f1e314610893578063fe4e1983146108b2578063ff8c1a8c146108c7575f5ffd5b8063ba4b930c1461077f578063bc58ccaa146107ab578063c371dda7146107ca578063cc8463c8146107df578063cefc1429146107f3578063cf6eefb714610807575f5ffd5b8063ad3cb1cc1161010f578063ad3cb1cc146106a7578063ad5a755a146106e4578063af5d2f3914610703578063b4988fd014610722578063b8b4f90814610741578063b9a3c84c14610760575f5ffd5b806391f58dcb1461052c5780639d8669851461054b578063a1eda53c14610648578063a217fddf146104fa578063a9904f9b1461067b575f5ffd5b80634f1ef286116101ec57806376c7823f116101a657806376c7823f1461047c5780637c82288f1461049b57806384ef8ffc146104ba5780638da5cb5b146104e65780638ffc2120146104fa57806391d148541461050d575f5ffd5b80634f1ef286146103d957806352d1902d146103ec57806353b59239146104005780635e9a79a91461041f578063634e93da1461043e578063649a5ec71461045d575f5ffd5b8063248a9ca31161023d578063248a9ca31461033757806329cb924d146103565780632f2ff15d1461036857806336568abe14610387578063473c45fe146103a65780634ccb56f5146103c5575f5ffd5b806301ffc9a714610279578063022d63fb146102ad5780630aa6220b146102d557806311df92f1146102eb578063120698af14610318575b5f5ffd5b348015610284575f5ffd5b506102986102933660046133f2565b6108de565b60405190151581526020015b60405180910390f35b3480156102b8575f5ffd5b50620697805b60405165ffffffffffff90911681526020016102a4565b3480156102e0575f5ffd5b506102e9610908565b005b3480156102f6575f5ffd5b5061030a6103053660046134ca565b61091d565b6040519081526020016102a4565b348015610323575f5ffd5b506102e961033236600461352f565b610dc1565b348015610342575f5ffd5b5061030a61035136600461357a565b610e39565b348015610361575f5ffd5b504261030a565b348015610373575f5ffd5b506102e9610382366004613591565b610e59565b348015610392575f5ffd5b506102e96103a1366004613591565b610e85565b3480156103b1575f5ffd5b506102e96103c03660046135bf565b610f47565b3480156103d0575f5ffd5b5061030a610fbc565b6102e96103e7366004613612565b610fcc565b3480156103f7575f5ffd5b5061030a610fe7565b34801561040b575f5ffd5b5061030a61041a36600461352f565b611002565b34801561042a575f5ffd5b5061030a61043936600461365e565b611066565b348015610449575f5ffd5b506102e96104583660046136bc565b611095565b348015610468575f5ffd5b506102e96104773660046136d7565b6110a8565b348015610487575f5ffd5b5061030a6104963660046136fc565b6110bb565b3480156104a6575f5ffd5b5061030a6104b536600461376c565b611423565b3480156104c5575f5ffd5b506104ce61165c565b6040516001600160a01b0390911681526020016102a4565b3480156104f1575f5ffd5b506104ce611677565b348015610505575f5ffd5b5061030a5f81565b348015610518575f5ffd5b50610298610527366004613591565b611685565b348015610537575f5ffd5b506102e961054636600461352f565b6116bb565b348015610556575f5ffd5b5061063261056536600461357a565b5f6020818152918152604090819020805460018201546002830154845160e081018652600385015460ff8082161515835261010082048116151598830198909852620100008104881615159682019690965263010000008604871615156060820152640100000000909504861615156080860152600484015460a0860152600584015460c08601526006840154600785015460088601546009870154600a909701546001600160a01b03968716999587169896851697600160a01b9095049095169594929391929091908a565b6040516102a49a99989796959493929190613834565b348015610653575f5ffd5b5061065c611737565b6040805165ffffffffffff9384168152929091166020830152016102a4565b348015610686575f5ffd5b5061069a61069536600461365e565b6117a6565b6040516102a4919061389b565b3480156106b2575f5ffd5b506106d7604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102a49190613976565b3480156106ef575f5ffd5b5061030a6106fe3660046135bf565b611953565b34801561070e575f5ffd5b506106d761071d366004613988565b6119d2565b34801561072d575f5ffd5b506102e961073c3660046139cb565b6119de565b34801561074c575f5ffd5b5061030a61075b366004613a0a565b611ad9565b34801561076b575f5ffd5b506064546104ce906001600160a01b031681565b34801561078a575f5ffd5b5061079e61079936600461365e565b611ae8565b6040516102a49190613a83565b3480156107b6575f5ffd5b506102986107c536600461365e565b611afd565b3480156107d5575f5ffd5b5061030a61200081565b3480156107ea575f5ffd5b506102be611b6b565b3480156107fe575f5ffd5b506102e9611be6565b348015610812575f5ffd5b5061081b611c25565b604080516001600160a01b03909316835265ffffffffffff9091166020830152016102a4565b34801561084c575f5ffd5b506102e961085b366004613591565b611c52565b34801561086b575f5ffd5b506102e9611c7a565b34801561087f575f5ffd5b506102e961088e366004613ab6565b611c8c565b34801561089e575f5ffd5b5061030a6108ad36600461365e565b611d32565b3480156108bd575f5ffd5b5061030a60655481565b3480156108d2575f5ffd5b5061030a600160ff1b81565b5f6001600160e01b031982166318a4c3c360e11b1480610902575061090282611d40565b92915050565b5f61091281611d74565b61091a611d7e565b50565b5f610926611d8a565b61092e611dad565b5f61093b33888888611db9565b600681111561094c5761094c613a6f565b1461096a5760405163f757fcff60e01b815260040160405180910390fd5b610972611eeb565b6001600160a01b03166390978d1b876040518263ffffffff1660e01b815260040161099f91815260200190565b602060405180830381865afa1580156109ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109de9190613b39565b6109fb576040516356175d8f60e01b815260040160405180910390fd5b610a03611f6c565b604051631d1d5b3960e11b81526001600160a01b0385811660048301529190911690633a3ab67290602401602060405180830381865afa158015610a49573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6d9190613b39565b610a8a57604051631131fa7160e11b815260040160405180910390fd5b42851115610aab576040516347860b9760e01b815260040160405180910390fd5b610ab86035612000613b68565b84511115610ad957604051630a56acd960e01b815260040160405180910390fd5b5f610ae2611fb2565b604051635b97aadd60e01b81526001600160a01b0386811660048301529190911690635b97aadd90602401602060405180830381865afa158015610b28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4c9190613b7b565b5f015190506040518061014001604052805f6001600160a01b031681526020015f6001600160a01b03168152602001856001600160a01b031681526020015f151581526020016040518060e001604052805f151581526020015f151581526020015f151581526020015f151581526020015f151581526020018481526020015f81525081526020015f81526020015f81526020015f8152602001848152602001828152505f5f610bfe338b8b8b611fea565b815260208082019290925260409081015f20835181546001600160a01b03199081166001600160a01b039283161783558585015160018401805490921690831617905584830151600283018054606080890151939094166001600160a81b031990911617600160a01b9215159290920291909117905560808086015180516003850180549783015196830151948301519383015161ffff1990981691151561ff0019169190911761010096151587021763ffff00001916620100009415159490940263ff0000001916939093176301000000921515929092029190911764ff0000000019166401000000009515159590950294909417905560a080840151600483015560c0938401516005830155840151600682015591830151600783015560e08301516008830155820151600982015561012090910151600a909101558215610d5757610d576001600160a01b038516333086612022565b336001600160a01b03167ff1679315ff325c257a944e0ca1bfe7b26616039e9511f9610d4ba3eca851027b888888888887604051610d9a96959493929190613bbc565b60405180910390a2610dad816002613c01565b915050610db8612089565b95945050505050565b610dc9611d8a565b610dd1611dad565b6001610ddf33858585611db9565b6006811115610df057610df0613a6f565b14610e0e57604051633a4e124d60e11b815260040160405180910390fd5b5f610e1b33858585612098565b600301805461ffff191661010117905550610e34612089565b505050565b5f9081525f516020613e705f395f51905f52602052604090206001015490565b81610e7757604051631fe1e13d60e11b815260040160405180910390fd5b610e8182826120be565b5050565b5f516020613e505f395f51905f5282158015610eb95750610ea461165c565b6001600160a01b0316826001600160a01b0316145b15610f3d575f5f610ec8611c25565b90925090506001600160a01b038216151580610eea575065ffffffffffff8116155b80610efd57504265ffffffffffff821610155b15610f2a576040516319ca5ebb60e01b815265ffffffffffff821660048201526024015b60405180910390fd5b5050805465ffffffffffff60a01b191681555b610e3483836120da565b610f4f611d8a565b610f57611dad565b6001610f6533868686611db9565b6006811115610f7657610f76613a6f565b14610f9457604051633a4e124d60e11b815260040160405180910390fd5b610f9d8161210d565b80610faa33868686612098565b60050155610fb6612089565b50505050565b610fc96035612000613b68565b81565b610fd4612151565b610fdd826121f5565b610e8182826121fe565b5f610ff06122ba565b505f516020613e305f395f51905f5290565b5f61100b611d8a565b611013611dad565b600661102133868686611db9565b600681111561103257611032613a6f565b146110455761104333858585612303565b505b61105133858585612098565b60070154905061105f612089565b9392505050565b5f61106f611d8a565b611077611dad565b61108385858585612303565b905061108d612089565b949350505050565b5f61109f81611d74565b610e81826125fc565b5f6110b281611d74565b610e818261266e565b5f6110c4611d8a565b6110cc611dad565b6001600160a01b0386166110f35760405163bef5ceeb60e01b815260040160405180910390fd5b600261110186868686611db9565b600681111561111257611112613a6f565b1461113057604051631bc1990760e31b815260040160405180910390fd5b5f61113d86868686612098565b6001810180546001600160a01b0319166001600160a01b038a16179055600a8101546004820154919250906111728282613c18565b93508315611194576002830154611194906001600160a01b0316333087612022565b5f61119d611fb2565b90505f6111a9856126dd565b6111b39085613c18565b9050801561124b5760028501546111d4906001600160a01b031683836126f0565b6111dc611fb2565b600286015460408051602081018252848152905163432ce91960e11b81526001600160a01b03928316600482015290516024820152911690638659d232906044015f604051808303815f87803b158015611234575f5ffd5b505af1158015611246573d5f5f3e3d5ffd5b505050505b611253612777565b6001600160a01b031663216666a48a61126c888c6127b0565b6112768b8f6127fb565b6040518463ffffffff1660e01b815260040161129493929190613c2b565b5f604051808303815f87803b1580156112ab575f5ffd5b505af11580156112bd573d5f5f3e3d5ffd5b50505060098601545f9150158015906112df57506003860154610100900460ff165b1561130857506009850180545f9091556002860154611308906001600160a01b03168c8361282b565b8b6001600160a01b0316865f015f9054906101000a90046001600160a01b03166001600160a01b03168c6001600160a01b03167f5165909c3d1c01c5d1e121ac6f6d01dda1ba24bc9e1f975b5a375339c15be7f38d8d8d8c600601546040516113749493929190613c49565b60405180910390a4611384612089565b6001600160a01b038b163b151580156113a8575060038601546301000000900460ff165b1561140d576040516306c791b960e11b81526001600160a01b038c1690630d8f2372906113df908d908d908d908790600401613c49565b5f604051808303815f87803b1580156113f6575f5ffd5b505af1158015611408573d5f5f3e3d5ffd5b505050505b611415611dad565b505050505050610db8612089565b5f61142c611d8a565b611434611dad565b6001600160a01b03871661145b5760405163062a0f5b60e21b815260040160405180910390fd5b600161146987878787611db9565b600681111561147a5761147a613a6f565b1461149857604051633a4e124d60e11b815260040160405180910390fd5b5f6114a587878787612098565b600381015490915060ff16156114d957600160ff1b83036114d95760405163cad802eb60e01b815260040160405180910390fd5b80546001600160a01b0319166001600160a01b0389161781556006810183905560058101545f0361150c57606554611512565b60058101545b61151c9042613c18565b6008820155600a81015460048201546115359190613c18565b91508115611557576002810154611557906001600160a01b0316333085612022565b600881015460028201546040516001600160a01b038b8116938b8216937f6e51dd00371aabffa82cd401592f76ed51e98a9ea4b58751c70463a2c78b5ca1936115ab938d938d938d938d9390911690613c78565b60405180910390a36115bb612089565b6001600160a01b0387163b151580156115de5750600381015462010000900460ff165b1561164157604051639c2fd1df60e01b81526001600160a01b03881690639c2fd1df9061161390899089908990600401613c2b565b5f604051808303815f87803b15801561162a575f5ffd5b505af115801561163c573d5f5f3e3d5ffd5b505050505b611649611dad565b50611652612089565b9695505050505050565b5f516020613e905f395f51905f52546001600160a01b031690565b5f61168061165c565b905090565b5f9182525f516020613e705f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6116c3611d8a565b6116cb611dad565b60016116d933858585611db9565b60068111156116ea576116ea613a6f565b1461170857604051633a4e124d60e11b815260040160405180910390fd5b600161171633858585612098565b60030180549115156101000261ff0019909216919091179055610e34612089565b5f516020613e905f395f51905f52545f90600160d01b900465ffffffffffff165f516020613e505f395f51905f52811580159061177c57504265ffffffffffff831610155b611787575f5f61179d565b6001810154600160a01b900465ffffffffffff16825b92509250509091565b61182c60408051610140810182525f80825260208083018290528284018290526060808401839052845160e081018652838152918201839052938101829052928301819052608083810182905260a0840182905260c084019190915290919082019081526020015f81526020015f81526020015f81526020015f81526020015f81525090565b611834611d8a565b61184085858585612098565b604080516101408101825282546001600160a01b0390811682526001840154811660208084019190915260028501549182168385015260ff600160a01b90920482161515606080850191909152845160e08082018752600388015480861615158352610100808204871615159584019590955262010000810486161515978301979097526301000000870485161515928201929092526401000000009095049092161515608085810191909152600486015460a080870191909152600587015460c08088019190915291850195909552600686015494840194909452600785015493830193909352600884015490820152600983015491810191909152600a909101546101208201529050949350505050565b5f61195c611d8a565b611964611dad565b600161197233878787611db9565b600681111561198357611983613a6f565b146119a157604051633a4e124d60e11b815260040160405180910390fd5b5f6119ae33878787612098565b60048101849055600a8101549091506119c79084613c18565b91505061108d612089565b606061105f83836127fb565b5f6119e761285c565b805490915060ff600160401b82041615906001600160401b03165f81158015611a0d5750825b90505f826001600160401b03166001148015611a285750303b155b905081158015611a36575080155b15611a545760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611a7e57845460ff60401b1916600160401b1785555b611a89888888612884565b8315611acf57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b5f611652338787878787611423565b5f611af1611d8a565b610db885858585611db9565b5f611b06611d8a565b5f611b1386868686611db9565b90506006816006811115611b2957611b29613a6f565b1480611b4657506005816006811115611b4457611b44613a6f565b145b8061165257506003816006811115611b6057611b60613a6f565b149695505050505050565b5f516020613e905f395f51905f52545f905f516020613e505f395f51905f5290600160d01b900465ffffffffffff168015801590611bb057504265ffffffffffff8216105b611bca578154600160d01b900465ffffffffffff16611bdf565b6001820154600160a01b900465ffffffffffff165b9250505090565b5f611bef611c25565b509050336001600160a01b03821614611c1d57604051636116401160e11b8152336004820152602401610f21565b61091a6128b3565b5f516020613e505f395f51905f52546001600160a01b03811691600160a01b90910465ffffffffffff1690565b81611c7057604051631fe1e13d60e11b815260040160405180910390fd5b610e81828261294c565b5f611c8481611d74565b61091a612968565b611c94611d8a565b611c9c611dad565b6001611caa33888888611db9565b6006811115611cbb57611cbb613a6f565b14611cd957604051633a4e124d60e11b815260040160405180910390fd5b5f611ce633888888612098565b600301805463ffff00001916620100008615150263ff0000001916176301000000851515021764ff0000000019166401000000008415150217905550611d2a612089565b505050505050565b5f610db833868686866110bb565b5f6001600160e01b03198216637965db0b60e01b148061090257506301ffc9a760e01b6001600160e01b0319831614610902565b61091a8133612972565b611d885f5f6129ab565b565b60325460ff16611d8857604051633ee5aeb560e01b815260040160405180910390fd5b6032805460ff19169055565b5f5f611dc786868686612098565b60028101549091506001600160a01b0316611de5575f91505061108d565b80546001600160a01b0316611dfe57600191505061108d565b6002810154600160a01b900460ff1615611e1c57600691505061108d565b60018101546001600160a01b0316611e4c574281600801541115611e41576002611e44565b60035b91505061108d565b611e54612777565b6001600160a01b031663b551cd5086611e6d84886127b0565b611e77878b6127fb565b6040518463ffffffff1660e01b8152600401611e9593929190613c2b565b602060405180830381865afa158015611eb0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ed49190613b39565b611edf576004611652565b50600595945050505050565b6064546040516302abf57960e61b8152721259195b9d1a599a595c95da1a5d195b1a5cdd606a1b60048201525f916001600160a01b03169063aafd5e40906024015b602060405180830381865afa158015611f48573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116809190613cbd565b6064546040516302abf57960e61b81527210dbdb1b185d195c985b15da1a5d195b1a5cdd606a1b60048201525f916001600160a01b03169063aafd5e4090602401611f2d565b6064546040516302abf57960e61b81526453746f726560d81b60048201525f916001600160a01b03169063aafd5e4090602401611f2d565b5f848484846040516020016120029493929190613cef565b604051602081830303815290604052805190602001209050949350505050565b6040516001600160a01b038481166024830152838116604483015260648201839052610fb69186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612a83565b6032805460ff19166001179055565b5f5f5f6120a787878787611fea565b81526020019081526020015f209050949350505050565b6120c782610e39565b6120d081611d74565b610fb68383612aef565b6001600160a01b03811633146121035760405163334bd91960e11b815260040160405180910390fd5b610e348282612b5b565b63bb74480081106121315760405163cb40339f60e01b815260040160405180910390fd5b5f811161091a5760405163fa050ec160e01b815260040160405180910390fd5b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806121d757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166121cb5f516020613e305f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15611d885760405163703e46dd60e11b815260040160405180910390fd5b61091a5f611d74565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612258575060408051601f3d908101601f1916820190925261225591810190613d1e565b60015b61228057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610f21565b5f516020613e305f395f51905f5281146122b057604051632a87526960e21b815260048101829052602401610f21565b610e348383612bb2565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d885760405163703e46dd60e11b815260040160405180910390fd5b5f5f61231186868686611db9565b90505f61232087878787612098565b60028101805460ff60a01b1916600160a01b1790559050600382600681111561234b5761234b613a6f565b036123a357600681015460078201556009810154600a82015460048301546123739190613c18565b61237d9190613c18565b8154600283015491945061239e916001600160a01b0390811691168561282b565b6124f8565b60058260068111156123b7576123b7613a6f565b036124df576123c4612777565b6001600160a01b031663719c6d56876123dd84896127b0565b6123e7888c6127fb565b6040518463ffffffff1660e01b815260040161240593929190613c2b565b602060405180830381865afa158015612420573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124449190613d1e565b6007820181905560068201546004830154911415905f612463846126dd565b61246d9083613b68565b9050836009015484600a015482846124859190613c18565b61248f9190613c18565b6124999190613c18565b95506124d7836124b35784546001600160a01b03166124c2565b60018501546001600160a01b03165b60028601546001600160a01b0316908861282b565b5050506124f8565b604051639c71cb8360e01b815260040160405180910390fd5b6001810154815460078301546040516001600160a01b0393841693928316928b16917f3f384afb4bd9f0aef0298c80399950011420eb33b0e1a750b20966270247b9a09161254d918c918c918c918c90613d35565b60405180910390a461255d612089565b6001600160a01b0387163b1515801561258257506003810154640100000000900460ff165b156125ea5760078101546040516304cc1fd560e01b81526001600160a01b038916916304cc1fd5916125bc918a918a918a91600401613c49565b5f604051808303815f87803b1580156125d3575f5ffd5b505af11580156125e5573d5f5f3e3d5ffd5b505050505b6125f2611dad565b5050949350505050565b5f612605611b6b565b61260e42612c07565b6126189190613d67565b90506126248282612c3d565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b5f61267882612cc7565b61268142612c07565b61268b9190613d67565b905061269782826129ab565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b60048101545f9061090290600290613d99565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801561273d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127619190613d1e565b9050610fb684846127728585613c18565b612d0e565b6064546040516302abf57960e61b8152654f7261636c6560d01b60048201525f916001600160a01b03169063aafd5e4090602401611f2d565b60038201545f9060ff16156127f45760058301545f9081036127d4576065546127da565b60058401545b90508084600801546127ec9190613b68565b915050610902565b5080610902565b606061105f836040518060400160405280600b81526020016a37b7a932b8bab2b9ba32b960a91b81525084612d9d565b6040516001600160a01b03838116602483015260448201839052610e3491859182169063a9059cbb90606401612057565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610902565b61288c612de2565b612894612e07565b6128a16203f48082612e0f565b6128a9612e21565b610e348383612e29565b5f516020613e505f395f51905f525f806128cb611c25565b915091506128e08165ffffffffffff16151590565b15806128f457504265ffffffffffff821610155b1561291c576040516319ca5ebb60e01b815265ffffffffffff82166004820152602401610f21565b61292d5f61292861165c565b612b5b565b506129385f83612aef565b505081546001600160d01b03191690915550565b61295582610e39565b61295e81611d74565b610fb68383612b5b565b611d885f5f612c3d565b61297c8282611685565b610e815760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610f21565b5f516020613e905f395f51905f52545f516020613e505f395f51905f5290600160d01b900465ffffffffffff168015612a45574265ffffffffffff82161015612a1c57600182015482546001600160d01b0316600160a01b90910465ffffffffffff16600160d01b02178255612a45565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5905f90a15b5060010180546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b5f5f60205f8451602086015f885af180612aa2576040513d5f823e3d81fd5b50505f513d91508115612ab9578060011415612ac6565b6001600160a01b0384163b155b15610fb657604051635274afe760e01b81526001600160a01b0385166004820152602401610f21565b5f5f516020613e505f395f51905f5283612b51575f612b0c61165c565b6001600160a01b031614612b3357604051631fe1e13d60e11b815260040160405180910390fd5b6001810180546001600160a01b0319166001600160a01b0385161790555b61108d8484612e5b565b5f5f516020613e505f395f51905f5283158015612b905750612b7b61165c565b6001600160a01b0316836001600160a01b0316145b15612ba8576001810180546001600160a01b03191690555b61108d8484612efc565b612bbb82612f75565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612bff57610e348282612fd8565b610e81613041565b5f65ffffffffffff821115612c39576040516306dfcc6560e41b81526030600482015260248101839052604401610f21565b5090565b5f516020613e505f395f51905f525f612c54611c25565b835465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b038816171784559150612c9490508165ffffffffffff16151590565b15610fb6576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109905f90a150505050565b5f5f612cd1611b6b565b90508065ffffffffffff168365ffffffffffff1611612cf957612cf48382613db8565b61105f565b61105f65ffffffffffff841662069780613060565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612d5f848261306f565b610fb6576040516001600160a01b0384811660248301525f6044830152612d9391869182169063095ea7b390606401612057565b610fb68482612a83565b60605f612daa85856130b4565b90508481612db7856130f6565b604051602001612dc993929190613dd6565b6040516020818303038152906040529150509392505050565b612dea613163565b611d8857604051631afcd79f60e31b815260040160405180910390fd5b611d88612de2565b612e17612de2565b610e81828261317c565b612089612de2565b612e31612de2565b606480546001600160a01b0319166001600160a01b038316179055612e558261210d565b50606555565b5f5f516020613e705f395f51905f52612e748484611685565b612ef3575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055612ea93390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610902565b5f915050610902565b5f5f516020613e705f395f51905f52612f158484611685565b15612ef3575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610902565b806001600160a01b03163b5f03612faa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610f21565b5f516020613e305f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612ff49190613df3565b5f60405180830381855af49150503d805f811461302c576040519150601f19603f3d011682016040523d82523d5f602084013e613031565b606091505b5091509150610db88583836131e2565b3415611d885760405163b398979f60e01b815260040160405180910390fd5b5f82821882841002821861105f565b5f5f5f5f60205f8651602088015f8a5af192503d91505f519050828015611652575081156130a05780600114611652565b50505050506001600160a01b03163b151590565b8151606090156130e557816040516020016130cf9190613dfe565b6040516020818303038152906040529050610902565b816040516020016130cf9190613e24565b606061310e6001600160801b03602084901c16613239565b6131298360601b6bffffffffffffffffffffffff1916613239565b60405160200161314d9291909182526001600160c01b031916602082015260280190565b6040516020818303038152906040529050919050565b5f61316c61285c565b54600160401b900460ff16919050565b613184612de2565b5f516020613e505f395f51905f526001600160a01b0382166131bb57604051636116401160e11b81525f6004820152602401610f21565b80546001600160d01b0316600160d01b65ffffffffffff851602178155610fb65f83612aef565b6060826131f257612cf4826133ca565b815115801561320957506001600160a01b0384163b155b1561323257604051639996b31560e01b81526001600160a01b0385166004820152602401610f21565b508061105f565b5f5f825f1c9050806001600160801b0316905080600160401b02811777ffffffffffffffff0000000000000000ffffffffffffffff169050806401000000000281177bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16905080620100000281177dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff169050806101000281177eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1690508060100281177f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f1690505f6008827f0808080808080808080808080808080808080808080808080808080808080808168161334c5761334c613d85565b0460047f040404040404040404040404040404040404040404040404040404040404040484160460027f020202020202020202020202020202020202020202020202020202020202020285160417166027029091017f3030303030303030303030303030303030303030303030303030303030303030019392505050565b8051156133d957805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f60208284031215613402575f5ffd5b81356001600160e01b03198116811461105f575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261343c575f5ffd5b81356001600160401b0381111561345557613455613419565b604051601f8201601f19908116603f011681016001600160401b038111828210171561348357613483613419565b60405281815283820160200185101561349a575f5ffd5b816020850160208301375f918101602001919091529392505050565b6001600160a01b038116811461091a575f5ffd5b5f5f5f5f5f60a086880312156134de575f5ffd5b853594506020860135935060408601356001600160401b03811115613501575f5ffd5b61350d8882890161342d565b935050606086013561351e816134b6565b949793965091946080013592915050565b5f5f5f60608486031215613541575f5ffd5b833592506020840135915060408401356001600160401b03811115613564575f5ffd5b6135708682870161342d565b9150509250925092565b5f6020828403121561358a575f5ffd5b5035919050565b5f5f604083850312156135a2575f5ffd5b8235915060208301356135b4816134b6565b809150509250929050565b5f5f5f5f608085870312156135d2575f5ffd5b843593506020850135925060408501356001600160401b038111156135f5575f5ffd5b6136018782880161342d565b949793965093946060013593505050565b5f5f60408385031215613623575f5ffd5b823561362e816134b6565b915060208301356001600160401b03811115613648575f5ffd5b6136548582860161342d565b9150509250929050565b5f5f5f5f60808587031215613671575f5ffd5b843561367c816134b6565b9350602085013592506040850135915060608501356001600160401b038111156136a4575f5ffd5b6136b08782880161342d565b91505092959194509250565b5f602082840312156136cc575f5ffd5b813561105f816134b6565b5f602082840312156136e7575f5ffd5b813565ffffffffffff8116811461105f575f5ffd5b5f5f5f5f5f60a08688031215613710575f5ffd5b853561371b816134b6565b9450602086013561372b816134b6565b9350604086013592506060860135915060808601356001600160401b03811115613753575f5ffd5b61375f8882890161342d565b9150509295509295909350565b5f5f5f5f5f5f60c08789031215613781575f5ffd5b863561378c816134b6565b9550602087013561379c816134b6565b9450604087013593506060870135925060808701356001600160401b038111156137c4575f5ffd5b6137d089828a0161342d565b9699959850939692959460a09093013593505050565b80511515825260208101511515602083015260408101511515604083015260608101511515606083015260808101511515608083015260a081015160a083015260c081015160c08301525050565b6001600160a01b038b811682528a81166020830152891660408201528715156060820152610200810161386a60808301896137e6565b6101608201969096526101808101949094526101a08401929092526101c08301526101e09091015295945050505050565b81516001600160a01b03168152610200810160208301516138c760208401826001600160a01b03169052565b5060408301516138e260408401826001600160a01b03169052565b5060608301516138f6606084018215159052565b50608083015161390960808401826137e6565b5060a083015161016083015260c083015161018083015260e08301516101a08301526101008301516101c0830152610120909201516101e09091015290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61105f6020830184613948565b5f5f60408385031215613999575f5ffd5b82356001600160401b038111156139ae575f5ffd5b6139ba8582860161342d565b92505060208301356135b4816134b6565b5f5f5f606084860312156139dd575f5ffd5b8335925060208401356139ef816134b6565b915060408401356139ff816134b6565b809150509250925092565b5f5f5f5f5f60a08688031215613a1e575f5ffd5b8535613a29816134b6565b9450602086013593506040860135925060608601356001600160401b03811115613a51575f5ffd5b613a5d8882890161342d565b95989497509295608001359392505050565b634e487b7160e01b5f52602160045260245ffd5b6020810160078310613aa357634e487b7160e01b5f52602160045260245ffd5b91905290565b801515811461091a575f5ffd5b5f5f5f5f5f5f60c08789031215613acb575f5ffd5b863595506020870135945060408701356001600160401b03811115613aee575f5ffd5b613afa89828a0161342d565b9450506060870135613b0b81613aa9565b92506080870135613b1b81613aa9565b915060a0870135613b2b81613aa9565b809150509295509295509295565b5f60208284031215613b49575f5ffd5b815161105f81613aa9565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561090257610902613b54565b5f6020828403128015613b8c575f5ffd5b50604051602081016001600160401b0381118282101715613baf57613baf613419565b6040529151825250919050565b86815285602082015260c060408201525f613bda60c0830187613948565b6001600160a01b0395909516606083015250608081019290925260a0909101529392505050565b808202811582820484141761090257610902613b54565b8082018082111561090257610902613b54565b838152826020820152606060408201525f610db86060830184613948565b848152836020820152608060408201525f613c676080830185613948565b905082606083015295945050505050565b86815285602082015260c060408201525f613c9660c0830187613948565b60608301959095525060808101929092526001600160a01b031660a0909101529392505050565b5f60208284031215613ccd575f5ffd5b815161105f816134b6565b5f81518060208401855e5f93019283525090919050565b6bffffffffffffffffffffffff198560601b1681528360148201528260348201525f6116526054830184613cd8565b5f60208284031215613d2e575f5ffd5b5051919050565b85815284602082015260a060408201525f613d5360a0830186613948565b606083019490945250608001529392505050565b65ffffffffffff818116838216019081111561090257610902613b54565b634e487b7160e01b5f52601260045260245ffd5b5f82613db357634e487b7160e01b5f52601260045260245ffd5b500490565b65ffffffffffff828116828216039081111561090257610902613b54565b5f610db8613ded613de78488613cd8565b86613cd8565b84613cd8565b5f61105f8284613cd8565b600b60fa1b81525f613e136001830184613cd8565b601d60f91b81526001019392505050565b5f613e138284613cd856fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbceef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800eef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401a26469706673582212207304c87cfaad9ea28e8837efe0f15ebf1a6da06e5a665d07ad032b100ff494b064736f6c634300081e0033","sourceMap":"3715:31368:44:-:0;;;1171:4:3;1128:48;;4614:53:44;;;;;;;;;-1:-1:-1;4638:22:44;:20;:22::i;:::-;3715:31368;;7709:422:2;3147:66;7898:15;;;;;;;7894:76;;;7936:23;;-1:-1:-1;;;7936:23:2;;;;;;;;;;;7894:76;7983:14;;-1:-1:-1;;;;;7983:14:2;;;:34;7979:146;;8033:33;;-1:-1:-1;;;;;;8033:33:2;-1:-1:-1;;;;;8033:33:2;;;;;8085:29;;158:50:47;;;8085:29:2;;146:2:47;131:18;8085:29:2;;;;;;;7979:146;7758:373;7709:422::o;14:200:47:-;3715:31368:44;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"608060405260043610610275575f3560e01c806391f58dcb1161014a578063ba4b930c116100be578063d547741f11610078578063d547741f14610841578063d602b9fd14610860578063f327b07514610874578063fba7f1e314610893578063fe4e1983146108b2578063ff8c1a8c146108c7575f5ffd5b8063ba4b930c1461077f578063bc58ccaa146107ab578063c371dda7146107ca578063cc8463c8146107df578063cefc1429146107f3578063cf6eefb714610807575f5ffd5b8063ad3cb1cc1161010f578063ad3cb1cc146106a7578063ad5a755a146106e4578063af5d2f3914610703578063b4988fd014610722578063b8b4f90814610741578063b9a3c84c14610760575f5ffd5b806391f58dcb1461052c5780639d8669851461054b578063a1eda53c14610648578063a217fddf146104fa578063a9904f9b1461067b575f5ffd5b80634f1ef286116101ec57806376c7823f116101a657806376c7823f1461047c5780637c82288f1461049b57806384ef8ffc146104ba5780638da5cb5b146104e65780638ffc2120146104fa57806391d148541461050d575f5ffd5b80634f1ef286146103d957806352d1902d146103ec57806353b59239146104005780635e9a79a91461041f578063634e93da1461043e578063649a5ec71461045d575f5ffd5b8063248a9ca31161023d578063248a9ca31461033757806329cb924d146103565780632f2ff15d1461036857806336568abe14610387578063473c45fe146103a65780634ccb56f5146103c5575f5ffd5b806301ffc9a714610279578063022d63fb146102ad5780630aa6220b146102d557806311df92f1146102eb578063120698af14610318575b5f5ffd5b348015610284575f5ffd5b506102986102933660046133f2565b6108de565b60405190151581526020015b60405180910390f35b3480156102b8575f5ffd5b50620697805b60405165ffffffffffff90911681526020016102a4565b3480156102e0575f5ffd5b506102e9610908565b005b3480156102f6575f5ffd5b5061030a6103053660046134ca565b61091d565b6040519081526020016102a4565b348015610323575f5ffd5b506102e961033236600461352f565b610dc1565b348015610342575f5ffd5b5061030a61035136600461357a565b610e39565b348015610361575f5ffd5b504261030a565b348015610373575f5ffd5b506102e9610382366004613591565b610e59565b348015610392575f5ffd5b506102e96103a1366004613591565b610e85565b3480156103b1575f5ffd5b506102e96103c03660046135bf565b610f47565b3480156103d0575f5ffd5b5061030a610fbc565b6102e96103e7366004613612565b610fcc565b3480156103f7575f5ffd5b5061030a610fe7565b34801561040b575f5ffd5b5061030a61041a36600461352f565b611002565b34801561042a575f5ffd5b5061030a61043936600461365e565b611066565b348015610449575f5ffd5b506102e96104583660046136bc565b611095565b348015610468575f5ffd5b506102e96104773660046136d7565b6110a8565b348015610487575f5ffd5b5061030a6104963660046136fc565b6110bb565b3480156104a6575f5ffd5b5061030a6104b536600461376c565b611423565b3480156104c5575f5ffd5b506104ce61165c565b6040516001600160a01b0390911681526020016102a4565b3480156104f1575f5ffd5b506104ce611677565b348015610505575f5ffd5b5061030a5f81565b348015610518575f5ffd5b50610298610527366004613591565b611685565b348015610537575f5ffd5b506102e961054636600461352f565b6116bb565b348015610556575f5ffd5b5061063261056536600461357a565b5f6020818152918152604090819020805460018201546002830154845160e081018652600385015460ff8082161515835261010082048116151598830198909852620100008104881615159682019690965263010000008604871615156060820152640100000000909504861615156080860152600484015460a0860152600584015460c08601526006840154600785015460088601546009870154600a909701546001600160a01b03968716999587169896851697600160a01b9095049095169594929391929091908a565b6040516102a49a99989796959493929190613834565b348015610653575f5ffd5b5061065c611737565b6040805165ffffffffffff9384168152929091166020830152016102a4565b348015610686575f5ffd5b5061069a61069536600461365e565b6117a6565b6040516102a4919061389b565b3480156106b2575f5ffd5b506106d7604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102a49190613976565b3480156106ef575f5ffd5b5061030a6106fe3660046135bf565b611953565b34801561070e575f5ffd5b506106d761071d366004613988565b6119d2565b34801561072d575f5ffd5b506102e961073c3660046139cb565b6119de565b34801561074c575f5ffd5b5061030a61075b366004613a0a565b611ad9565b34801561076b575f5ffd5b506064546104ce906001600160a01b031681565b34801561078a575f5ffd5b5061079e61079936600461365e565b611ae8565b6040516102a49190613a83565b3480156107b6575f5ffd5b506102986107c536600461365e565b611afd565b3480156107d5575f5ffd5b5061030a61200081565b3480156107ea575f5ffd5b506102be611b6b565b3480156107fe575f5ffd5b506102e9611be6565b348015610812575f5ffd5b5061081b611c25565b604080516001600160a01b03909316835265ffffffffffff9091166020830152016102a4565b34801561084c575f5ffd5b506102e961085b366004613591565b611c52565b34801561086b575f5ffd5b506102e9611c7a565b34801561087f575f5ffd5b506102e961088e366004613ab6565b611c8c565b34801561089e575f5ffd5b5061030a6108ad36600461365e565b611d32565b3480156108bd575f5ffd5b5061030a60655481565b3480156108d2575f5ffd5b5061030a600160ff1b81565b5f6001600160e01b031982166318a4c3c360e11b1480610902575061090282611d40565b92915050565b5f61091281611d74565b61091a611d7e565b50565b5f610926611d8a565b61092e611dad565b5f61093b33888888611db9565b600681111561094c5761094c613a6f565b1461096a5760405163f757fcff60e01b815260040160405180910390fd5b610972611eeb565b6001600160a01b03166390978d1b876040518263ffffffff1660e01b815260040161099f91815260200190565b602060405180830381865afa1580156109ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109de9190613b39565b6109fb576040516356175d8f60e01b815260040160405180910390fd5b610a03611f6c565b604051631d1d5b3960e11b81526001600160a01b0385811660048301529190911690633a3ab67290602401602060405180830381865afa158015610a49573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6d9190613b39565b610a8a57604051631131fa7160e11b815260040160405180910390fd5b42851115610aab576040516347860b9760e01b815260040160405180910390fd5b610ab86035612000613b68565b84511115610ad957604051630a56acd960e01b815260040160405180910390fd5b5f610ae2611fb2565b604051635b97aadd60e01b81526001600160a01b0386811660048301529190911690635b97aadd90602401602060405180830381865afa158015610b28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4c9190613b7b565b5f015190506040518061014001604052805f6001600160a01b031681526020015f6001600160a01b03168152602001856001600160a01b031681526020015f151581526020016040518060e001604052805f151581526020015f151581526020015f151581526020015f151581526020015f151581526020018481526020015f81525081526020015f81526020015f81526020015f8152602001848152602001828152505f5f610bfe338b8b8b611fea565b815260208082019290925260409081015f20835181546001600160a01b03199081166001600160a01b039283161783558585015160018401805490921690831617905584830151600283018054606080890151939094166001600160a81b031990911617600160a01b9215159290920291909117905560808086015180516003850180549783015196830151948301519383015161ffff1990981691151561ff0019169190911761010096151587021763ffff00001916620100009415159490940263ff0000001916939093176301000000921515929092029190911764ff0000000019166401000000009515159590950294909417905560a080840151600483015560c0938401516005830155840151600682015591830151600783015560e08301516008830155820151600982015561012090910151600a909101558215610d5757610d576001600160a01b038516333086612022565b336001600160a01b03167ff1679315ff325c257a944e0ca1bfe7b26616039e9511f9610d4ba3eca851027b888888888887604051610d9a96959493929190613bbc565b60405180910390a2610dad816002613c01565b915050610db8612089565b95945050505050565b610dc9611d8a565b610dd1611dad565b6001610ddf33858585611db9565b6006811115610df057610df0613a6f565b14610e0e57604051633a4e124d60e11b815260040160405180910390fd5b5f610e1b33858585612098565b600301805461ffff191661010117905550610e34612089565b505050565b5f9081525f516020613e705f395f51905f52602052604090206001015490565b81610e7757604051631fe1e13d60e11b815260040160405180910390fd5b610e8182826120be565b5050565b5f516020613e505f395f51905f5282158015610eb95750610ea461165c565b6001600160a01b0316826001600160a01b0316145b15610f3d575f5f610ec8611c25565b90925090506001600160a01b038216151580610eea575065ffffffffffff8116155b80610efd57504265ffffffffffff821610155b15610f2a576040516319ca5ebb60e01b815265ffffffffffff821660048201526024015b60405180910390fd5b5050805465ffffffffffff60a01b191681555b610e3483836120da565b610f4f611d8a565b610f57611dad565b6001610f6533868686611db9565b6006811115610f7657610f76613a6f565b14610f9457604051633a4e124d60e11b815260040160405180910390fd5b610f9d8161210d565b80610faa33868686612098565b60050155610fb6612089565b50505050565b610fc96035612000613b68565b81565b610fd4612151565b610fdd826121f5565b610e8182826121fe565b5f610ff06122ba565b505f516020613e305f395f51905f5290565b5f61100b611d8a565b611013611dad565b600661102133868686611db9565b600681111561103257611032613a6f565b146110455761104333858585612303565b505b61105133858585612098565b60070154905061105f612089565b9392505050565b5f61106f611d8a565b611077611dad565b61108385858585612303565b905061108d612089565b949350505050565b5f61109f81611d74565b610e81826125fc565b5f6110b281611d74565b610e818261266e565b5f6110c4611d8a565b6110cc611dad565b6001600160a01b0386166110f35760405163bef5ceeb60e01b815260040160405180910390fd5b600261110186868686611db9565b600681111561111257611112613a6f565b1461113057604051631bc1990760e31b815260040160405180910390fd5b5f61113d86868686612098565b6001810180546001600160a01b0319166001600160a01b038a16179055600a8101546004820154919250906111728282613c18565b93508315611194576002830154611194906001600160a01b0316333087612022565b5f61119d611fb2565b90505f6111a9856126dd565b6111b39085613c18565b9050801561124b5760028501546111d4906001600160a01b031683836126f0565b6111dc611fb2565b600286015460408051602081018252848152905163432ce91960e11b81526001600160a01b03928316600482015290516024820152911690638659d232906044015f604051808303815f87803b158015611234575f5ffd5b505af1158015611246573d5f5f3e3d5ffd5b505050505b611253612777565b6001600160a01b031663216666a48a61126c888c6127b0565b6112768b8f6127fb565b6040518463ffffffff1660e01b815260040161129493929190613c2b565b5f604051808303815f87803b1580156112ab575f5ffd5b505af11580156112bd573d5f5f3e3d5ffd5b50505060098601545f9150158015906112df57506003860154610100900460ff165b1561130857506009850180545f9091556002860154611308906001600160a01b03168c8361282b565b8b6001600160a01b0316865f015f9054906101000a90046001600160a01b03166001600160a01b03168c6001600160a01b03167f5165909c3d1c01c5d1e121ac6f6d01dda1ba24bc9e1f975b5a375339c15be7f38d8d8d8c600601546040516113749493929190613c49565b60405180910390a4611384612089565b6001600160a01b038b163b151580156113a8575060038601546301000000900460ff165b1561140d576040516306c791b960e11b81526001600160a01b038c1690630d8f2372906113df908d908d908d908790600401613c49565b5f604051808303815f87803b1580156113f6575f5ffd5b505af1158015611408573d5f5f3e3d5ffd5b505050505b611415611dad565b505050505050610db8612089565b5f61142c611d8a565b611434611dad565b6001600160a01b03871661145b5760405163062a0f5b60e21b815260040160405180910390fd5b600161146987878787611db9565b600681111561147a5761147a613a6f565b1461149857604051633a4e124d60e11b815260040160405180910390fd5b5f6114a587878787612098565b600381015490915060ff16156114d957600160ff1b83036114d95760405163cad802eb60e01b815260040160405180910390fd5b80546001600160a01b0319166001600160a01b0389161781556006810183905560058101545f0361150c57606554611512565b60058101545b61151c9042613c18565b6008820155600a81015460048201546115359190613c18565b91508115611557576002810154611557906001600160a01b0316333085612022565b600881015460028201546040516001600160a01b038b8116938b8216937f6e51dd00371aabffa82cd401592f76ed51e98a9ea4b58751c70463a2c78b5ca1936115ab938d938d938d938d9390911690613c78565b60405180910390a36115bb612089565b6001600160a01b0387163b151580156115de5750600381015462010000900460ff165b1561164157604051639c2fd1df60e01b81526001600160a01b03881690639c2fd1df9061161390899089908990600401613c2b565b5f604051808303815f87803b15801561162a575f5ffd5b505af115801561163c573d5f5f3e3d5ffd5b505050505b611649611dad565b50611652612089565b9695505050505050565b5f516020613e905f395f51905f52546001600160a01b031690565b5f61168061165c565b905090565b5f9182525f516020613e705f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6116c3611d8a565b6116cb611dad565b60016116d933858585611db9565b60068111156116ea576116ea613a6f565b1461170857604051633a4e124d60e11b815260040160405180910390fd5b600161171633858585612098565b60030180549115156101000261ff0019909216919091179055610e34612089565b5f516020613e905f395f51905f52545f90600160d01b900465ffffffffffff165f516020613e505f395f51905f52811580159061177c57504265ffffffffffff831610155b611787575f5f61179d565b6001810154600160a01b900465ffffffffffff16825b92509250509091565b61182c60408051610140810182525f80825260208083018290528284018290526060808401839052845160e081018652838152918201839052938101829052928301819052608083810182905260a0840182905260c084019190915290919082019081526020015f81526020015f81526020015f81526020015f81526020015f81525090565b611834611d8a565b61184085858585612098565b604080516101408101825282546001600160a01b0390811682526001840154811660208084019190915260028501549182168385015260ff600160a01b90920482161515606080850191909152845160e08082018752600388015480861615158352610100808204871615159584019590955262010000810486161515978301979097526301000000870485161515928201929092526401000000009095049092161515608085810191909152600486015460a080870191909152600587015460c08088019190915291850195909552600686015494840194909452600785015493830193909352600884015490820152600983015491810191909152600a909101546101208201529050949350505050565b5f61195c611d8a565b611964611dad565b600161197233878787611db9565b600681111561198357611983613a6f565b146119a157604051633a4e124d60e11b815260040160405180910390fd5b5f6119ae33878787612098565b60048101849055600a8101549091506119c79084613c18565b91505061108d612089565b606061105f83836127fb565b5f6119e761285c565b805490915060ff600160401b82041615906001600160401b03165f81158015611a0d5750825b90505f826001600160401b03166001148015611a285750303b155b905081158015611a36575080155b15611a545760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611a7e57845460ff60401b1916600160401b1785555b611a89888888612884565b8315611acf57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b5f611652338787878787611423565b5f611af1611d8a565b610db885858585611db9565b5f611b06611d8a565b5f611b1386868686611db9565b90506006816006811115611b2957611b29613a6f565b1480611b4657506005816006811115611b4457611b44613a6f565b145b8061165257506003816006811115611b6057611b60613a6f565b149695505050505050565b5f516020613e905f395f51905f52545f905f516020613e505f395f51905f5290600160d01b900465ffffffffffff168015801590611bb057504265ffffffffffff8216105b611bca578154600160d01b900465ffffffffffff16611bdf565b6001820154600160a01b900465ffffffffffff165b9250505090565b5f611bef611c25565b509050336001600160a01b03821614611c1d57604051636116401160e11b8152336004820152602401610f21565b61091a6128b3565b5f516020613e505f395f51905f52546001600160a01b03811691600160a01b90910465ffffffffffff1690565b81611c7057604051631fe1e13d60e11b815260040160405180910390fd5b610e81828261294c565b5f611c8481611d74565b61091a612968565b611c94611d8a565b611c9c611dad565b6001611caa33888888611db9565b6006811115611cbb57611cbb613a6f565b14611cd957604051633a4e124d60e11b815260040160405180910390fd5b5f611ce633888888612098565b600301805463ffff00001916620100008615150263ff0000001916176301000000851515021764ff0000000019166401000000008415150217905550611d2a612089565b505050505050565b5f610db833868686866110bb565b5f6001600160e01b03198216637965db0b60e01b148061090257506301ffc9a760e01b6001600160e01b0319831614610902565b61091a8133612972565b611d885f5f6129ab565b565b60325460ff16611d8857604051633ee5aeb560e01b815260040160405180910390fd5b6032805460ff19169055565b5f5f611dc786868686612098565b60028101549091506001600160a01b0316611de5575f91505061108d565b80546001600160a01b0316611dfe57600191505061108d565b6002810154600160a01b900460ff1615611e1c57600691505061108d565b60018101546001600160a01b0316611e4c574281600801541115611e41576002611e44565b60035b91505061108d565b611e54612777565b6001600160a01b031663b551cd5086611e6d84886127b0565b611e77878b6127fb565b6040518463ffffffff1660e01b8152600401611e9593929190613c2b565b602060405180830381865afa158015611eb0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ed49190613b39565b611edf576004611652565b50600595945050505050565b6064546040516302abf57960e61b8152721259195b9d1a599a595c95da1a5d195b1a5cdd606a1b60048201525f916001600160a01b03169063aafd5e40906024015b602060405180830381865afa158015611f48573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116809190613cbd565b6064546040516302abf57960e61b81527210dbdb1b185d195c985b15da1a5d195b1a5cdd606a1b60048201525f916001600160a01b03169063aafd5e4090602401611f2d565b6064546040516302abf57960e61b81526453746f726560d81b60048201525f916001600160a01b03169063aafd5e4090602401611f2d565b5f848484846040516020016120029493929190613cef565b604051602081830303815290604052805190602001209050949350505050565b6040516001600160a01b038481166024830152838116604483015260648201839052610fb69186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612a83565b6032805460ff19166001179055565b5f5f5f6120a787878787611fea565b81526020019081526020015f209050949350505050565b6120c782610e39565b6120d081611d74565b610fb68383612aef565b6001600160a01b03811633146121035760405163334bd91960e11b815260040160405180910390fd5b610e348282612b5b565b63bb74480081106121315760405163cb40339f60e01b815260040160405180910390fd5b5f811161091a5760405163fa050ec160e01b815260040160405180910390fd5b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806121d757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166121cb5f516020613e305f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15611d885760405163703e46dd60e11b815260040160405180910390fd5b61091a5f611d74565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612258575060408051601f3d908101601f1916820190925261225591810190613d1e565b60015b61228057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610f21565b5f516020613e305f395f51905f5281146122b057604051632a87526960e21b815260048101829052602401610f21565b610e348383612bb2565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d885760405163703e46dd60e11b815260040160405180910390fd5b5f5f61231186868686611db9565b90505f61232087878787612098565b60028101805460ff60a01b1916600160a01b1790559050600382600681111561234b5761234b613a6f565b036123a357600681015460078201556009810154600a82015460048301546123739190613c18565b61237d9190613c18565b8154600283015491945061239e916001600160a01b0390811691168561282b565b6124f8565b60058260068111156123b7576123b7613a6f565b036124df576123c4612777565b6001600160a01b031663719c6d56876123dd84896127b0565b6123e7888c6127fb565b6040518463ffffffff1660e01b815260040161240593929190613c2b565b602060405180830381865afa158015612420573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124449190613d1e565b6007820181905560068201546004830154911415905f612463846126dd565b61246d9083613b68565b9050836009015484600a015482846124859190613c18565b61248f9190613c18565b6124999190613c18565b95506124d7836124b35784546001600160a01b03166124c2565b60018501546001600160a01b03165b60028601546001600160a01b0316908861282b565b5050506124f8565b604051639c71cb8360e01b815260040160405180910390fd5b6001810154815460078301546040516001600160a01b0393841693928316928b16917f3f384afb4bd9f0aef0298c80399950011420eb33b0e1a750b20966270247b9a09161254d918c918c918c918c90613d35565b60405180910390a461255d612089565b6001600160a01b0387163b1515801561258257506003810154640100000000900460ff165b156125ea5760078101546040516304cc1fd560e01b81526001600160a01b038916916304cc1fd5916125bc918a918a918a91600401613c49565b5f604051808303815f87803b1580156125d3575f5ffd5b505af11580156125e5573d5f5f3e3d5ffd5b505050505b6125f2611dad565b5050949350505050565b5f612605611b6b565b61260e42612c07565b6126189190613d67565b90506126248282612c3d565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b5f61267882612cc7565b61268142612c07565b61268b9190613d67565b905061269782826129ab565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b60048101545f9061090290600290613d99565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801561273d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127619190613d1e565b9050610fb684846127728585613c18565b612d0e565b6064546040516302abf57960e61b8152654f7261636c6560d01b60048201525f916001600160a01b03169063aafd5e4090602401611f2d565b60038201545f9060ff16156127f45760058301545f9081036127d4576065546127da565b60058401545b90508084600801546127ec9190613b68565b915050610902565b5080610902565b606061105f836040518060400160405280600b81526020016a37b7a932b8bab2b9ba32b960a91b81525084612d9d565b6040516001600160a01b03838116602483015260448201839052610e3491859182169063a9059cbb90606401612057565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610902565b61288c612de2565b612894612e07565b6128a16203f48082612e0f565b6128a9612e21565b610e348383612e29565b5f516020613e505f395f51905f525f806128cb611c25565b915091506128e08165ffffffffffff16151590565b15806128f457504265ffffffffffff821610155b1561291c576040516319ca5ebb60e01b815265ffffffffffff82166004820152602401610f21565b61292d5f61292861165c565b612b5b565b506129385f83612aef565b505081546001600160d01b03191690915550565b61295582610e39565b61295e81611d74565b610fb68383612b5b565b611d885f5f612c3d565b61297c8282611685565b610e815760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610f21565b5f516020613e905f395f51905f52545f516020613e505f395f51905f5290600160d01b900465ffffffffffff168015612a45574265ffffffffffff82161015612a1c57600182015482546001600160d01b0316600160a01b90910465ffffffffffff16600160d01b02178255612a45565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5905f90a15b5060010180546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b5f5f60205f8451602086015f885af180612aa2576040513d5f823e3d81fd5b50505f513d91508115612ab9578060011415612ac6565b6001600160a01b0384163b155b15610fb657604051635274afe760e01b81526001600160a01b0385166004820152602401610f21565b5f5f516020613e505f395f51905f5283612b51575f612b0c61165c565b6001600160a01b031614612b3357604051631fe1e13d60e11b815260040160405180910390fd5b6001810180546001600160a01b0319166001600160a01b0385161790555b61108d8484612e5b565b5f5f516020613e505f395f51905f5283158015612b905750612b7b61165c565b6001600160a01b0316836001600160a01b0316145b15612ba8576001810180546001600160a01b03191690555b61108d8484612efc565b612bbb82612f75565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612bff57610e348282612fd8565b610e81613041565b5f65ffffffffffff821115612c39576040516306dfcc6560e41b81526030600482015260248101839052604401610f21565b5090565b5f516020613e505f395f51905f525f612c54611c25565b835465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b038816171784559150612c9490508165ffffffffffff16151590565b15610fb6576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109905f90a150505050565b5f5f612cd1611b6b565b90508065ffffffffffff168365ffffffffffff1611612cf957612cf48382613db8565b61105f565b61105f65ffffffffffff841662069780613060565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612d5f848261306f565b610fb6576040516001600160a01b0384811660248301525f6044830152612d9391869182169063095ea7b390606401612057565b610fb68482612a83565b60605f612daa85856130b4565b90508481612db7856130f6565b604051602001612dc993929190613dd6565b6040516020818303038152906040529150509392505050565b612dea613163565b611d8857604051631afcd79f60e31b815260040160405180910390fd5b611d88612de2565b612e17612de2565b610e81828261317c565b612089612de2565b612e31612de2565b606480546001600160a01b0319166001600160a01b038316179055612e558261210d565b50606555565b5f5f516020613e705f395f51905f52612e748484611685565b612ef3575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055612ea93390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610902565b5f915050610902565b5f5f516020613e705f395f51905f52612f158484611685565b15612ef3575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610902565b806001600160a01b03163b5f03612faa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610f21565b5f516020613e305f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612ff49190613df3565b5f60405180830381855af49150503d805f811461302c576040519150601f19603f3d011682016040523d82523d5f602084013e613031565b606091505b5091509150610db88583836131e2565b3415611d885760405163b398979f60e01b815260040160405180910390fd5b5f82821882841002821861105f565b5f5f5f5f60205f8651602088015f8a5af192503d91505f519050828015611652575081156130a05780600114611652565b50505050506001600160a01b03163b151590565b8151606090156130e557816040516020016130cf9190613dfe565b6040516020818303038152906040529050610902565b816040516020016130cf9190613e24565b606061310e6001600160801b03602084901c16613239565b6131298360601b6bffffffffffffffffffffffff1916613239565b60405160200161314d9291909182526001600160c01b031916602082015260280190565b6040516020818303038152906040529050919050565b5f61316c61285c565b54600160401b900460ff16919050565b613184612de2565b5f516020613e505f395f51905f526001600160a01b0382166131bb57604051636116401160e11b81525f6004820152602401610f21565b80546001600160d01b0316600160d01b65ffffffffffff851602178155610fb65f83612aef565b6060826131f257612cf4826133ca565b815115801561320957506001600160a01b0384163b155b1561323257604051639996b31560e01b81526001600160a01b0385166004820152602401610f21565b508061105f565b5f5f825f1c9050806001600160801b0316905080600160401b02811777ffffffffffffffff0000000000000000ffffffffffffffff169050806401000000000281177bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16905080620100000281177dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff169050806101000281177eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1690508060100281177f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f1690505f6008827f0808080808080808080808080808080808080808080808080808080808080808168161334c5761334c613d85565b0460047f040404040404040404040404040404040404040404040404040404040404040484160460027f020202020202020202020202020202020202020202020202020202020202020285160417166027029091017f3030303030303030303030303030303030303030303030303030303030303030019392505050565b8051156133d957805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f60208284031215613402575f5ffd5b81356001600160e01b03198116811461105f575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261343c575f5ffd5b81356001600160401b0381111561345557613455613419565b604051601f8201601f19908116603f011681016001600160401b038111828210171561348357613483613419565b60405281815283820160200185101561349a575f5ffd5b816020850160208301375f918101602001919091529392505050565b6001600160a01b038116811461091a575f5ffd5b5f5f5f5f5f60a086880312156134de575f5ffd5b853594506020860135935060408601356001600160401b03811115613501575f5ffd5b61350d8882890161342d565b935050606086013561351e816134b6565b949793965091946080013592915050565b5f5f5f60608486031215613541575f5ffd5b833592506020840135915060408401356001600160401b03811115613564575f5ffd5b6135708682870161342d565b9150509250925092565b5f6020828403121561358a575f5ffd5b5035919050565b5f5f604083850312156135a2575f5ffd5b8235915060208301356135b4816134b6565b809150509250929050565b5f5f5f5f608085870312156135d2575f5ffd5b843593506020850135925060408501356001600160401b038111156135f5575f5ffd5b6136018782880161342d565b949793965093946060013593505050565b5f5f60408385031215613623575f5ffd5b823561362e816134b6565b915060208301356001600160401b03811115613648575f5ffd5b6136548582860161342d565b9150509250929050565b5f5f5f5f60808587031215613671575f5ffd5b843561367c816134b6565b9350602085013592506040850135915060608501356001600160401b038111156136a4575f5ffd5b6136b08782880161342d565b91505092959194509250565b5f602082840312156136cc575f5ffd5b813561105f816134b6565b5f602082840312156136e7575f5ffd5b813565ffffffffffff8116811461105f575f5ffd5b5f5f5f5f5f60a08688031215613710575f5ffd5b853561371b816134b6565b9450602086013561372b816134b6565b9350604086013592506060860135915060808601356001600160401b03811115613753575f5ffd5b61375f8882890161342d565b9150509295509295909350565b5f5f5f5f5f5f60c08789031215613781575f5ffd5b863561378c816134b6565b9550602087013561379c816134b6565b9450604087013593506060870135925060808701356001600160401b038111156137c4575f5ffd5b6137d089828a0161342d565b9699959850939692959460a09093013593505050565b80511515825260208101511515602083015260408101511515604083015260608101511515606083015260808101511515608083015260a081015160a083015260c081015160c08301525050565b6001600160a01b038b811682528a81166020830152891660408201528715156060820152610200810161386a60808301896137e6565b6101608201969096526101808101949094526101a08401929092526101c08301526101e09091015295945050505050565b81516001600160a01b03168152610200810160208301516138c760208401826001600160a01b03169052565b5060408301516138e260408401826001600160a01b03169052565b5060608301516138f6606084018215159052565b50608083015161390960808401826137e6565b5060a083015161016083015260c083015161018083015260e08301516101a08301526101008301516101c0830152610120909201516101e09091015290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61105f6020830184613948565b5f5f60408385031215613999575f5ffd5b82356001600160401b038111156139ae575f5ffd5b6139ba8582860161342d565b92505060208301356135b4816134b6565b5f5f5f606084860312156139dd575f5ffd5b8335925060208401356139ef816134b6565b915060408401356139ff816134b6565b809150509250925092565b5f5f5f5f5f60a08688031215613a1e575f5ffd5b8535613a29816134b6565b9450602086013593506040860135925060608601356001600160401b03811115613a51575f5ffd5b613a5d8882890161342d565b95989497509295608001359392505050565b634e487b7160e01b5f52602160045260245ffd5b6020810160078310613aa357634e487b7160e01b5f52602160045260245ffd5b91905290565b801515811461091a575f5ffd5b5f5f5f5f5f5f60c08789031215613acb575f5ffd5b863595506020870135945060408701356001600160401b03811115613aee575f5ffd5b613afa89828a0161342d565b9450506060870135613b0b81613aa9565b92506080870135613b1b81613aa9565b915060a0870135613b2b81613aa9565b809150509295509295509295565b5f60208284031215613b49575f5ffd5b815161105f81613aa9565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561090257610902613b54565b5f6020828403128015613b8c575f5ffd5b50604051602081016001600160401b0381118282101715613baf57613baf613419565b6040529151825250919050565b86815285602082015260c060408201525f613bda60c0830187613948565b6001600160a01b0395909516606083015250608081019290925260a0909101529392505050565b808202811582820484141761090257610902613b54565b8082018082111561090257610902613b54565b838152826020820152606060408201525f610db86060830184613948565b848152836020820152608060408201525f613c676080830185613948565b905082606083015295945050505050565b86815285602082015260c060408201525f613c9660c0830187613948565b60608301959095525060808101929092526001600160a01b031660a0909101529392505050565b5f60208284031215613ccd575f5ffd5b815161105f816134b6565b5f81518060208401855e5f93019283525090919050565b6bffffffffffffffffffffffff198560601b1681528360148201528260348201525f6116526054830184613cd8565b5f60208284031215613d2e575f5ffd5b5051919050565b85815284602082015260a060408201525f613d5360a0830186613948565b606083019490945250608001529392505050565b65ffffffffffff818116838216019081111561090257610902613b54565b634e487b7160e01b5f52601260045260245ffd5b5f82613db357634e487b7160e01b5f52601260045260245ffd5b500490565b65ffffffffffff828116828216039081111561090257610902613b54565b5f610db8613ded613de78488613cd8565b86613cd8565b84613cd8565b5f61105f8284613cd8565b600b60fa1b81525f613e136001830184613cd8565b601d60f91b81526001019392505050565b5f613e138284613cd856fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbceef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800eef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401a26469706673582212207304c87cfaad9ea28e8837efe0f15ebf1a6da06e5a665d07ad032b100ff494b064736f6c634300081e0033","sourceMap":"3715:31368:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4146:219:1;;;;;;;;;;-1:-1:-1;4146:219:1;;;;;:::i;:::-;;:::i;:::-;;;566:14:47;;559:22;541:41;;529:2;514:18;4146:219:1;;;;;;;;9909:108;;;;;;;;;;-1:-1:-1;10004:6:1;9909:108;;;767:14:47;755:27;;;737:46;;725:2;710:18;9909:108:1;593:196:47;13102:126:1;;;;;;;;;;;;;:::i;:::-;;7694:2132:44;;;;;;;;;;-1:-1:-1;7694:2132:44;;;;;:::i;:::-;;:::i;:::-;;;2811:25:47;;;2799:2;2784:18;7694:2132:44;2665:177:47;13731:507:44;;;;;;;;;;-1:-1:-1;13731:507:44;;;;;:::i;:::-;;:::i;4807:191:0:-;;;;;;;;;;-1:-1:-1;4807:191:0;;;;;:::i;:::-;;:::i;34522:104:44:-;;;;;;;;;;-1:-1:-1;34604:15:44;34522:104;;4656:276:1;;;;;;;;;;-1:-1:-1;4656:276:1;;;;;:::i;:::-;;:::i;5995:682::-;;;;;;;;;;-1:-1:-1;5995:682:1;;;;;:::i;:::-;;:::i;12355:503:44:-;;;;;;;;;;-1:-1:-1;12355:503:44;;;;;:::i;:::-;;:::i;4392:96::-;;;;;;;;;;;;;:::i;4161:214:3:-;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;24005:451:44:-;;;;;;;;;;-1:-1:-1;24005:451:44;;;;;:::i;:::-;;:::i;25032:274::-;;;;;;;;;;-1:-1:-1;25032:274:44;;;;;:::i;:::-;;:::i;10196:150:1:-;;;;;;;;;;-1:-1:-1;10196:150:1;;;;;:::i;:::-;;:::i;12486:145::-;;;;;;;;;;-1:-1:-1;12486:145:1;;;;;:::i;:::-;;:::i;20036:2501:44:-;;;;;;;;;;-1:-1:-1;20036:2501:44;;;;;:::i;:::-;;:::i;16340:1923::-;;;;;;;;;;-1:-1:-1;16340:1923:44;;;;;:::i;:::-;;:::i;8482:211:1:-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;8892:32:47;;;8874:51;;8862:2;8847:18;8482:211:1;8728:203:47;4400:93:1;;;;;;;;;;;;;:::i;3947:63:44:-;;;;;;;;;;-1:-1:-1;3947:63:44;2443:4:0;3947:63:44;;3780:207:0;;;;;;;;;;-1:-1:-1;3780:207:0;;;;;:::i;:::-;;:::i;11500:418:44:-;;;;;;;;;;-1:-1:-1;11500:418:44;;;;;:::i;:::-;;:::i;5858:43:46:-;;;;;;;;;;-1:-1:-1;5858:43:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5858:43:46;;;;;;;;;;;;-1:-1:-1;;;5858:43:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9483:368:1:-;;;;;;;;;;;;;:::i;:::-;;;;10679:14:47;10667:27;;;10649:46;;10731:27;;;;10726:2;10711:18;;10704:55;10622:18;9483:368:1;10479:286:47;25746:297:44;;;;;;;;;;-1:-1:-1;25746:297:44;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1819:58:3:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:3;;;;;;;;;;;;:::i;10353:591:44:-;;;;;;;;;;-1:-1:-1;10353:591:44;;;;;:::i;:::-;;:::i;27943:224::-;;;;;;;;;;-1:-1:-1;27943:224:44;;;;;:::i;:::-;;:::i;4974:189::-;;;;;;;;;;-1:-1:-1;4974:189:44;;;;;:::i;:::-;;:::i;18860:399::-;;;;;;;;;;-1:-1:-1;18860:399:44;;;;;:::i;:::-;;:::i;4071:38::-;;;;;;;;;;-1:-1:-1;4071:38:44;;;;-1:-1:-1;;;;;4071:38:44;;;26468:284;;;;;;;;;;-1:-1:-1;26468:284:44;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;27245:382::-;;;;;;;;;;-1:-1:-1;27245:382:44;;;;;:::i;:::-;;:::i;5492:50:46:-;;;;;;;;;;;;5538:4;5492:50;;9087:338:1;;;;;;;;;;;;;:::i;11244:344::-;;;;;;;;;;;;;:::i;8751:278::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;15307:32:47;;;15289:51;;15388:14;15376:27;;;15371:2;15356:18;;15349:55;15262:18;8751:278:1;15117:293:47;5032:278:1;;;;;;;;;;-1:-1:-1;5032:278:1;;;;;:::i;:::-;;:::i;10819:128::-;;;;;;;;;;;;;:::i;14804:761:44:-;;;;;;;;;;-1:-1:-1;14804:761:44;;;;;:::i;:::-;;:::i;23135:344::-;;;;;;;;;;-1:-1:-1;23135:344:44;;;;;:::i;:::-;;:::i;4170:39::-;;;;;;;;;;;;;;;;4494:60;;;;;;;;;;;;-1:-1:-1;;;4494:60:44;;4146:219:1;4231:4;-1:-1:-1;;;;;;4254:64:1;;-1:-1:-1;;;4254:64:1;;:104;;;4322:36;4346:11;4322:23;:36::i;:::-;4247:111;4146:219;-1:-1:-1;;4146:219:1:o;13102:126::-;2443:4:0;3272:16;2443:4;3272:10;:16::i;:::-;13193:28:1::1;:26;:28::i;:::-;13102:126:::0;:::o;7694:2132:44:-;7908:17;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;8008:13:44::1;7945:59;7955:10;7967;7979:9;7990:13;7945:9;:59::i;:::-;:76;;;;;;;;:::i;:::-;;7937:111;;;;-1:-1:-1::0;;;7937:111:44::1;;;;;;;;;;;;8066:25;:23;:25::i;:::-;-1:-1:-1::0;;;;;8066:47:44::1;;8114:10;8066:59;;;;;;;;;;;;;2811:25:47::0;;2799:2;2784:18;;2665:177;8066:59:44::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8058:93;;;;-1:-1:-1::0;;;8058:93:44::1;;;;;;;;;;;;8169:25;:23;:25::i;:::-;:58;::::0;-1:-1:-1;;;8169:58:44;;-1:-1:-1;;;;;8892:32:47;;;8169:58:44::1;::::0;::::1;8874:51:47::0;8169:39:44;;;::::1;::::0;::::1;::::0;8847:18:47;;8169:58:44::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8161:90;;;;-1:-1:-1::0;;;8161:90:44::1;;;;;;;;;;;;34604:15:::0;8269:9:::1;:29;;8261:59;;;;-1:-1:-1::0;;;8261:59:44::1;;;;;;;;;;;;4442:46;4384:2;5538:4:46;4442:46:44;:::i;:::-;8509:13;:20;:47;;8501:80;;;;-1:-1:-1::0;;;8501:80:44::1;;;;;;;;;;;;8592:16;8611:11;:9;:11::i;:::-;:46;::::0;-1:-1:-1;;;8611:46:44;;-1:-1:-1;;;;;8892:32:47;;;8611:46:44::1;::::0;::::1;8874:51:47::0;8611:27:44;;;::::1;::::0;::::1;::::0;8847:18:47;;8611:46:44::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:55;;;8592:74;;8745:645;;;;;;;;8785:1;-1:-1:-1::0;;;;;8745:645:44::1;;;;;8819:1;-1:-1:-1::0;;;;;8745:645:44::1;;;;;8845:8;-1:-1:-1::0;;;;;8745:645:44::1;;;;;8876:5;8745:645;;;;;;8912:316;;;;;;;;8958:5;8912:316;;;;;;8998:5;8912:316;;;;;;9046:5;8912:316;;;;;;9094:5;8912:316;;;;;;9141:5;8912:316;;;;;;9170:8;8912:316;;;;9212:1;8912:316;;::::0;8745:645:::1;;;;9257:1;8745:645;;;;9287:1;8745:645;;;;9318:1;8745:645;;;;9341:6;8745:645;;;;9371:8;8745:645;;::::0;8676:8:::1;:66;8685:56;8692:10;8704;8716:9;8727:13;8685:6;:56::i;:::-;8676:66:::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;8676:66:44;:714;;;;-1:-1:-1;;;;;;8676:714:44;;::::1;-1:-1:-1::0;;;;;8676:714:44;;::::1;;::::0;;;;::::1;::::0;-1:-1:-1;8676:714:44;::::1;::::0;;;;::::1;::::0;;::::1;;::::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;::::1;-1:-1:-1::0;;;;;;8676:714:44;;;;-1:-1:-1;;;8676:714:44;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;8676:714:44;;;;::::1;;-1:-1:-1::0;;8676:714:44;;;;;::::1;::::0;::::1;;::::0;::::1;;-1:-1:-1::0;;8676:714:44;;;::::1;;::::0;;;::::1;-1:-1:-1::0;;8676:714:44;;;;;;;::::1;;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;8676:714:44::1;::::0;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;9405:10;;9401:101:::1;;9431:60;-1:-1:-1::0;;;;;9431:25:44;::::1;9457:10;9477:4;9484:6:::0;9431:25:::1;:60::i;:::-;9530:10;-1:-1:-1::0;;;;;9517:99:44::1;;9542:10;9554:9;9565:13;9588:8;9599:6;9607:8;9517:99;;;;;;;;;;;:::i;:::-;;;;;;;;9807:12;:8:::0;9818:1:::1;9807:12;:::i;:::-;9800:19;;;1908:20:38::0;:18;:20::i;:::-;7694:2132:44;;;;;;;:::o;13731:507::-;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;13974:15:44::1;13911:59;13921:10;13933;13945:9;13956:13;13911:9;:59::i;:::-;:78;;;;;;;;:::i;:::-;;13890:137;;;;-1:-1:-1::0;;;13890:137:44::1;;;;;;;;;;;;14037:23;14063:61;14075:10;14087;14099:9;14110:13;14063:11;:61::i;:::-;14134:23;;:41:::0;;-1:-1:-1;;14185:46:44;;;;;-1:-1:-1;1908:20:38;:18;:20::i;:::-;13731:507:44;;;:::o;4807:191:0:-;4872:7;4967:14;;;-1:-1:-1;;;;;;;;;;;4967:14:0;;;;;:24;;;;4807:191::o;4656:276:1:-;4786:4;4782:104;;4835:40;;-1:-1:-1;;;4835:40:1;;;;;;;;;;;4782:104;4895:30;4911:4;4917:7;4895:15;:30::i;:::-;4656:276;;:::o;5995:682::-;-1:-1:-1;;;;;;;;;;;6231:26:1;;:55;;;;;6272:14;:12;:14::i;:::-;-1:-1:-1;;;;;6261:25:1;:7;-1:-1:-1;;;;;6261:25:1;;6231:55;6227:401;;;6303:23;6328:15;6347:21;:19;:21::i;:::-;6302:66;;-1:-1:-1;6302:66:1;-1:-1:-1;;;;;;6386:29:1;;;;;:58;;-1:-1:-1;16952:13:1;;;;6386:58;:91;;;-1:-1:-1;17180:15:1;17169:26;;;;6448:29;6386:91;6382:185;;;6504:48;;-1:-1:-1;;;6504:48:1;;767:14:47;755:27;;6504:48:1;;;737:46:47;710:18;;6504:48:1;;;;;;;;6382:185;-1:-1:-1;;6580:37:1;;-1:-1:-1;;;;6580:37:1;;;6227:401;6637:33;6656:4;6662:7;6637:18;:33::i;12355:503:44:-;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;12636:15:44::1;12573:59;12583:10;12595;12607:9;12618:13;12573:9;:59::i;:::-;:78;;;;;;;;:::i;:::-;;12552:137;;;;-1:-1:-1::0;;;12552:137:44::1;;;;;;;;;;;;12699:33;12717:14;12699:17;:33::i;:::-;12837:14;12742:61;12754:10;12766;12778:9;12789:13;12742:11;:61::i;:::-;:92:::0;;:109;1908:20:38;:18;:20::i;:::-;12355:503:44;;;;:::o;4392:96::-;4442:46;4384:2;5538:4:46;4442:46:44;:::i;:::-;4392:96;:::o;4161:214:3:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;3708:134::-:0;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:3;:::o;24005:451:44:-;24171:6;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;24260:13:44::1;24197:59;24207:10;24219;24231:9;24242:13;24197:9;:59::i;:::-;:76;;;;;;;;:::i;:::-;;24193:164;;24289:57;24297:10;24309;24321:9;24332:13;24289:7;:57::i;:::-;;24193:164;24374:61;24386:10;24398;24410:9;24421:13;24374:11;:61::i;:::-;:75;;;24367:82;;1908:20:38::0;:18;:20::i;:::-;24005:451:44;;;;;:::o;25032:274::-;25206:14;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;25243:56:44::1;25251:9;25262:10;25274:9;25285:13;25243:7;:56::i;:::-;25236:63;;1908:20:38::0;:18;:20::i;:::-;25032:274:44;;;;;;:::o;10196:150:1:-;2443:4:0;3272:16;2443:4;3272:10;:16::i;:::-;10303:36:1::1;10330:8;10303:26;:36::i;12486:145::-:0;2443:4:0;3272:16;2443:4;3272:10;:16::i;:::-;12590:34:1::1;12615:8;12590:24;:34::i;20036:2501:44:-:0;20249:17;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;-1:-1:-1;;;;;20286:22:44;::::1;20278:62;;;;-1:-1:-1::0;;;20278:62:44::1;;;;;;;;;;;;20420:14;20358:58;20368:9;20379:10;20391:9;20402:13;20358:9;:58::i;:::-;:76;;;;;;;;:::i;:::-;;20350:112;;;;-1:-1:-1::0;;;20350:112:44::1;;;;;;;;;;;;20472:23;20498:60;20510:9;20521:10;20533:9;20544:13;20498:11;:60::i;:::-;20568:16;::::0;::::1;:27:::0;;-1:-1:-1;;;;;;20568:27:44::1;-1:-1:-1::0;;;;;20568:27:44;::::1;;::::0;;20625:16:::1;::::0;::::1;::::0;20666:28;;;;20568:16;;-1:-1:-1;20625:16:44;20716:15:::1;20625:16:::0;20666:28;20716:15:::1;:::i;:::-;20704:27:::0;-1:-1:-1;20745:13:44;;20741:115:::1;;20774:16;::::0;::::1;::::0;:71:::1;::::0;-1:-1:-1;;;;;20774:16:44::1;20808:10;20828:4;20835:9:::0;20774:33:::1;:71::i;:::-;20866:20;20889:11;:9;:11::i;:::-;20866:34;;21234:16;21264:27;21283:7;21264:18;:27::i;:::-;21253:38;::::0;:8;:38:::1;:::i;:::-;21234:57:::0;-1:-1:-1;21305:12:44;;21301:218:::1;;21333:16;::::0;::::1;::::0;:64:::1;::::0;-1:-1:-1;;;;;21333:16:44::1;21380:5:::0;21388:8;21333:38:::1;:64::i;:::-;21411:11;:9;:11::i;:::-;21450:16;::::0;::::1;::::0;21469:38:::1;::::0;;::::1;::::0;::::1;::::0;;;;;21411:97;;-1:-1:-1;;;21411:97:44;;-1:-1:-1;;;;;21450:16:44;;::::1;21411:97;::::0;::::1;18708:51:47::0;18795:13;;18775:18;;;18768:41;21411:30:44;::::1;::::0;::::1;::::0;18681:18:47;;21411:97:44::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21301:218;21529:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;21529:25:44::1;;21568:10;21580:46;21607:7;21616:9;21580:26;:46::i;:::-;21628:45;21648:13;21663:9;21628:19;:45::i;:::-;21529:154;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;21753:14:44::1;::::0;::::1;::::0;21721::::1;::::0;-1:-1:-1;21753:18:44;;;;:61:::1;;-1:-1:-1::0;21775:23:44::1;::::0;::::1;:39:::0;::::1;::::0;::::1;;;21753:61;21749:209;;;-1:-1:-1::0;21839:14:44::1;::::0;::::1;::::0;;21884:1:::1;21867:18:::0;;;21899:16:::1;::::0;::::1;::::0;:48:::1;::::0;-1:-1:-1;;;;;21899:16:44::1;21929:9:::0;21839:14;21899:29:::1;:48::i;:::-;22028:8;-1:-1:-1::0;;;;;21973:134:44::1;22010:7;:16;;;;;;;;;;-1:-1:-1::0;;;;;22010:16:44::1;-1:-1:-1::0;;;;;21973:134:44::1;21999:9;-1:-1:-1::0;;;;;21973:134:44::1;;22038:10;22050:9;22061:13;22076:7;:21;;;21973:134;;;;;;;;;:::i;:::-;;;;;;;;22229:30;:28;:30::i;:::-;-1:-1:-1::0;;;;;22294:29:44;::::1;1818:19:35::0;:23;;22294:82:44::1;;;;-1:-1:-1::0;22329:23:44::1;::::0;::::1;:47:::0;;;::::1;;;22294:82;22290:203;;;22392:90;::::0;-1:-1:-1;;;22392:90:44;;-1:-1:-1;;;;;22392:44:44;::::1;::::0;::::1;::::0;:90:::1;::::0;22437:10;;22449:9;;22460:13;;22475:6;;22392:90:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22290:203;22502:28;:26;:28::i;:::-;20268:2269;;;;;;1908:20:38::0;:18;:20::i;16340:1923:44:-;16591:17;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;-1:-1:-1;;;;;16628:22:44;::::1;16620:62;;;;-1:-1:-1::0;;;16620:62:44::1;;;;;;;;;;;;16775:15;16713:58;16723:9;16734:10;16746:9;16757:13;16713:9;:58::i;:::-;:77;;;;;;;;:::i;:::-;;16692:136;;;;-1:-1:-1::0;;;16692:136:44::1;;;;;;;;;;;;16838:23;16864:60;16876:9;16887:10;16899:9;16910:13;16864:11;:60::i;:::-;16938:23;::::0;::::1;:34:::0;16838:86;;-1:-1:-1;16938:34:44::1;;16934:134;;;-1:-1:-1::0;;;16996:13:44::1;:35:::0;16988:69:::1;;;;-1:-1:-1::0;;;16988:69:44::1;;;;;;;;;;;;17077:27:::0;;-1:-1:-1;;;;;;17077:27:44::1;-1:-1:-1::0;;;;;17077:27:44;::::1;;::::0;;17114:21:::1;::::0;::::1;:37:::0;;;17296:38;;;;-1:-1:-1;17296:43:44;:102:::1;;17383:15;;17296:102;;;17342:38:::0;;;;17296:102:::1;17264:135;::::0;34604:15;17264:135:::1;:::i;:::-;17239:22;::::0;::::1;:160:::0;17453:16:::1;::::0;::::1;::::0;17422:28;;;;:47:::1;::::0;17453:16;17422:47:::1;:::i;:::-;17410:59:::0;-1:-1:-1;17483:13:44;;17479:90:::1;;17498:16;::::0;::::1;::::0;:71:::1;::::0;-1:-1:-1;;;;;17498:16:44::1;17532:10;17552:4;17559:9:::0;17498:33:::1;:71::i;:::-;17757:22;::::0;::::1;::::0;17801:16:::1;::::0;::::1;::::0;17585:243:::1;::::0;-1:-1:-1;;;;;17585:243:44;;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;17656:10;;17680:9;;17703:13;;17730;;17801:16;;::::1;::::0;17585:243:::1;:::i;:::-;;;;;;;;17963:30;:28;:30::i;:::-;-1:-1:-1::0;;;;;18028:29:44;::::1;1818:19:35::0;:23;;18028:82:44::1;;;;-1:-1:-1::0;18063:23:44::1;::::0;::::1;:47:::0;;;::::1;;;18028:82;18024:195;;;18126:82;::::0;-1:-1:-1;;;18126:82:44;;-1:-1:-1;;;;;18126:44:44;::::1;::::0;::::1;::::0;:82:::1;::::0;18171:10;;18183:9;;18194:13;;18126:82:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18024:195;18228:28;:26;:28::i;:::-;16610:1653;1908:20:38::0;:18;:20::i;:::-;16340:1923:44;;;;;;;;:::o;8482:211:1:-;-1:-1:-1;;;;;;;;;;;8664:22:1;-1:-1:-1;;;;;8664:22:1;;8482:211::o;4400:93::-;4446:7;4472:14;:12;:14::i;:::-;4465:21;;4400:93;:::o;3780:207:0:-;3857:4;3949:14;;;-1:-1:-1;;;;;;;;;;;3949:14:0;;;;;;;;-1:-1:-1;;;;;3949:31:0;;;;;;;;;;;;;;;3780:207::o;11500:418:44:-;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;11748:15:44::1;11685:59;11695:10;11707;11719:9;11730:13;11685:9;:59::i;:::-;:78;;;;;;;;:::i;:::-;;11664:137;;;;-1:-1:-1::0;;;11664:137:44::1;;;;;;;;;;;;11907:4;11811:61;11823:10;11835;11847:9;11858:13;11811:11;:61::i;:::-;:77;;:100:::0;;;::::1;;;;-1:-1:-1::0;;11811:100:44;;::::1;::::0;;;::::1;::::0;;1908:20:38;:18;:20::i;9483:368:1:-;-1:-1:-1;;;;;;;;;;;9706:23:1;9548:15;;-1:-1:-1;;;9706:23:1;;;;-1:-1:-1;;;;;;;;;;;16952:13:1;;;;;9747:57;;-1:-1:-1;17180:15:1;17169:26;;;;9775:29;9747:57;9746:98;;9839:1;9842;9746:98;;;9809:15;;;;-1:-1:-1;;;9809:15:1;;;;9826:8;9746:98;9739:105;;;;;9483:368;;:::o;25746:297:44:-;25939:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25939:14:44;2127:19:38;:17;:19::i;:::-;25976:60:44::1;25988:9;25999:10;26011:9;26022:13;25976:11;:60::i;:::-;25969:67;::::0;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;25969:67:44;;::::1;::::0;;;;::::1;::::0;;::::1;;::::0;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;-1:-1:-1::0;;;25969:67:44;;::::1;::::0;::::1;;;::::0;;;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;;;::::0;;::::1;::::0;;::::1;::::0;::::1;;;::::0;;::::1;::::0;;;;;;::::1;::::0;::::1;;;::::0;;;;;;;;;::::1;::::0;::::1;;;::::0;;;;;;;;;;::::1;::::0;;::::1;;;::::0;;;;;;;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;;;::::1;::::0;::::1;::::0;;;;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;-1:-1:-1;25746:297:44;;;;;;:::o;10353:591::-;10523:17;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;10640:15:44::1;10577:59;10587:10;10599;10611:9;10622:13;10577:9;:59::i;:::-;:78;;;;;;;;:::i;:::-;;10556:137;;;;-1:-1:-1::0;;;10556:137:44::1;;;;;;;;;;;;10703:23;10729:61;10741:10;10753;10765:9;10776:13;10729:11;:61::i;:::-;10800:28:::0;;;:35;;;10921:16:::1;::::0;::::1;::::0;10703:87;;-1:-1:-1;10914:23:44::1;::::0;10831:4;10914:23:::1;:::i;:::-;10907:30;;;1908:20:38::0;:18;:20::i;27943:224:44:-;28080:12;28115:45;28135:13;28150:9;28115:19;:45::i;4974:189::-;4158:30:2;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:2;-1:-1:-1;;;4302:15:2;;;4301:16;;-1:-1:-1;;;;;4348:14:2;4279:19;4724:16;;:34;;;;;4744:14;4724:34;4704:54;;4768:17;4788:11;-1:-1:-1;;;;;4788:16:2;4803:1;4788:16;:50;;;;-1:-1:-1;4816:4:2;4808:25;:30;4788:50;4768:70;;4854:12;4853:13;:30;;;;;4871:12;4870:13;4853:30;4849:91;;;4906:23;;-1:-1:-1;;;4906:23:2;;;;;;;;;;;4849:91;4949:18;;-1:-1:-1;;4949:18:2;4966:1;4949:18;;;4977:67;;;;5011:22;;-1:-1:-1;;;;5011:22:2;-1:-1:-1;;;5011:22:2;;;4977:67;5090:66:44::1;5116:9;5127:14;5143:12;5090:25;:66::i;:::-;5068:14:2::0;5064:101;;;5098:23;;-1:-1:-1;;;;5098:23:2;;;5140:14;;-1:-1:-1;20818:50:47;;5140:14:2;;20806:2:47;20791:18;5140:14:2;;;;;;;5064:101;4092:1079;;;;;4974:189:44;;;:::o;18860:399::-;19063:17;19161:91;19177:10;19189:9;19200:10;19212:9;19223:13;19238;19161:15;:91::i;26468:284::-;26659:5;2127:19:38;:17;:19::i;:::-;26687:58:44::1;26697:9;26708:10;26720:9;26731:13;26687:9;:58::i;27245:382::-:0;27436:4;2127:19:38;:17;:19::i;:::-;27456:11:44::1;27470:58;27480:9;27491:10;27503:9;27514:13;27470:9;:58::i;:::-;27456:72:::0;-1:-1:-1;27554:13:44::1;27545:5;:22;;;;;;;;:::i;:::-;;:49;;;-1:-1:-1::0;27580:14:44::1;27571:5;:23;;;;;;;;:::i;:::-;;27545:49;:75;;;-1:-1:-1::0;27607:13:44::1;27598:5;:22;;;;;;;;:::i;:::-;;27538:82:::0;27245:382;-1:-1:-1;;;;;;27245:382:44:o;9087:338:1:-;-1:-1:-1;;;;;;;;;;;9284:23:1;9145:6;;-1:-1:-1;;;;;;;;;;;3245:45:1;-1:-1:-1;;;9284:23:1;;;;16952:13;;;;;9325:56;;-1:-1:-1;17180:15:1;17169:26;;;;9353:28;9324:94;;9403:15;;-1:-1:-1;;;9403:15:1;;;;9324:94;;;9385:15;;;;-1:-1:-1;;;9385:15:1;;;;9324:94;9317:101;;;;9087:338;:::o;11244:344::-;11308:23;11337:21;:19;:21::i;:::-;-1:-1:-1;11307:51:1;-1:-1:-1;966:10:4;-1:-1:-1;;;;;11372:31:1;;;11368:175;;11486:46;;-1:-1:-1;;;11486:46:1;;966:10:4;11486:46:1;;;8874:51:47;8847:18;;11486:46:1;8728:203:47;11368:175:1;11552:29;:27;:29::i;8751:278::-;-1:-1:-1;;;;;;;;;;;8967:22:1;-1:-1:-1;;;;;8967:22:1;;;-1:-1:-1;;;8991:30:1;;;;;;8751:278::o;5032:::-;5163:4;5159:104;;5212:40;;-1:-1:-1;;;5212:40:1;;;;;;;;;;;5159:104;5272:31;5289:4;5295:7;5272:16;:31::i;10819:128::-;2443:4:0;3272:16;2443:4;3272:10;:16::i;:::-;10911:29:1::1;:27;:29::i;14804:761:44:-:0;1841:19:38;:17;:19::i;:::-;1870:17;:15;:17::i;:::-;15161:15:44::1;15098:59;15108:10;15120;15132:9;15143:13;15098:9;:59::i;:::-;:78;;;;;;;;:::i;:::-;;15077:137;;;;-1:-1:-1::0;;;15077:137:44::1;;;;;;;;;;;;15224:23;15250:61;15262:10;15274;15286:9;15297:13;15250:11;:61::i;:::-;15321:23;;:73:::0;;-1:-1:-1;;15404:73:44;15321;;::::1;;;-1:-1:-1::0;;15404:73:44;;;;::::1;;;;-1:-1:-1::0;;15487:71:44::1;::::0;;::::1;;;;::::0;;-1:-1:-1;1908:20:38;:18;:20::i;:::-;14804:761:44;;;;;;:::o;23135:344::-;23294:17;23396:76;23412:10;23424:9;23435:10;23447:9;23458:13;23396:15;:76::i;3491:202:0:-;3576:4;-1:-1:-1;;;;;;3599:47:0;;-1:-1:-1;;;3599:47:0;;:87;;-1:-1:-1;;;;;;;;;;1101:40:5;;;3650:36:0;1002:146:5;4196:103:0;4262:30;4273:4;966:10:4;4262::0;:30::i;13355:94:1:-;13420:22;13437:1;13440;13420:16;:22::i;:::-;13355:94::o;2667:183:38:-;2799:11;;;;2791:52;;;;-1:-1:-1;;;2791:52:38;;;;;;;;;;;2856:136;2966:11;:19;;-1:-1:-1;;2966:19:38;;;2856:136::o;31793:818:44:-;31945:5;31966:23;31992:60;32004:9;32015:10;32027:9;32038:13;31992:11;:60::i;:::-;32075:16;;;;31966:86;;-1:-1:-1;;;;;;32075:16:44;32063:65;;32115:13;32108:20;;;;;32063:65;32143:16;;-1:-1:-1;;;;;32143:16:44;32139:58;;32182:15;32175:22;;;;;32139:58;32212:15;;;;-1:-1:-1;;;32212:15:44;;;;32208:41;;;32236:13;32229:20;;;;;32208:41;32264:16;;;;-1:-1:-1;;;;;32264:16:44;32260:143;;34604:15;32317:7;:22;;;:42;;:75;;32378:14;32317:75;;;32362:13;32317:75;32310:82;;;;;32260:143;32420:12;:10;:12::i;:::-;-1:-1:-1;;;;;32420:21:44;;32455:10;32467:46;32494:7;32503:9;32467:26;:46::i;:::-;32515:45;32535:13;32550:9;32515:19;:45::i;:::-;32420:150;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:184;;32590:14;32420:184;;;-1:-1:-1;32573:14:44;;31793:818;-1:-1:-1;;;;;31793:818:44:o;33154:211::-;33288:6;;:69;;-1:-1:-1;;;33288:69:44;;-1:-1:-1;;;33288:69:44;;;2811:25:47;33212:28:44;;-1:-1:-1;;;;;33288:6:44;;:31;;2784:18:47;;33288:69:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;32800:187::-;32910:6;;:69;;-1:-1:-1;;;32910:69:44;;-1:-1:-1;;;32910:69:44;;;2811:25:47;32858:16:44;;-1:-1:-1;;;;;32910:6:44;;:31;;2784:18:47;;32910:69:44;2665:177:47;32993:155:44;33085:6;;:55;;-1:-1:-1;;;33085:55:44;;-1:-1:-1;;;33085:55:44;;;2811:25:47;33037:14:44;;-1:-1:-1;;;;;33085:6:44;;:31;;2784:18:47;;33085:55:44;2665:177:47;28173:262:44;28322:7;28379:9;28390:10;28402:9;28413:13;28362:65;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;28352:76;;;;;;28345:83;;28173:262;;;;;;:::o;1618:188:18:-;1745:53;;-1:-1:-1;;;;;22015:32:47;;;1745:53:18;;;21997:51:47;22084:32;;;22064:18;;;22057:60;22133:18;;;22126:34;;;1718:81:18;;1738:5;;1760:18;;;;;21970::47;;1745:53:18;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1745:53:18;;;;;;;;;;;1718:19;:81::i;2998:206:38:-;3179:11;:18;;-1:-1:-1;;3179:18:38;3193:4;3179:18;;;2998:206::o;31139:264:44:-;31293:15;31331:8;:65;31340:55;31347:9;31358:10;31370:9;31381:13;31340:6;:55::i;:::-;31331:65;;;;;;;;;;;31324:72;;31139:264;;;;;;:::o;5294:136:0:-;5368:18;5381:4;5368:12;:18::i;:::-;3272:16;3283:4;3272:10;:16::i;:::-;5398:25:::1;5409:4;5415:7;5398:10;:25::i;6396:245::-:0;-1:-1:-1;;;;;6489:34:0;;966:10:4;6489:34:0;6485:102;;6546:30;;-1:-1:-1;;;6546:30:0;;;;;;;;;;;6485:102;6597:37;6609:4;6615:18;6597:11;:37::i;31595:192:44:-;31693:10;31681:9;:22;31673:51;;;;-1:-1:-1;;;31673:51:44;;;;;;;;;;;;31754:1;31742:9;:13;31734:46;;;;-1:-1:-1;;;31734:46:44;;;;;;;;;;;4578:312:3;4658:4;-1:-1:-1;;;;;4667:6:3;4650:23;;;:120;;;4764:6;-1:-1:-1;;;;;4728:42:3;:32;-1:-1:-1;;;;;;;;;;;1519:53:15;-1:-1:-1;;;;;1519:53:15;;1441:138;4728:32:3;-1:-1:-1;;;;;4728:42:3;;;4650:120;4633:251;;;4844:29;;-1:-1:-1;;;4844:29:3;;;;;;;;;;;6738:91:44;6435:30;2443:4:0;6435:10:44;:30::i;6032:538:3:-;6149:17;-1:-1:-1;;;;;6131:50:3;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6131:52:3;;;;;;;;-1:-1:-1;;6131:52:3;;;;;;;;;;;;:::i;:::-;;;6127:437;;6493:60;;-1:-1:-1;;;6493:60:3;;-1:-1:-1;;;;;8892:32:47;;6493:60:3;;;8874:51:47;8847:18;;6493:60:3;8728:203:47;6127:437:3;-1:-1:-1;;;;;;;;;;;6225:40:3;;6221:120;;6292:34;;-1:-1:-1;;;6292:34:3;;;;;2811:25:47;;;2784:18;;6292:34:3;2665:177:47;6221:120:3;6354:54;6384:17;6403:4;6354:29;:54::i;5007:213::-;5081:4;-1:-1:-1;;;;;5090:6:3;5073:23;;5069:145;;5174:29;;-1:-1:-1;;;5174:29:3;;;;;;;;;;;28441:2692:44;28577:14;28607:11;28621:58;28631:9;28642:10;28654:9;28665:13;28621:9;:58::i;:::-;28607:72;;28764:23;28790:60;28802:9;28813:10;28825:9;28836:13;28790:11;:60::i;:::-;28860:15;;;:22;;-1:-1:-1;;;;28860:22:44;-1:-1:-1;;;28860:22:44;;;28764:86;-1:-1:-1;28906:13:44;28897:5;:22;;;;;;;;:::i;:::-;;28893:1535;;29065:21;;;;29041;;;:45;29159:14;;;;29140:16;;;;29109:28;;;;:47;;29140:16;29109:47;:::i;:::-;:64;;;;:::i;:::-;29217:16;;29187;;;;29100:73;;-1:-1:-1;29187:55:44;;-1:-1:-1;;;;;29187:16:44;;;;29217;29100:73;29187:29;:55::i;:::-;28893:1535;;;29272:14;29263:5;:23;;;;;;;;:::i;:::-;;29259:1169;;29442:12;:10;:12::i;:::-;-1:-1:-1;;;;;29442:21:44;;29481:10;29509:46;29536:7;29545:9;29509:26;:46::i;:::-;29573:45;29593:13;29608:9;29573:19;:45::i;:::-;29442:190;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29418:21;;;:214;;;29693:21;;;;29743:28;;;;29668:46;;;;29646:19;29887:27;29418:7;29887:18;:27::i;:::-;29880:34;;:4;:34;:::i;:::-;29857:57;;30238:7;:14;;;30219:7;:16;;;30204:12;30197:4;:19;;;;:::i;:::-;:38;;;;:::i;:::-;:55;;;;:::i;:::-;30188:64;;30266:91;30296:14;:52;;30332:16;;-1:-1:-1;;;;;30332:16:44;30296:52;;;30313:16;;;;-1:-1:-1;;;;;30313:16:44;30296:52;30266:16;;;;-1:-1:-1;;;;;30266:16:44;;30350:6;30266:29;:91::i;:::-;29288:1080;;;29259:1169;;;30395:22;;-1:-1:-1;;;30395:22:44;;;;;;;;;;;29259:1169;30516:16;;;;30486;;30620:21;;;;30443:228;;-1:-1:-1;;;;;30516:16:44;;;;30486;;;;30443:228;;;;;;;30546:10;;30570:9;;30593:13;;30655:6;;30443:228;:::i;:::-;;;;;;;;30812:30;:28;:30::i;:::-;-1:-1:-1;;;;;30877:29:44;;1818:19:35;:23;;30877:81:44;;;;-1:-1:-1;30912:23:44;;;:46;;;;;;30877:81;30873:216;;;31056:21;;;;30974:104;;-1:-1:-1;;;30974:104:44;;-1:-1:-1;;;;;30974:43:44;;;;;:104;;31018:10;;31030:9;;31041:13;;30974:104;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30873:216;31098:28;:26;:28::i;:::-;28597:2536;;28441:2692;;;;;;:::o;10473:288:1:-;10554:18;10612:19;:17;:19::i;:::-;10575:34;10593:15;10575:17;:34::i;:::-;:56;;;;:::i;:::-;10554:77;;10641:46;10665:8;10675:11;10641:23;:46::i;:::-;10702:52;;767:14:47;755:27;;737:46;;-1:-1:-1;;;;;10702:52:1;;;;;725:2:47;710:18;10702:52:1;;;;;;;10544:217;10473:288;:::o;12756:::-;12834:18;12892:26;12909:8;12892:16;:26::i;:::-;12855:34;12873:15;12855:17;:34::i;:::-;:63;;;;:::i;:::-;12834:84;;12928:39;12945:8;12955:11;12928:16;:39::i;:::-;12982:55;;;10679:14:47;10667:27;;;10649:46;;10731:27;;10726:2;10711:18;;10704:55;12982::1;;10622:18:47;12982:55:1;;;;;;;12824:220;12756:288;:::o;31409:180:44:-;31550:28;;;;31484:7;;31550:32;;31581:1;;31550:32;:::i;3146:225:18:-;3265:39;;-1:-1:-1;;;3265:39:18;;3289:4;3265:39;;;23768:51:47;-1:-1:-1;;;;;23855:32:47;;;23835:18;;;23828:60;3242:20:18;;3265:15;;;;;;23741:18:47;;3265:39:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3242:62;-1:-1:-1;3314:50:18;3327:5;3334:7;3343:20;3358:5;3242:62;3343:20;:::i;:::-;3314:12;:50::i;32617:177:44:-;32730:6;;:56;;-1:-1:-1;;;32730:56:44;;-1:-1:-1;;;32730:56:44;;;2811:25:47;32662:24:44;;-1:-1:-1;;;;;32730:6:44;;:31;;2784:18:47;;32730:56:44;2665:177:47;33371:473:44;33532:23;;;:34;33505:7;;33532:34;;33528:310;;;33617:38;;;;33582:16;;33617:43;;:102;;33704:15;;33617:102;;;33663:38;;;;33617:102;33582:137;;33765:8;33740:7;:22;;;:33;;;;:::i;:::-;33733:40;;;;;33528:310;-1:-1:-1;33811:16:44;33804:23;;34144:372;34243:12;34433:76;34469:13;34433:76;;;;;;;;;;;;;-1:-1:-1;;;34433:76:44;;;34499:9;34433:35;:76::i;1219:160:18:-;1328:43;;-1:-1:-1;;;;;24326:32:47;;;1328:43:18;;;24308:51:47;24375:18;;;24368:34;;;1301:71:18;;1321:5;;1343:14;;;;;24281:18:47;;1328:43:18;24134:274:47;9071:205:2;9129:30;;3147:66;9186:27;8819:122;5392:441:44;6929:20:2;:18;:20::i;:::-;5548:24:44::1;:22;:24::i;:::-;5582:59;5620:6;5628:12;5582:37;:59::i;:::-;5726:28;:26;:28::i;:::-;5764:62;5800:9;5811:14;5764:35;:62::i;11716:581:1:-:0;-1:-1:-1;;;;;;;;;;;11782:47:1;;11923:21;:19;:21::i;:::-;11885:59;;;;11959:24;11974:8;16952:13;;;;;16866:106;11959:24;11958:25;:58;;;-1:-1:-1;17180:15:1;17169:26;;;;11987:29;11958:58;11954:144;;;12039:48;;-1:-1:-1;;;12039:48:1;;767:14:47;755:27;;12039:48:1;;;737:46:47;710:18;;12039:48:1;593:196:47;11954:144:1;12107:47;2443:4:0;12139:14:1;:12;:14::i;:::-;12107:11;:47::i;:::-;-1:-1:-1;12164:40:1;2443:4:0;12195:8:1;12164:10;:40::i;:::-;-1:-1:-1;;12214:29:1;;-1:-1:-1;;;;;;12253:37:1;;;;-1:-1:-1;11716:581:1:o;5710:138:0:-;5785:18;5798:4;5785:12;:18::i;:::-;3272:16;3283:4;3272:10;:16::i;:::-;5815:26:::1;5827:4;5833:7;5815:11;:26::i;11075:111:1:-:0;11141:38;11173:1;11177;11141:23;:38::i;4429:197:0:-;4517:22;4525:4;4531:7;4517;:22::i;:::-;4512:108;;4562:47;;-1:-1:-1;;;4562:47:0;;-1:-1:-1;;;;;24326:32:47;;4562:47:0;;;24308:51:47;24375:18;;;24368:34;;;24281:18;;4562:47:0;24134:274:47;16023:698:1;-1:-1:-1;;;;;;;;;;;16228:23:1;-1:-1:-1;;;;;;;;;;;3245:45:1;-1:-1:-1;;;16228:23:1;;;;16952:13;;16262:369;;17180:15;17169:26;;;;16309:312;;;16429:15;;;;16411:33;;-1:-1:-1;;;;;16411:33:1;-1:-1:-1;;;16429:15:1;;;;;-1:-1:-1;;;16411:33:1;;;;16309:312;;;16573:33;;;;;;;16309:312;-1:-1:-1;16641:15:1;;:26;;-1:-1:-1;;;;;16677:37:1;-1:-1:-1;;;16641:26:1;;;;;-1:-1:-1;;;;;16677:37:1;;-1:-1:-1;;;16677:37:1;;;;;;;;;;;;;;16023:698::o;8370:720:18:-;8450:18;8478:19;8616:4;8613:1;8606:4;8600:11;8593:4;8587;8583:15;8580:1;8573:5;8566;8561:60;8673:7;8663:176;;8717:4;8711:11;8762:16;8759:1;8754:3;8739:40;8808:16;8803:3;8796:29;8663:176;-1:-1:-1;;8916:1:18;8910:8;8866:16;;-1:-1:-1;8942:15:18;;:68;;8994:11;9009:1;8994:16;;8942:68;;;-1:-1:-1;;;;;8960:26:18;;;:31;8942:68;8938:146;;;9033:40;;-1:-1:-1;;;9033:40:18;;-1:-1:-1;;;;;8892:32:47;;9033:40:18;;;8874:51:47;8847:18;;9033:40:18;8728:203:47;7105:475:1;7191:4;-1:-1:-1;;;;;;;;;;;7314:4:1;7310:216;;7386:1;7360:14;:12;:14::i;:::-;-1:-1:-1;;;;;7360:28:1;;7356:114;;7415:40;;-1:-1:-1;;;7415:40:1;;;;;;;;;;;7356:114;7483:22;;;:32;;-1:-1:-1;;;;;;7483:32:1;-1:-1:-1;;;;;7483:32:1;;;;;7310:216;7542:31;7559:4;7565:7;7542:16;:31::i;7631:376::-;7718:4;-1:-1:-1;;;;;;;;;;;7841:26:1;;:55;;;;;7882:14;:12;:14::i;:::-;-1:-1:-1;;;;;7871:25:1;:7;-1:-1:-1;;;;;7871:25:1;;7841:55;7837:115;;;7919:22;;;7912:29;;-1:-1:-1;;;;;;7912:29:1;;;7837:115;7968:32;7986:4;7992:7;7968:17;:32::i;2264:344:15:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:15;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;14296:213:28:-;14352:6;14382:16;14374:24;;14370:103;;;14421:41;;-1:-1:-1;;;14421:41:28;;14452:2;14421:41;;;24873:36:47;24925:18;;;24918:34;;;24846:18;;14421:41:28;24692:266:47;14370:103:28;-1:-1:-1;14496:5:28;14296:213::o;15237:632:1:-;-1:-1:-1;;;;;;;;;;;15326:47:1;15454:21;:19;:21::i;:::-;15486:33;;15529:44;;;-1:-1:-1;;;15529:44:1;-1:-1:-1;;;;;;15529:44:1;;;-1:-1:-1;;;;;15486:33:1;;15529:44;;;;15429:46;-1:-1:-1;15685:27:1;;-1:-1:-1;15429:46:1;16952:13;;;;;16866:106;15685:27;15681:182;;;15822:30;;;;;;;15316:553;;15237:632;;:::o;13796:1249::-;13870:6;13888:19;13910;:17;:19::i;:::-;13888:41;;14859:12;14848:23;;:8;:23;;;:190;;15015:23;15030:8;15015:12;:23;:::i;:::-;14848:190;;;14897:51;;;;10004:6;14897:8;:51::i;5084:380:18:-;5199:47;;;-1:-1:-1;;;;;24326:32:47;;5199:47:18;;;24308:51:47;24375:18;;;;24368:34;;;5199:47:18;;;;;;;;;;24281:18:47;;;;5199:47:18;;;;;;;;-1:-1:-1;;;;;5199:47:18;-1:-1:-1;;;5199:47:18;;;5262:44;5214:13;5199:47;5262:23;:44::i;:::-;5257:201;;5349:43;;-1:-1:-1;;;;;24326:32:47;;;5349:43:18;;;24308:51:47;5389:1:18;24375:18:47;;;24368:34;5322:71:18;;5342:5;;5364:13;;;;;24281:18:47;;5349:43:18;24134:274:47;5322:71:18;5407:40;5427:5;5434:12;5407:19;:40::i;5184:337:29:-;5336:12;5360:19;5382:42;5398:20;5420:3;5382:15;:42::i;:::-;5360:64;;5458:20;5480:6;5488:25;5507:5;5488:18;:25::i;:::-;5441:73;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5434:80;;;5184:337;;;;;:::o;7082:141:2:-;7149:17;:15;:17::i;:::-;7144:73;;7189:17;;-1:-1:-1;;;7189:17:2;;;;;;;;;;;2970:67:3;6929:20:2;:18;:20::i;3416:222:1:-;6929:20:2;:18;:20::i;:::-;3549:82:1::1;3597:12;3611:19;3549:47;:82::i;934:489:38:-:0;6929:20:2;:18;:20::i;6055:246:44:-;6929:20:2;:18;:20::i;:::-;6179:6:44::1;:40:::0;;-1:-1:-1;;;;;;6179:40:44::1;-1:-1:-1::0;;;;;6179:40:44;::::1;;::::0;;6229:28:::1;6247:9:::0;6229:17:::1;:28::i;:::-;-1:-1:-1::0;6267:15:44::1;:27:::0;6055:246::o;7318:387:0:-;7395:4;-1:-1:-1;;;;;;;;;;;7485:22:0;7493:4;7499:7;7485;:22::i;:::-;7480:219;;7523:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7523:31:0;;;;;;;;;:38;;-1:-1:-1;;7523:38:0;7557:4;7523:38;;;7607:12;966:10:4;;887:96;7607:12:0;-1:-1:-1;;;;;7580:40:0;7598:7;-1:-1:-1;;;;;7580:40:0;7592:4;7580:40;;;;;;;;;;7641:4;7634:11;;;;;7480:219;7683:5;7676:12;;;;;7942:388;8020:4;-1:-1:-1;;;;;;;;;;;8109:22:0;8117:4;8123:7;8109;:22::i;:::-;8105:219;;;8181:5;8147:14;;;;;;;;;;;-1:-1:-1;;;;;8147:31:0;;;;;;;;;;:39;;-1:-1:-1;;8147:39:0;;;8205:40;966:10:4;;8147:14:0;;8205:40;;8181:5;8205:40;8266:4;8259:11;;;;;1671:281:15;1748:17;-1:-1:-1;;;;;1748:29:15;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:15;;-1:-1:-1;;;;;8892:32:47;;1805:47:15;;;8874:51:47;8847:18;;1805:47:15;8728:203:47;1744:119:15;-1:-1:-1;;;;;;;;;;;1872:73:15;;-1:-1:-1;;;;;;1872:73:15;-1:-1:-1;;;;;1872:73:15;;;;;;;;;;1671:281::o;3916:253:19:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:19;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;6113:122:15:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:15;;;;;;;;;;;5617:111:27;5675:7;5312:5;;;5709;;;5311:36;5306:42;;5701:20;5071:294;9592:480:18;9675:4;9691:12;9713:18;9741:19;9875:4;9872:1;9865:4;9859:11;9852:4;9846;9842:15;9839:1;9832:5;9825;9820:60;9809:71;;9907:16;9893:30;;9957:1;9951:8;9936:23;;9985:7;:80;;;;-1:-1:-1;9997:15:18;;:67;;10048:11;10063:1;10048:16;9997:67;;;-1:-1:-1;;;;;;;;;;10015:26:18;;:30;;;9592:480::o;6928:295:29:-;7057:27;;7029:12;;7057:31;7053:164;;7133:3;7111:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;7104:38;;;;7053:164;7197:3;7180:26;;;;;;;;:::i;3145:218::-;3207:12;3267:47;-1:-1:-1;;;;;3287:26:29;;;;;3267:19;:47::i;:::-;3323:31;3351:1;3343:10;;3323:31;;;:19;:31::i;:::-;3250:106;;;;;;;;26954:19:47;;;-1:-1:-1;;;;;;27003:41:47;26998:2;26989:12;;26982:63;27070:2;27061:12;;26799:280;3250:106:29;;;;;;;;;;;;;3231:125;;3145:218;;;:::o;8485:120:2:-;8535:4;8558:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8558:40:2;;;;;;-1:-1:-1;8485:120:2:o;3644:468:1:-;6929:20:2;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;3894:33:1;::::1;3890:115;;3950:44;::::0;-1:-1:-1;;;3950:44:1;;3991:1:::1;3950:44;::::0;::::1;8874:51:47::0;8847:18;;3950:44:1::1;8728:203:47::0;3890:115:1::1;4014:30:::0;;-1:-1:-1;;;;;4014:30:1::1;-1:-1:-1::0;;;4014:30:1::1;::::0;::::1;;;::::0;;4054:51:::1;-1:-1:-1::0;4085:19:1;4054:10:::1;:51::i;4437:582:19:-:0;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;4605:408::-;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:19;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:19;;-1:-1:-1;;;;;8892:32:47;;4933:24:19;;;8874:51:47;8847:18;;4933:24:19;8728:203:47;4853:119:19;-1:-1:-1;4992:10:19;4985:17;;897:1306:29;965:7;1008:9;1028:7;1020:16;;1008:28;;1088:1;-1:-1:-1;;;;;1088:70:29;1084:74;;1182:1;-1:-1:-1;;;1182:9:29;1177:1;:15;1196:66;1176:86;1172:90;;1286:1;1290:5;1286:9;1281:1;:15;1300:66;1280:86;1276:90;;1390:1;1394:5;1390:9;1385:1;:15;1404:66;1384:86;1380:90;;1494:1;1498:4;1494:8;1489:1;:14;1507:66;1488:85;1484:89;;1597:1;1601:4;1597:8;1592:1;:14;1610:66;1591:85;1587:89;;1717:9;1804:1;1730;1734:66;1730:70;1729:76;;;;;:::i;:::-;;1906:1;1836:66;1832:70;;1831:76;2008:1;1938:66;1934:70;;1933:76;2037:5;2032:11;2047:4;2031:20;2027:24;;;2054:66;2027:93;;;-1:-1:-1;;;897:1306:29:o;5559:434:19:-;5690:17;;:21;5686:301;;5894:10;5888:17;5881:4;5869:10;5865:21;5858:48;5686:301;5957:19;;-1:-1:-1;;;5957:19:19;;;;;;;;;;;14:286:47;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:47;;209:43;;199:71;;266:1;263;256:12;794:127;855:10;850:3;846:20;843:1;836:31;886:4;883:1;876:15;910:4;907:1;900:15;926:745;968:5;1021:3;1014:4;1006:6;1002:17;998:27;988:55;;1039:1;1036;1029:12;988:55;1079:6;1066:20;-1:-1:-1;;;;;1101:6:47;1098:30;1095:56;;;1131:18;;:::i;:::-;1200:2;1194:9;1292:2;1254:17;;-1:-1:-1;;1250:31:47;;;1283:2;1246:40;1242:54;1230:67;;-1:-1:-1;;;;;1312:34:47;;1348:22;;;1309:62;1306:88;;;1374:18;;:::i;:::-;1410:2;1403:22;1434;;;1475:19;;;1496:4;1471:30;1468:39;-1:-1:-1;1465:59:47;;;1520:1;1517;1510:12;1465:59;1584:6;1577:4;1569:6;1565:17;1558:4;1550:6;1546:17;1533:58;1639:1;1611:19;;;1632:4;1607:30;1600:41;;;;1615:6;926:745;-1:-1:-1;;;926:745:47:o;1676:139::-;-1:-1:-1;;;;;1759:31:47;;1749:42;;1739:70;;1805:1;1802;1795:12;1820:840;1939:6;1947;1955;1963;1971;2024:3;2012:9;2003:7;1999:23;1995:33;1992:53;;;2041:1;2038;2031:12;1992:53;2086:23;;;-1:-1:-1;2206:2:47;2191:18;;2178:32;;-1:-1:-1;2287:2:47;2272:18;;2259:32;-1:-1:-1;;;;;2303:30:47;;2300:50;;;2346:1;2343;2336:12;2300:50;2369:49;2410:7;2401:6;2390:9;2386:22;2369:49;:::i;:::-;2359:59;;;2470:2;2459:9;2455:18;2442:32;2483:41;2516:7;2483:41;:::i;:::-;1820:840;;;;-1:-1:-1;1820:840:47;;2623:3;2608:19;2595:33;;1820:840;-1:-1:-1;;1820:840:47:o;2847:554::-;2933:6;2941;2949;3002:2;2990:9;2981:7;2977:23;2973:32;2970:52;;;3018:1;3015;3008:12;2970:52;3063:23;;;-1:-1:-1;3183:2:47;3168:18;;3155:32;;-1:-1:-1;3264:2:47;3249:18;;3236:32;-1:-1:-1;;;;;3280:30:47;;3277:50;;;3323:1;3320;3313:12;3277:50;3346:49;3387:7;3378:6;3367:9;3363:22;3346:49;:::i;:::-;3336:59;;;2847:554;;;;;:::o;3406:226::-;3465:6;3518:2;3506:9;3497:7;3493:23;3489:32;3486:52;;;3534:1;3531;3524:12;3486:52;-1:-1:-1;3579:23:47;;3406:226;-1:-1:-1;3406:226:47:o;3819:375::-;3887:6;3895;3948:2;3936:9;3927:7;3923:23;3919:32;3916:52;;;3964:1;3961;3954:12;3916:52;4009:23;;;-1:-1:-1;4108:2:47;4093:18;;4080:32;4121:41;4080:32;4121:41;:::i;:::-;4181:7;4171:17;;;3819:375;;;;;:::o;4199:675::-;4294:6;4302;4310;4318;4371:3;4359:9;4350:7;4346:23;4342:33;4339:53;;;4388:1;4385;4378:12;4339:53;4433:23;;;-1:-1:-1;4553:2:47;4538:18;;4525:32;;-1:-1:-1;4634:2:47;4619:18;;4606:32;-1:-1:-1;;;;;4650:30:47;;4647:50;;;4693:1;4690;4683:12;4647:50;4716:49;4757:7;4748:6;4737:9;4733:22;4716:49;:::i;:::-;4199:675;;;;-1:-1:-1;4706:59:47;;4838:2;4823:18;4810:32;;-1:-1:-1;;;4199:675:47:o;4879:463::-;4956:6;4964;5017:2;5005:9;4996:7;4992:23;4988:32;4985:52;;;5033:1;5030;5023:12;4985:52;5072:9;5059:23;5091:39;5124:5;5091:39;:::i;:::-;5149:5;-1:-1:-1;5205:2:47;5190:18;;5177:32;-1:-1:-1;;;;;5221:30:47;;5218:50;;;5264:1;5261;5254:12;5218:50;5287:49;5328:7;5319:6;5308:9;5304:22;5287:49;:::i;:::-;5277:59;;;4879:463;;;;;:::o;5527:704::-;5622:6;5630;5638;5646;5699:3;5687:9;5678:7;5674:23;5670:33;5667:53;;;5716:1;5713;5706:12;5667:53;5755:9;5742:23;5774:39;5807:5;5774:39;:::i;:::-;5832:5;-1:-1:-1;5910:2:47;5895:18;;5882:32;;-1:-1:-1;6013:2:47;5998:18;;5985:32;;-1:-1:-1;6094:2:47;6079:18;;6066:32;-1:-1:-1;;;;;6110:30:47;;6107:50;;;6153:1;6150;6143:12;6107:50;6176:49;6217:7;6208:6;6197:9;6193:22;6176:49;:::i;:::-;6166:59;;;5527:704;;;;;;;:::o;6236:255::-;6295:6;6348:2;6336:9;6327:7;6323:23;6319:32;6316:52;;;6364:1;6361;6354:12;6316:52;6403:9;6390:23;6422:39;6455:5;6422:39;:::i;6496:280::-;6554:6;6607:2;6595:9;6586:7;6582:23;6578:32;6575:52;;;6623:1;6620;6613:12;6575:52;6662:9;6649:23;6712:14;6705:5;6701:26;6694:5;6691:37;6681:65;;6742:1;6739;6732:12;6781:854;6885:6;6893;6901;6909;6917;6970:3;6958:9;6949:7;6945:23;6941:33;6938:53;;;6987:1;6984;6977:12;6938:53;7026:9;7013:23;7045:39;7078:5;7045:39;:::i;:::-;7103:5;-1:-1:-1;7160:2:47;7145:18;;7132:32;7173:41;7132:32;7173:41;:::i;:::-;7233:7;-1:-1:-1;7313:2:47;7298:18;;7285:32;;-1:-1:-1;7416:2:47;7401:18;;7388:32;;-1:-1:-1;7497:3:47;7482:19;;7469:33;-1:-1:-1;;;;;7514:30:47;;7511:50;;;7557:1;7554;7547:12;7511:50;7580:49;7621:7;7612:6;7601:9;7597:22;7580:49;:::i;:::-;7570:59;;;6781:854;;;;;;;;:::o;7640:974::-;7752:6;7760;7768;7776;7784;7792;7845:3;7833:9;7824:7;7820:23;7816:33;7813:53;;;7862:1;7859;7852:12;7813:53;7901:9;7888:23;7920:39;7953:5;7920:39;:::i;:::-;7978:5;-1:-1:-1;8035:2:47;8020:18;;8007:32;8048:41;8007:32;8048:41;:::i;:::-;8108:7;-1:-1:-1;8188:2:47;8173:18;;8160:32;;-1:-1:-1;8291:2:47;8276:18;;8263:32;;-1:-1:-1;8372:3:47;8357:19;;8344:33;-1:-1:-1;;;;;8389:30:47;;8386:50;;;8432:1;8429;8422:12;8386:50;8455:49;8496:7;8487:6;8476:9;8472:22;8455:49;:::i;:::-;7640:974;;;;-1:-1:-1;7640:974:47;;;;;8577:3;8562:19;;;8549:33;;-1:-1:-1;;;7640:974:47:o;8936:516::-;9037:5;9031:12;9024:20;9017:28;9012:3;9005:41;9109:4;9102:5;9098:16;9092:23;9085:31;9078:39;9071:4;9066:3;9062:14;9055:63;9181:4;9174:5;9170:16;9164:23;9157:31;9150:39;9143:4;9138:3;9134:14;9127:63;9253:4;9246:5;9242:16;9236:23;9229:31;9222:39;9215:4;9210:3;9206:14;9199:63;9325:4;9318:5;9314:16;9308:23;9301:31;9294:39;9287:4;9282:3;9278:14;9271:63;9383:4;9376:5;9372:16;9366:23;9359:4;9354:3;9350:14;9343:47;9439:4;9432:5;9428:16;9422:23;9415:4;9410:3;9406:14;9399:47;;;8936:516::o;9457:1017::-;-1:-1:-1;;;;;9947:32:47;;;9929:51;;10016:32;;;10011:2;9996:18;;9989:60;10085:32;;10080:2;10065:18;;10058:60;10161:14;;10154:22;10149:2;10134:18;;10127:50;9916:3;9901:19;;10186:62;10243:3;10228:19;;10220:6;10186:62;:::i;:::-;10279:3;10264:19;;10257:35;;;;10323:3;10308:19;;10301:35;;;;10367:3;10352:19;;10345:35;;;;10411:3;10396:19;;10389:35;10455:3;10440:19;;;10433:35;9457:1017;;-1:-1:-1;;;;;9457:1017:47:o;10770:1066::-;10988:13;;-1:-1:-1;;;;;8685:31:47;8673:44;;10956:3;10941:19;;11060:4;11052:6;11048:17;11042:24;11075:54;11123:4;11112:9;11108:20;11094:12;-1:-1:-1;;;;;8685:31:47;8673:44;;8619:104;11075:54;;11178:4;11170:6;11166:17;11160:24;11193:56;11243:4;11232:9;11228:20;11212:14;-1:-1:-1;;;;;8685:31:47;8673:44;;8619:104;11193:56;;11298:4;11290:6;11286:17;11280:24;11313:53;11360:4;11349:9;11345:20;11329:14;375:13;368:21;356:34;;305:91;11313:53;;11415:4;11407:6;11403:17;11397:24;11430:71;11495:4;11484:9;11480:20;11464:14;11430:71;:::i;:::-;-1:-1:-1;11559:4:47;11547:17;;11541:24;11532:6;11517:22;;11510:56;11624:4;11612:17;;11606:24;11597:6;11582:22;;11575:56;11689:4;11677:17;;11671:24;11662:6;11647:22;;11640:56;11754:6;11742:19;;11736:26;11727:6;11712:22;;11705:58;11821:6;11809:19;;;11803:26;11794:6;11779:22;;;11772:58;10770:1066;:::o;11841:289::-;11883:3;11921:5;11915:12;11948:6;11943:3;11936:19;12004:6;11997:4;11990:5;11986:16;11979:4;11974:3;11970:14;11964:47;12056:1;12049:4;12040:6;12035:3;12031:16;12027:27;12020:38;12119:4;12112:2;12108:7;12103:2;12095:6;12091:15;12087:29;12082:3;12078:39;12074:50;12067:57;;;11841:289;;;;:::o;12135:220::-;12284:2;12273:9;12266:21;12247:4;12304:45;12345:2;12334:9;12330:18;12322:6;12304:45;:::i;12360:463::-;12437:6;12445;12498:2;12486:9;12477:7;12473:23;12469:32;12466:52;;;12514:1;12511;12504:12;12466:52;12554:9;12541:23;-1:-1:-1;;;;;12579:6:47;12576:30;12573:50;;;12619:1;12616;12609:12;12573:50;12642:49;12683:7;12674:6;12663:9;12659:22;12642:49;:::i;:::-;12632:59;;;12741:2;12730:9;12726:18;12713:32;12754:39;12787:5;12754:39;:::i;13051:524::-;13128:6;13136;13144;13197:2;13185:9;13176:7;13172:23;13168:32;13165:52;;;13213:1;13210;13203:12;13165:52;13258:23;;;-1:-1:-1;13357:2:47;13342:18;;13329:32;13370:41;13329:32;13370:41;:::i;:::-;13430:7;-1:-1:-1;13489:2:47;13474:18;;13461:32;13502:41;13461:32;13502:41;:::i;:::-;13562:7;13552:17;;;13051:524;;;;;:::o;13580:824::-;13683:6;13691;13699;13707;13715;13768:3;13756:9;13747:7;13743:23;13739:33;13736:53;;;13785:1;13782;13775:12;13736:53;13824:9;13811:23;13843:39;13876:5;13843:39;:::i;:::-;13901:5;-1:-1:-1;13979:2:47;13964:18;;13951:32;;-1:-1:-1;14082:2:47;14067:18;;14054:32;;-1:-1:-1;14163:2:47;14148:18;;14135:32;-1:-1:-1;;;;;14179:30:47;;14176:50;;;14222:1;14219;14212:12;14176:50;14245:49;14286:7;14277:6;14266:9;14262:22;14245:49;:::i;:::-;13580:824;;;;-1:-1:-1;13580:824:47;;14367:3;14352:19;14339:33;;13580:824;-1:-1:-1;;;13580:824:47:o;14641:127::-;14702:10;14697:3;14693:20;14690:1;14683:31;14733:4;14730:1;14723:15;14757:4;14754:1;14747:15;14773:339;14916:2;14901:18;;14949:1;14938:13;;14928:144;;14994:10;14989:3;14985:20;14982:1;14975:31;15029:4;15026:1;15019:15;15057:4;15054:1;15047:15;14928:144;15081:25;;;14773:339;:::o;15415:118::-;15501:5;15494:13;15487:21;15480:5;15477:32;15467:60;;15523:1;15520;15513:12;15538:962;15642:6;15650;15658;15666;15674;15682;15735:3;15723:9;15714:7;15710:23;15706:33;15703:53;;;15752:1;15749;15742:12;15703:53;15797:23;;;-1:-1:-1;15917:2:47;15902:18;;15889:32;;-1:-1:-1;15998:2:47;15983:18;;15970:32;-1:-1:-1;;;;;16014:30:47;;16011:50;;;16057:1;16054;16047:12;16011:50;16080:49;16121:7;16112:6;16101:9;16097:22;16080:49;:::i;:::-;16070:59;;;16181:2;16170:9;16166:18;16153:32;16194:30;16216:7;16194:30;:::i;:::-;16243:7;-1:-1:-1;16302:3:47;16287:19;;16274:33;16316:30;16274:33;16316:30;:::i;:::-;16365:7;-1:-1:-1;16424:3:47;16409:19;;16396:33;16438:30;16396:33;16438:30;:::i;:::-;16487:7;16477:17;;;15538:962;;;;;;;;:::o;16505:245::-;16572:6;16625:2;16613:9;16604:7;16600:23;16596:32;16593:52;;;16641:1;16638;16631:12;16593:52;16673:9;16667:16;16692:28;16714:5;16692:28;:::i;16755:127::-;16816:10;16811:3;16807:20;16804:1;16797:31;16847:4;16844:1;16837:15;16871:4;16868:1;16861:15;16887:128;16954:9;;;16975:11;;;16972:37;;;16989:18;;:::i;17020:546::-;17116:6;17176:2;17164:9;17155:7;17151:23;17147:32;17191:2;17188:22;;;17206:1;17203;17196:12;17188:22;-1:-1:-1;17275:2:47;17269:9;17317:2;17305:15;;-1:-1:-1;;;;;17335:34:47;;17371:22;;;17332:62;17329:88;;;17397:18;;:::i;:::-;17433:2;17426:22;17489:16;;17514:21;;-1:-1:-1;17521:6:47;17020:546;-1:-1:-1;17020:546:47:o;17571:603::-;17858:6;17847:9;17840:25;17901:6;17896:2;17885:9;17881:18;17874:34;17944:3;17939:2;17928:9;17924:18;17917:31;17821:4;17965:46;18006:3;17995:9;17991:19;17983:6;17965:46;:::i;:::-;-1:-1:-1;;;;;18047:32:47;;;;18042:2;18027:18;;18020:60;-1:-1:-1;18111:3:47;18096:19;;18089:35;;;;18067:3;18140:19;;;18133:35;18047:32;17957:54;-1:-1:-1;;;17571:603:47:o;18179:168::-;18252:9;;;18283;;18300:15;;;18294:22;;18280:37;18270:71;;18321:18;;:::i;18352:125::-;18417:9;;;18438:10;;;18435:36;;;18451:18;;:::i;18820:360::-;19023:6;19012:9;19005:25;19066:6;19061:2;19050:9;19046:18;19039:34;19109:2;19104;19093:9;19089:18;19082:30;18986:4;19129:45;19170:2;19159:9;19155:18;19147:6;19129:45;:::i;19185:431::-;19414:6;19403:9;19396:25;19457:6;19452:2;19441:9;19437:18;19430:34;19500:3;19495:2;19484:9;19480:18;19473:31;19377:4;19521:46;19562:3;19551:9;19547:19;19539:6;19521:46;:::i;:::-;19513:54;;19603:6;19598:2;19587:9;19583:18;19576:34;19185:431;;;;;;;:::o;20059:601::-;20344:6;20333:9;20326:25;20387:6;20382:2;20371:9;20367:18;20360:34;20430:3;20425:2;20414:9;20410:18;20403:31;20307:4;20451:46;20492:3;20481:9;20477:19;20469:6;20451:46;:::i;:::-;20528:2;20513:18;;20506:34;;;;-1:-1:-1;20571:3:47;20556:19;;20549:35;;;;-1:-1:-1;;;;;20621:32:47;20641:3;20600:19;;;20593:61;20443:54;20059:601;-1:-1:-1;;;20059:601:47:o;20879:259::-;20949:6;21002:2;20990:9;20981:7;20977:23;20973:32;20970:52;;;21018:1;21015;21008:12;20970:52;21050:9;21044:16;21069:39;21102:5;21069:39;:::i;21143:211::-;21184:3;21222:5;21216:12;21266:6;21259:4;21252:5;21248:16;21243:3;21237:36;21328:1;21292:16;;21317:13;;;-1:-1:-1;21292:16:47;;21143:211;-1:-1:-1;21143:211:47:o;21359:431::-;21627:26;21623:31;21614:6;21610:2;21606:15;21602:53;21597:3;21590:66;21686:6;21681:2;21676:3;21672:12;21665:28;21723:6;21718:2;21713:3;21709:12;21702:28;21572:3;21746:38;21780:2;21775:3;21771:12;21763:6;21746:38;:::i;22171:184::-;22241:6;22294:2;22282:9;22273:7;22269:23;22265:32;22262:52;;;22310:1;22307;22300:12;22262:52;-1:-1:-1;22333:16:47;;22171:184;-1:-1:-1;22171:184:47:o;22548:503::-;22805:6;22794:9;22787:25;22848:6;22843:2;22832:9;22828:18;22821:34;22891:3;22886:2;22875:9;22871:18;22864:31;22768:4;22912:46;22953:3;22942:9;22938:19;22930:6;22912:46;:::i;:::-;22989:2;22974:18;;22967:34;;;;-1:-1:-1;23032:3:47;23017:19;23010:35;22904:54;22548:503;-1:-1:-1;;;22548:503:47:o;23056:179::-;23155:14;23124:22;;;23148;;;23120:51;;23183:23;;23180:49;;;23209:18;;:::i;23240:127::-;23301:10;23296:3;23292:20;23289:1;23282:31;23332:4;23329:1;23322:15;23356:4;23353:1;23346:15;23372:217;23412:1;23438;23428:132;;23482:10;23477:3;23473:20;23470:1;23463:31;23517:4;23514:1;23507:15;23545:4;23542:1;23535:15;23428:132;-1:-1:-1;23574:9:47;;23372:217::o;24963:182::-;25064:14;25057:22;;;25033;;;25029:51;;25092:24;;25089:50;;;25119:18;;:::i;25437:333::-;25658:3;25683:81;25708:55;25733:29;25758:3;25750:6;25733:29;:::i;:::-;25725:6;25708:55;:::i;:::-;25700:6;25683:81;:::i;25775:189::-;25904:3;25929:29;25954:3;25946:6;25929:29;:::i;25969:477::-;-1:-1:-1;;;26325:3:47;26318:16;26300:3;26353:37;26387:1;26382:3;26378:11;26370:6;26353:37;:::i;:::-;-1:-1:-1;;;26399:15:47;;26438:1;26430:10;;25969:477;-1:-1:-1;;;25969:477:47:o;26451:343::-;26681:3;26709:29;26734:3;26726:6;26709:29;:::i","linkReferences":{},"immutableReferences":{"1500":[{"start":8540,"length":32},{"start":8581,"length":32},{"start":8901,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","OO_ANCILLARY_DATA_LIMIT()":"4ccb56f5","TOO_EARLY_RESPONSE()":"ff8c1a8c","UPGRADE_ADMIN_ROLE()":"8ffc2120","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","acceptDefaultAdminTransfer()":"cefc1429","ancillaryBytesLimit()":"c371dda7","beginDefaultAdminTransfer(address)":"634e93da","cancelDefaultAdminTransfer()":"d602b9fd","changeDefaultAdminDelay(uint48)":"649a5ec7","defaultAdmin()":"84ef8ffc","defaultAdminDelay()":"cc8463c8","defaultAdminDelayIncreaseWait()":"022d63fb","defaultLiveness()":"fe4e1983","disputePrice(address,bytes32,uint256,bytes)":"fba7f1e3","disputePriceFor(address,address,bytes32,uint256,bytes)":"76c7823f","finder()":"b9a3c84c","getCurrentTime()":"29cb924d","getRequest(address,bytes32,uint256,bytes)":"a9904f9b","getRoleAdmin(bytes32)":"248a9ca3","getState(address,bytes32,uint256,bytes)":"ba4b930c","grantRole(bytes32,address)":"2f2ff15d","hasPrice(address,bytes32,uint256,bytes)":"bc58ccaa","hasRole(bytes32,address)":"91d14854","initialize(uint256,address,address)":"b4988fd0","owner()":"8da5cb5b","pendingDefaultAdmin()":"cf6eefb7","pendingDefaultAdminDelay()":"a1eda53c","proposePrice(address,bytes32,uint256,bytes,int256)":"b8b4f908","proposePriceFor(address,address,bytes32,uint256,bytes,int256)":"7c82288f","proxiableUUID()":"52d1902d","renounceRole(bytes32,address)":"36568abe","requestPrice(bytes32,uint256,bytes,address,uint256)":"11df92f1","requests(bytes32)":"9d866985","revokeRole(bytes32,address)":"d547741f","rollbackDefaultAdminDelay()":"0aa6220b","setBond(bytes32,uint256,bytes,uint256)":"ad5a755a","setCallbacks(bytes32,uint256,bytes,bool,bool,bool)":"f327b075","setCustomLiveness(bytes32,uint256,bytes,uint256)":"473c45fe","setEventBased(bytes32,uint256,bytes)":"120698af","setRefundOnDispute(bytes32,uint256,bytes)":"91f58dcb","settle(address,bytes32,uint256,bytes)":"5e9a79a9","settleAndGetPrice(bytes32,uint256,bytes)":"53b59239","stampAncillaryData(bytes,address)":"af5d2f39","supportsInterface(bytes4)":"01ffc9a7","upgradeToAndCall(address,bytes)":"4f1ef286"}}},"OptimisticRequester":{"abi":[{"type":"function","name":"priceDisputed","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"refund","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"priceProposed","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"priceSettled","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"price","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"refund\",\"type\":\"uint256\"}],\"name\":\"priceDisputed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"priceProposed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"int256\",\"name\":\"price\",\"type\":\"int256\"}],\"name\":\"priceSettled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"this contract does _not_ work with ERC777 collateral currencies or any others that call into the receiver on transfer(). Using an ERC777 token would allow a user to maliciously grief other participants (while also losing money themselves).\",\"kind\":\"dev\",\"methods\":{\"priceDisputed(bytes32,uint256,bytes,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier being requested.\",\"refund\":\"refund received in the case that refundOnDispute was enabled.\",\"timestamp\":\"timestamp of the price being requested.\"}},\"priceProposed(bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier being requested.\",\"timestamp\":\"timestamp of the price being requested.\"}},\"priceSettled(bytes32,uint256,bytes,int256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier being requested.\",\"price\":\"price that was resolved by the escalation process.\",\"timestamp\":\"timestamp of the price being requested.\"}}},\"title\":\"Optimistic Requester.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"priceDisputed(bytes32,uint256,bytes,uint256)\":{\"notice\":\"Callback for disputes.\"},\"priceProposed(bytes32,uint256,bytes)\":{\"notice\":\"Callback for proposals.\"},\"priceSettled(bytes32,uint256,bytes,int256)\":{\"notice\":\"Callback for settlement.\"}},\"notice\":\"Optional interface that requesters can implement to receive callbacks.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol\":\"OptimisticRequester\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x85a70e2b1b65e9ba456add364d22b97eb9944083df1c39c0b4bd6a4b5aa386a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d32a33be6ca4d8e89b9e82e3f9cec7a6c4e040534152313ff55da85b8f193059\",\"dweb:/ipfs/QmeR55L8t2A8xZ1nvT5y4yVWfFbbmpaGAtGBMz3GGNpuyP\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol\":{\"keccak256\":\"0x2922ed589f7063a685dffc9297f8b669c1e86f2fde9078c08d8bff079cf636a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bd42676681a1c4563f61a767bfbc50ef207544a3d6eee9aa66830cc15ccb679\",\"dweb:/ipfs/QmRMCKEXNWJq1EdCjNQtTXf9tuppnyGtaiBCiNk3TYVcK1\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x6694b63ddb2c59bbe341c846171798350e8f72fa02189fcdeaca864e28b54e1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d945d33e2189ac4e531e4ed228f59ca957b3898c4f9051f4b8c7ae44d72b23a\",\"dweb:/ipfs/QmRcEwubTe3xyXxthijs5fVzEgUFSxeddjd5PGfhBnkunX\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol\":{\"keccak256\":\"0x956d6404c7b61b920a9ccbc9918f94a2bd3004de3dd13310995eda5bc17f1ead\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c12dc67a285548d455683db60f1ed845c03ac3c27f8f24f905defd3c54601406\",\"dweb:/ipfs/QmXDaxKsnq6RxH44VPSqxjLyygdXn3GR1o6W9pr2iXzjZq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol\":{\"keccak256\":\"0x21529ba6918f994ec44fb97cef2b717d730268e911a4e626f3e425a4394f7bae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10949be539eb61e5ea8996cc93f21be61949c16a1b717adc2b3f8f099c1e1feb\",\"dweb:/ipfs/QmagATozhFXBUVTLaiHWyqVPgew9N1x18V6hBF46AZPeLw\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508\",\"dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/protocol/packages/core/contracts/common/implementation/AncillaryData.sol\":{\"keccak256\":\"0x8ff33ac32d3e6de25de9e0ac2c0ff9a621f187fa97e9ee84092b327471baa3ce\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0bbaed49756e8cf7ef405e132f441cd7a735ac6186a200b0179147e7d137b74a\",\"dweb:/ipfs/QmeSBJX5a61LZPxbkUKS2NF4LSxemgDwjD65fCAmyP7PX2\"]},\"lib/protocol/packages/core/contracts/common/implementation/Lockable.sol\":{\"keccak256\":\"0x41d78fcce54598ad5f26bc0b778c0f4fedbd836401625e49e736979f69a87ef0\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://4ce111bb50441ef5125e7d42284f6debbc17fd589515d7b8cede7e9d1d5f0ede\",\"dweb:/ipfs/QmaXiXACWVEDDHoCHNXdVBoNpf8QNHkUZ1kf5MfbxfL6jj\"]},\"lib/protocol/packages/core/contracts/data-verification-mechanism/implementation/Constants.sol\":{\"keccak256\":\"0xe40957105a9240c6bcb9753fd0011fe9f382c437cd6771c57bf7a96f8ceb9c84\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://cbf0d25e841b1f5c4022d09fb29220cb428139443cb29c4ab8dbfff71dffcc05\",\"dweb:/ipfs/QmSVVr5wH1tZi6WmKyuy1K8yS6JN4DeK5kWaZpPKtXiqkK\"]},\"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/FinderInterface.sol\":{\"keccak256\":\"0x9166fbfe08e954eb86d33c114fcde7ce4fd0dda5d9d28b31210582bfc769fa86\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e611e12bcaaebfdf65b67c566ff1d34708e757f01a445bd87c55862e89383b81\",\"dweb:/ipfs/QmYNSq5oopTShdS6j4VWKqoLxmQSRKmWebCxw6K4LfmKrf\"]},\"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/IdentifierWhitelistInterface.sol\":{\"keccak256\":\"0x9ae86a30dd1a8c03fb2c6d27be570bb30c4c0b13ac63cde8620b7e4b51d88dc9\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://a71d2aff48e075ecab56a9c9767775d1d77e04ec9191fed124e71003220549e3\",\"dweb:/ipfs/QmYPWsZXro6fzqpZY6UxQ5X8znEXfLp2sun8oXzdz8bTyc\"]},\"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/OracleAncillaryInterface.sol\":{\"keccak256\":\"0xd58b41fe1e389f7871db7c04f2c05c1aac1d0455bbc521534da81fd657016a1f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://cc532e9c550bb1bba0daa33fda748590cd06ce94a9566fe65dac04e7d40977bc\",\"dweb:/ipfs/QmZKvfRW2LJFt5MWZbKuU9ujkXnS2hkPUJVj8wwJWcuZGX\"]},\"src/common/implementation/AddressLegacy.sol\":{\"keccak256\":\"0x441f6c1a04ebb7ad44e54e1b9e3a6ca9f2468358842f93ec73e392f928daf85f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c2cba7f3e831503913b6a147eec2f5fc6a2c5cdf1df11ae65582a42c5680ecd\",\"dweb:/ipfs/QmdBEXFnViR66ibJeyjKNh2xJoY8v1y3u3u1D9UXdPawFA\"]},\"src/common/implementation/AddressWhitelist.sol\":{\"keccak256\":\"0x3849b2e73172d5d5f617a447137026cf3a779cc050441ad9b70613faee837596\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://ace04f18fe4e939c2f4fde32412407b23298129d2534efc1835dc8615a9ee7ff\",\"dweb:/ipfs/QmbNGpi9uD3j9ek3HhdBFuKrnb9YYXhAfvyJxSdRMFVB3P\"]},\"src/common/implementation/LockableUpgradeable.sol\":{\"keccak256\":\"0x1a10eec9d7f12b051d343c65016a9c60a4bece53da4da2eceb8a8dc007b336e2\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9b8c203e136583fa946e4ae0e7bc9774837f865f8b319daa97c84ceb8a16c95b\",\"dweb:/ipfs/QmPJPPL27TB8qt66ZHquDCYtuubcTStRqxn4nxQnehMdA2\"]},\"src/common/interfaces/AddressWhitelistInterface.sol\":{\"keccak256\":\"0x126b2bc590041cf213c274bedc91c06a263ddff5e11a090be80d7db8b1cb0d8f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0f47e32816f895d4a3a060eded9bba7853eff6a6d99c3de5b4d1ca8359ce1c49\",\"dweb:/ipfs/QmVWt7xTr68owupHSUUJNfV2N3n2bTvTWtXCDtu8k3uVBN\"]},\"src/common/interfaces/FixedPointInterface.sol\":{\"keccak256\":\"0xceca09e6aa78c97698fa0b1f40657f6c3c723d5d94150ef6476affb9671df753\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://d5d1b01017749d96befb5c2e8a8c6d9dd041f57e1d9a66238c296cc28512d2e5\",\"dweb:/ipfs/QmVPiky59JTngjwZNdxbmD7H1Lwa5AgTjzv975wSnavFFy\"]},\"src/data-verification-mechanism/interfaces/StoreInterface.sol\":{\"keccak256\":\"0x1905509e908c6a9b8b3a89449d2d86fd7192d0e588cbe542edd21351d9971ee5\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://346e602f41469943453fbe039bf7554b23e1eba3128ff3858d32b35ebcc2ae88\",\"dweb:/ipfs/QmcjZ73TwMjondBDKEHyZ9KUjZzcxsy6Dmqs8QxPK3KBde\"]},\"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol\":{\"keccak256\":\"0x14157a690a9a3f56f7a5311cafc00a599412b1a451304b06abd4bc6e7ae1c968\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://fba453d2ef031ecb366a2cbe597a388e1344587e19f2f11f16c5287a93429313\",\"dweb:/ipfs/QmS7iPT9h261CpZUu2iNfqpLrZf983fM9k7RDqmA4tRz1k\"]},\"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol\":{\"keccak256\":\"0x33a251fab5e475a286832db9bc3aabf7f597497f07e06c2da8779d4f486336d1\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e8789e875af4c98c16a085279a5dd545fe2fe32716e66c41343ea0edaf8fad9f\",\"dweb:/ipfs/QmQTzL8h24WkcfchRfSRrCysAfSprVCF2RNc4AMQTchTyZ\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"priceDisputed(bytes32,uint256,bytes,uint256)":"0d8f2372","priceProposed(bytes32,uint256,bytes)":"9c2fd1df","priceSettled(bytes32,uint256,bytes,int256)":"04cc1fd5"}}}},"src/optimistic-oracle-v2/interfaces/ManagedOptimisticOracleV2Interface.sol":{"ManagedOptimisticOracleV2Interface":{"abi":[{"type":"event","name":"AllowedBondRangeUpdated","inputs":[{"name":"currency","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"newMinimumBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newMaximumBond","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CustomBondSet","inputs":[{"name":"managedRequestId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"requester","type":"address","indexed":false,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"currency","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"bond","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CustomLivenessSet","inputs":[{"name":"managedRequestId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"customLiveness","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CustomProposerWhitelistSet","inputs":[{"name":"managedRequestId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"requester","type":"address","indexed":false,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"newWhitelist","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"DefaultProposerWhitelistUpdated","inputs":[{"name":"newWhitelist","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MinimumLivenessUpdated","inputs":[{"name":"newMinimumLiveness","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RequestManagerAdded","inputs":[{"name":"requestManager","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RequestManagerRemoved","inputs":[{"name":"requestManager","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RequesterWhitelistUpdated","inputs":[{"name":"newWhitelist","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"BondBelowMinimumBond","inputs":[]},{"type":"error","name":"BondExceedsMaximumBond","inputs":[]},{"type":"error","name":"LivenessTooLow","inputs":[]},{"type":"error","name":"MinimumBondAboveMaximumBond","inputs":[]},{"type":"error","name":"ProposerNotWhitelisted","inputs":[]},{"type":"error","name":"RequesterNotWhitelisted","inputs":[]},{"type":"error","name":"SenderNotWhitelisted","inputs":[]},{"type":"error","name":"UnsupportedWhitelistInterface","inputs":[]},{"type":"error","name":"ZeroBondNotAllowed","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"BondBelowMinimumBond\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BondExceedsMaximumBond\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LivenessTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinimumBondAboveMaximumBond\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProposerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RequesterNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SenderNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedWhitelistInterface\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroBondNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMinimumBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMaximumBond\",\"type\":\"uint256\"}],\"name\":\"AllowedBondRangeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"managedRequestId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"CustomBondSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"managedRequestId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"name\":\"CustomLivenessSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"managedRequestId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newWhitelist\",\"type\":\"address\"}],\"name\":\"CustomProposerWhitelistSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newWhitelist\",\"type\":\"address\"}],\"name\":\"DefaultProposerWhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMinimumLiveness\",\"type\":\"uint256\"}],\"name\":\"MinimumLivenessUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requestManager\",\"type\":\"address\"}],\"name\":\"RequestManagerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requestManager\",\"type\":\"address\"}],\"name\":\"RequestManagerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newWhitelist\",\"type\":\"address\"}],\"name\":\"RequesterWhitelistUpdated\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Events and Errors for the ManagedOptimisticOracleV2 contract.\",\"version\":1},\"userdoc\":{\"errors\":{\"BondBelowMinimumBond()\":[{\"notice\":\"Thrown when a bond is set lower than the minimum allowed bond.\"}],\"BondExceedsMaximumBond()\":[{\"notice\":\"Thrown when a bond is set higher than the maximum allowed bond.\"}],\"LivenessTooLow()\":[{\"notice\":\"Thrown when a liveness is set lower than the minimum allowed liveness.\"}],\"MinimumBondAboveMaximumBond()\":[{\"notice\":\"Thrown when minimum bond is higher than maximum bond.\"}],\"ProposerNotWhitelisted()\":[{\"notice\":\"Thrown when a proposer is not on the effective proposer whitelist.\"}],\"RequesterNotWhitelisted()\":[{\"notice\":\"Thrown when a requester is not on the requester whitelist.\"}],\"SenderNotWhitelisted()\":[{\"notice\":\"Thrown when the message sender is not on the effective proposer whitelist for a proposal.\"}],\"UnsupportedWhitelistInterface()\":[{\"notice\":\"Thrown when a whitelist does not support the required interface.\"}],\"ZeroBondNotAllowed()\":[{\"notice\":\"Thrown when a zero value bond is set.\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains events for request manager management, bond and liveness updates, and whitelists, and custom errors for various conditions.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/optimistic-oracle-v2/interfaces/ManagedOptimisticOracleV2Interface.sol\":\"ManagedOptimisticOracleV2Interface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"src/optimistic-oracle-v2/interfaces/ManagedOptimisticOracleV2Interface.sol\":{\"keccak256\":\"0x58457e5cfefc95b68c258fc8f9713d3810c0596a90e3af88b1242dc3320e4c26\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://323d4285faee8a2116e5e6bbaf2272235219f7f7c73735317639e59fac1e199c\",\"dweb:/ipfs/QmNu56eMiHRq4RPnG2amVEu7HiAmhNi1m9vdSks4gv58Yz\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol":{"OptimisticOracleV2Interface":{"abi":[{"type":"function","name":"ancillaryBytesLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"defaultLiveness","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"disputePrice","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disputePriceFor","inputs":[{"name":"disputer","type":"address","internalType":"address"},{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"finder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract FinderInterface"}],"stateMutability":"view"},{"type":"function","name":"getCurrentTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRequest","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"tuple","internalType":"struct OptimisticOracleV2Interface.Request","components":[{"name":"proposer","type":"address","internalType":"address"},{"name":"disputer","type":"address","internalType":"address"},{"name":"currency","type":"address","internalType":"contract IERC20"},{"name":"settled","type":"bool","internalType":"bool"},{"name":"requestSettings","type":"tuple","internalType":"struct OptimisticOracleV2Interface.RequestSettings","components":[{"name":"eventBased","type":"bool","internalType":"bool"},{"name":"refundOnDispute","type":"bool","internalType":"bool"},{"name":"callbackOnPriceProposed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceDisputed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceSettled","type":"bool","internalType":"bool"},{"name":"bond","type":"uint256","internalType":"uint256"},{"name":"customLiveness","type":"uint256","internalType":"uint256"}]},{"name":"proposedPrice","type":"int256","internalType":"int256"},{"name":"resolvedPrice","type":"int256","internalType":"int256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"reward","type":"uint256","internalType":"uint256"},{"name":"finalFee","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getState","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint8","internalType":"enum OptimisticOracleV2Interface.State"}],"stateMutability":"view"},{"type":"function","name":"hasPrice","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proposePrice","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"proposedPrice","type":"int256","internalType":"int256"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"proposePriceFor","inputs":[{"name":"proposer","type":"address","internalType":"address"},{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"proposedPrice","type":"int256","internalType":"int256"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"requestPrice","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"currency","type":"address","internalType":"contract IERC20"},{"name":"reward","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"requests","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"proposer","type":"address","internalType":"address"},{"name":"disputer","type":"address","internalType":"address"},{"name":"currency","type":"address","internalType":"contract IERC20"},{"name":"settled","type":"bool","internalType":"bool"},{"name":"requestSettings","type":"tuple","internalType":"struct OptimisticOracleV2Interface.RequestSettings","components":[{"name":"eventBased","type":"bool","internalType":"bool"},{"name":"refundOnDispute","type":"bool","internalType":"bool"},{"name":"callbackOnPriceProposed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceDisputed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceSettled","type":"bool","internalType":"bool"},{"name":"bond","type":"uint256","internalType":"uint256"},{"name":"customLiveness","type":"uint256","internalType":"uint256"}]},{"name":"proposedPrice","type":"int256","internalType":"int256"},{"name":"resolvedPrice","type":"int256","internalType":"int256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"reward","type":"uint256","internalType":"uint256"},{"name":"finalFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setBond","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"bond","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"totalBond","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"setCallbacks","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"callbackOnPriceProposed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceDisputed","type":"bool","internalType":"bool"},{"name":"callbackOnPriceSettled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setCustomLiveness","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"customLiveness","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setEventBased","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRefundOnDispute","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settle","inputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"payout","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"settleAndGetPrice","inputs":[{"name":"identifier","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"ancillaryData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"},{"type":"function","name":"stampAncillaryData","inputs":[{"name":"ancillaryData","type":"bytes","internalType":"bytes"},{"name":"requester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"event","name":"DisputePrice","inputs":[{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":true,"internalType":"address"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"proposedPrice","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"ProposePrice","inputs":[{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":true,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"proposedPrice","type":"int256","indexed":false,"internalType":"int256"},{"name":"expirationTimestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RequestPrice","inputs":[{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"reward","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"finalFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Settle","inputs":[{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":true,"internalType":"address"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"identifier","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ancillaryData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"price","type":"int256","indexed":false,"internalType":"int256"},{"name":"payout","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AncillaryDataTooLong","inputs":[]},{"type":"error","name":"CannotProposeTooEarly","inputs":[]},{"type":"error","name":"DisputerAddressCannotBeZero","inputs":[]},{"type":"error","name":"LivenessCannotBeZero","inputs":[]},{"type":"error","name":"LivenessTooLarge","inputs":[]},{"type":"error","name":"ProposerAddressCannotBeZero","inputs":[]},{"type":"error","name":"RequestNotSettleable","inputs":[]},{"type":"error","name":"RequestStateNotInvalid","inputs":[]},{"type":"error","name":"RequestStateNotProposed","inputs":[]},{"type":"error","name":"RequestStateNotRequested","inputs":[]},{"type":"error","name":"TimestampInFuture","inputs":[]},{"type":"error","name":"UnsupportedCurrency","inputs":[]},{"type":"error","name":"UnsupportedIdentifier","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AncillaryDataTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotProposeTooEarly\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DisputerAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LivenessCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LivenessTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProposerAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RequestNotSettleable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RequestStateNotInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RequestStateNotProposed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RequestStateNotRequested\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampInFuture\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedCurrency\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedIdentifier\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"DisputePrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"ProposePrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"name\":\"RequestPrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"price\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"payout\",\"type\":\"uint256\"}],\"name\":\"Settle\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ancillaryBytesLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultLiveness\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"disputePrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"disputePriceFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finder\",\"outputs\":[{\"internalType\":\"contract FinderInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"getRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"eventBased\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"refundOnDispute\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceProposed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceDisputed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceSettled\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct OptimisticOracleV2Interface.RequestSettings\",\"name\":\"requestSettings\",\"type\":\"tuple\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"internalType\":\"struct OptimisticOracleV2Interface.Request\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"getState\",\"outputs\":[{\"internalType\":\"enum OptimisticOracleV2Interface.State\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"hasPrice\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"proposePrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"proposePriceFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"name\":\"requestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"requests\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"eventBased\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"refundOnDispute\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceProposed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceDisputed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceSettled\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct OptimisticOracleV2Interface.RequestSettings\",\"name\":\"requestSettings\",\"type\":\"tuple\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"setBond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceProposed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceDisputed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"callbackOnPriceSettled\",\"type\":\"bool\"}],\"name\":\"setCallbacks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"name\":\"setCustomLiveness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"setEventBased\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"setRefundOnDispute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"payout\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"settleAndGetPrice\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"}],\"name\":\"stampAncillaryData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.\",\"kind\":\"dev\",\"methods\":{\"disputePrice(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was valid (the proposal was incorrect).\"}},\"disputePriceFor(address,address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"disputer\":\"address to set as the disputer.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was value (the proposal was incorrect).\"}},\"getRequest(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"the Request data structure.\"}},\"getState(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"the State enum value.\"}},\"hasPrice(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"true if price has resolved or settled, false otherwise.\"}},\"proposePrice(address,bytes32,uint256,bytes,int256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"proposedPrice\":\"price being proposed.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct.\"}},\"proposePriceFor(address,address,bytes32,uint256,bytes,int256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"proposedPrice\":\"price being proposed.\",\"proposer\":\"address to set as the proposer.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct.\"}},\"requestPrice(bytes32,uint256,bytes,address,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data representing additional args being passed with the price request.\",\"currency\":\"ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\",\"identifier\":\"price identifier being requested.\",\"reward\":\"reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0, which could make sense if the contract requests and proposes the value in the same call or provides its own reward system.\",\"timestamp\":\"timestamp of the price being requested.\"},\"returns\":{\"totalBond\":\"default bond (final fee) + final fee that the proposer and disputer will be required to pay. This can be changed with a subsequent call to setBond().\"}},\"setBond(bytes32,uint256,bytes,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"bond\":\"custom bond amount to set.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"new bond + final fee that the proposer and disputer will be required to pay. This can be changed again with a subsequent call to setBond().\"}},\"setCallbacks(bytes32,uint256,bytes,bool,bool,bool)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"callbackOnPriceDisputed\":\"whether to enable the callback onPriceDisputed.\",\"callbackOnPriceProposed\":\"whether to enable the callback onPriceProposed.\",\"callbackOnPriceSettled\":\"whether to enable the callback onPriceSettled.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"}},\"setCustomLiveness(bytes32,uint256,bytes,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"customLiveness\":\"new custom liveness.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"}},\"setEventBased(bytes32,uint256,bytes)\":{\"details\":\"Calling this method has a few impacts on the request: 1. The timestamp at which the request is evaluated is the time of the proposal, not the timestamp associated with the request. 2. The proposer cannot propose the \\\"too early\\\" value (TOO_EARLY_RESPONSE). This is to ensure that a proposer who prematurely proposes a response loses their bond. 3. RefundoOnDispute is automatically set, meaning disputes trigger the reward to be automatically refunded to the requesting contract.\",\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"}},\"setRefundOnDispute(bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"}},\"settle(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"payout\":\"the amount that the \\\"winner\\\" (proposer or disputer) receives on settlement. This amount includes the returned bonds as well as additional rewards.\"}},\"settleAndGetPrice(bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"resolved price.\"}}},\"stateVariables\":{\"__gap\":{\"details\":\"Reserve storage slots for future versions of this base contract to add state variables without affecting the storage layout of child contracts. Decrement the size of __gap whenever state variables are added. This is at the bottom of contract to make sure its always at the end of storage. See https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable#storage-gaps\"}},\"title\":\"Financial contract facing Oracle interface.\",\"version\":1},\"userdoc\":{\"errors\":{\"AncillaryDataTooLong()\":[{\"notice\":\"Thrown when ancillary data exceeds the allowed limit.\"}],\"CannotProposeTooEarly()\":[{\"notice\":\"Thrown when trying to propose the \\\"too early\\\" response for event-based requests.\"}],\"DisputerAddressCannotBeZero()\":[{\"notice\":\"Thrown when a disputer address is zero.\"}],\"LivenessCannotBeZero()\":[{\"notice\":\"Thrown when liveness period cannot be zero.\"}],\"LivenessTooLarge()\":[{\"notice\":\"Thrown when liveness period is too large.\"}],\"ProposerAddressCannotBeZero()\":[{\"notice\":\"Thrown when a proposer address is zero.\"}],\"RequestNotSettleable()\":[{\"notice\":\"Thrown when trying to settle a request that is not settleable.\"}],\"RequestStateNotInvalid()\":[{\"notice\":\"Thrown when a request is not in the expected Invalid state.\"}],\"RequestStateNotProposed()\":[{\"notice\":\"Thrown when a request is not in the expected Proposed state.\"}],\"RequestStateNotRequested()\":[{\"notice\":\"Thrown when a request is not in the expected Requested state.\"}],\"TimestampInFuture()\":[{\"notice\":\"Thrown when a timestamp is in the future.\"}],\"UnsupportedCurrency()\":[{\"notice\":\"Thrown when a currency is not supported by the collateral whitelist.\"}],\"UnsupportedIdentifier()\":[{\"notice\":\"Thrown when an identifier is not supported by the identifier whitelist.\"}]},\"kind\":\"user\",\"methods\":{\"disputePrice(address,bytes32,uint256,bytes)\":{\"notice\":\"Disputes a price value for an existing price request with an active proposal.\"},\"disputePriceFor(address,address,bytes32,uint256,bytes)\":{\"notice\":\"Disputes a price request with an active proposal on another address' behalf. Note: this address will receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\"},\"getRequest(address,bytes32,uint256,bytes)\":{\"notice\":\"Gets the current data structure containing all information about a price request.\"},\"getState(address,bytes32,uint256,bytes)\":{\"notice\":\"Returns the state of a price request.\"},\"hasPrice(address,bytes32,uint256,bytes)\":{\"notice\":\"Checks if a given request has resolved or been settled (i.e the optimistic oracle has a price).\"},\"proposePrice(address,bytes32,uint256,bytes,int256)\":{\"notice\":\"Proposes a price value for an existing price request.\"},\"proposePriceFor(address,address,bytes32,uint256,bytes,int256)\":{\"notice\":\"Proposes a price value on another address' behalf. Note: this address will receive any rewards that come from this proposal. However, any bonds are pulled from the caller.\"},\"requestPrice(bytes32,uint256,bytes,address,uint256)\":{\"notice\":\"Requests a new price.\"},\"setBond(bytes32,uint256,bytes,uint256)\":{\"notice\":\"Set the proposal bond associated with a price request.\"},\"setCallbacks(bytes32,uint256,bytes,bool,bool,bool)\":{\"notice\":\"Sets which callbacks should be enabled for the request.\"},\"setCustomLiveness(bytes32,uint256,bytes,uint256)\":{\"notice\":\"Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before being auto-resolved.\"},\"setEventBased(bytes32,uint256,bytes)\":{\"notice\":\"Sets the request to be an \\\"event-based\\\" request.\"},\"setRefundOnDispute(bytes32,uint256,bytes)\":{\"notice\":\"Sets the request to refund the reward if the proposal is disputed. This can help to \\\"hedge\\\" the caller in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's bond, so there is still profit to be made even if the reward is refunded.\"},\"settle(address,bytes32,uint256,bytes)\":{\"notice\":\"Attempts to settle an outstanding price request. Will revert if it isn't settleable.\"},\"settleAndGetPrice(bytes32,uint256,bytes)\":{\"notice\":\"Retrieves a price that was previously requested by a caller. Reverts if the request is not settled or settleable. Note: this method is not view so that this call may actually settle the price request if it hasn't been settled.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol\":\"OptimisticOracleV2Interface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/contracts/=lib/protocol/packages/core/contracts/\",\":ds-test/=lib/protocol/packages/core/temp/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":protocol/=lib/protocol/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/FinderInterface.sol\":{\"keccak256\":\"0x9166fbfe08e954eb86d33c114fcde7ce4fd0dda5d9d28b31210582bfc769fa86\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e611e12bcaaebfdf65b67c566ff1d34708e757f01a445bd87c55862e89383b81\",\"dweb:/ipfs/QmYNSq5oopTShdS6j4VWKqoLxmQSRKmWebCxw6K4LfmKrf\"]},\"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol\":{\"keccak256\":\"0x33a251fab5e475a286832db9bc3aabf7f597497f07e06c2da8779d4f486336d1\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e8789e875af4c98c16a085279a5dd545fe2fe32716e66c41343ea0edaf8fad9f\",\"dweb:/ipfs/QmQTzL8h24WkcfchRfSRrCysAfSprVCF2RNc4AMQTchTyZ\"]}},\"version\":1}","userdoc":{},"devdoc":{},"storageLayout":{"storage":[{"astId":11412,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"requests","offset":0,"slot":"0","type":"t_mapping(t_bytes32,t_struct(Request)11388_storage)"},{"astId":11639,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)49_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_contract(IERC20)2591":{"encoding":"inplace","label":"contract IERC20","numberOfBytes":"20"},"t_int256":{"encoding":"inplace","label":"int256","numberOfBytes":"32"},"t_mapping(t_bytes32,t_struct(Request)11388_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct OptimisticOracleV2Interface.Request)","numberOfBytes":"32","value":"t_struct(Request)11388_storage"},"t_struct(Request)11388_storage":{"encoding":"inplace","label":"struct OptimisticOracleV2Interface.Request","numberOfBytes":"352","members":[{"astId":11367,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"proposer","offset":0,"slot":"0","type":"t_address"},{"astId":11369,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"disputer","offset":0,"slot":"1","type":"t_address"},{"astId":11372,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"currency","offset":0,"slot":"2","type":"t_contract(IERC20)2591"},{"astId":11374,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"settled","offset":20,"slot":"2","type":"t_bool"},{"astId":11377,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"requestSettings","offset":0,"slot":"3","type":"t_struct(RequestSettings)11365_storage"},{"astId":11379,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"proposedPrice","offset":0,"slot":"6","type":"t_int256"},{"astId":11381,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"resolvedPrice","offset":0,"slot":"7","type":"t_int256"},{"astId":11383,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"expirationTime","offset":0,"slot":"8","type":"t_uint256"},{"astId":11385,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"reward","offset":0,"slot":"9","type":"t_uint256"},{"astId":11387,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"finalFee","offset":0,"slot":"10","type":"t_uint256"}]},"t_struct(RequestSettings)11365_storage":{"encoding":"inplace","label":"struct OptimisticOracleV2Interface.RequestSettings","numberOfBytes":"96","members":[{"astId":11352,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"eventBased","offset":0,"slot":"0","type":"t_bool"},{"astId":11354,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"refundOnDispute","offset":1,"slot":"0","type":"t_bool"},{"astId":11356,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"callbackOnPriceProposed","offset":2,"slot":"0","type":"t_bool"},{"astId":11358,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"callbackOnPriceDisputed","offset":3,"slot":"0","type":"t_bool"},{"astId":11360,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"callbackOnPriceSettled","offset":4,"slot":"0","type":"t_bool"},{"astId":11362,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"bond","offset":0,"slot":"1","type":"t_uint256"},{"astId":11364,"contract":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol:OptimisticOracleV2Interface","label":"customLiveness","offset":0,"slot":"2","type":"t_uint256"}]},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"ancillaryBytesLimit()":"c371dda7","defaultLiveness()":"fe4e1983","disputePrice(address,bytes32,uint256,bytes)":"fba7f1e3","disputePriceFor(address,address,bytes32,uint256,bytes)":"76c7823f","finder()":"b9a3c84c","getCurrentTime()":"29cb924d","getRequest(address,bytes32,uint256,bytes)":"a9904f9b","getState(address,bytes32,uint256,bytes)":"ba4b930c","hasPrice(address,bytes32,uint256,bytes)":"bc58ccaa","proposePrice(address,bytes32,uint256,bytes,int256)":"b8b4f908","proposePriceFor(address,address,bytes32,uint256,bytes,int256)":"7c82288f","requestPrice(bytes32,uint256,bytes,address,uint256)":"11df92f1","requests(bytes32)":"9d866985","setBond(bytes32,uint256,bytes,uint256)":"ad5a755a","setCallbacks(bytes32,uint256,bytes,bool,bool,bool)":"f327b075","setCustomLiveness(bytes32,uint256,bytes,uint256)":"473c45fe","setEventBased(bytes32,uint256,bytes)":"120698af","setRefundOnDispute(bytes32,uint256,bytes)":"91f58dcb","settle(address,bytes32,uint256,bytes)":"5e9a79a9","settleAndGetPrice(bytes32,uint256,bytes)":"53b59239","stampAncillaryData(bytes,address)":"af5d2f39"}}}}},"sources":{"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"id":6,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol","id":1832,"exportedSymbols":{"IAccessControl":[1831]},"nodeType":"SourceUnit","src":"109:3234:6","nodes":[{"id":1750,"nodeType":"PragmaDirective","src":"109:24:6","nodes":[],"literals":["solidity",">=","0.8",".4"]},{"id":1831,"nodeType":"ContractDefinition","src":"226:3116:6","nodes":[{"id":1758,"nodeType":"ErrorDefinition","src":"318:76:6","nodes":[],"documentation":{"id":1752,"nodeType":"StructuredDocumentation","src":"257:56:6","text":" @dev The `account` is missing a role."},"errorSelector":"e2517d3f","name":"AccessControlUnauthorizedAccount","nameLocation":"324:32:6","parameters":{"id":1757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1754,"mutability":"mutable","name":"account","nameLocation":"365:7:6","nodeType":"VariableDeclaration","scope":1758,"src":"357:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1753,"name":"address","nodeType":"ElementaryTypeName","src":"357:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1756,"mutability":"mutable","name":"neededRole","nameLocation":"382:10:6","nodeType":"VariableDeclaration","scope":1758,"src":"374:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1755,"name":"bytes32","nodeType":"ElementaryTypeName","src":"374:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"356:37:6"}},{"id":1761,"nodeType":"ErrorDefinition","src":"553:37:6","nodes":[],"documentation":{"id":1759,"nodeType":"StructuredDocumentation","src":"400:148:6","text":" @dev The caller of a function is not the expected one.\n NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."},"errorSelector":"6697b232","name":"AccessControlBadConfirmation","nameLocation":"559:28:6","parameters":{"id":1760,"nodeType":"ParameterList","parameters":[],"src":"587:2:6"}},{"id":1770,"nodeType":"EventDefinition","src":"855:110:6","nodes":[],"anonymous":false,"documentation":{"id":1762,"nodeType":"StructuredDocumentation","src":"596:254:6","text":" @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted to signal this."},"eventSelector":"bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff","name":"RoleAdminChanged","nameLocation":"861:16:6","parameters":{"id":1769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1764,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"894:4:6","nodeType":"VariableDeclaration","scope":1770,"src":"878:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1763,"name":"bytes32","nodeType":"ElementaryTypeName","src":"878:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1766,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nameLocation":"916:17:6","nodeType":"VariableDeclaration","scope":1770,"src":"900:33:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1765,"name":"bytes32","nodeType":"ElementaryTypeName","src":"900:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1768,"indexed":true,"mutability":"mutable","name":"newAdminRole","nameLocation":"951:12:6","nodeType":"VariableDeclaration","scope":1770,"src":"935:28:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1767,"name":"bytes32","nodeType":"ElementaryTypeName","src":"935:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"877:87:6"}},{"id":1779,"nodeType":"EventDefinition","src":"1271:89:6","nodes":[],"anonymous":false,"documentation":{"id":1771,"nodeType":"StructuredDocumentation","src":"971:295:6","text":" @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call. This account bears the admin role (for the granted role).\n Expected in cases where the role was granted using the internal {AccessControl-_grantRole}."},"eventSelector":"2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","name":"RoleGranted","nameLocation":"1277:11:6","parameters":{"id":1778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1773,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1305:4:6","nodeType":"VariableDeclaration","scope":1779,"src":"1289:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1772,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1289:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1775,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1327:7:6","nodeType":"VariableDeclaration","scope":1779,"src":"1311:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1774,"name":"address","nodeType":"ElementaryTypeName","src":"1311:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1777,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1352:6:6","nodeType":"VariableDeclaration","scope":1779,"src":"1336:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1776,"name":"address","nodeType":"ElementaryTypeName","src":"1336:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1288:71:6"}},{"id":1788,"nodeType":"EventDefinition","src":"1646:89:6","nodes":[],"anonymous":false,"documentation":{"id":1780,"nodeType":"StructuredDocumentation","src":"1366:275:6","text":" @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n - if using `revokeRole`, it is the admin role bearer\n - if using `renounceRole`, it is the role bearer (i.e. `account`)"},"eventSelector":"f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b","name":"RoleRevoked","nameLocation":"1652:11:6","parameters":{"id":1787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1782,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1680:4:6","nodeType":"VariableDeclaration","scope":1788,"src":"1664:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1781,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1664:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1784,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1702:7:6","nodeType":"VariableDeclaration","scope":1788,"src":"1686:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1783,"name":"address","nodeType":"ElementaryTypeName","src":"1686:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1786,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1727:6:6","nodeType":"VariableDeclaration","scope":1788,"src":"1711:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1785,"name":"address","nodeType":"ElementaryTypeName","src":"1711:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1663:71:6"}},{"id":1798,"nodeType":"FunctionDefinition","src":"1822:77:6","nodes":[],"documentation":{"id":1789,"nodeType":"StructuredDocumentation","src":"1741:76:6","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"1831:7:6","parameters":{"id":1794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1791,"mutability":"mutable","name":"role","nameLocation":"1847:4:6","nodeType":"VariableDeclaration","scope":1798,"src":"1839:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1790,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1839:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1793,"mutability":"mutable","name":"account","nameLocation":"1861:7:6","nodeType":"VariableDeclaration","scope":1798,"src":"1853:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"1853:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1838:31:6"},"returnParameters":{"id":1797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1796,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1798,"src":"1893:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1795,"name":"bool","nodeType":"ElementaryTypeName","src":"1893:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1892:6:6"},"scope":1831,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1806,"nodeType":"FunctionDefinition","src":"2094:68:6","nodes":[],"documentation":{"id":1799,"nodeType":"StructuredDocumentation","src":"1905:184:6","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {AccessControl-_setRoleAdmin}."},"functionSelector":"248a9ca3","implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"2103:12:6","parameters":{"id":1802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1801,"mutability":"mutable","name":"role","nameLocation":"2124:4:6","nodeType":"VariableDeclaration","scope":1806,"src":"2116:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1800,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2116:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2115:14:6"},"returnParameters":{"id":1805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1804,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1806,"src":"2153:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1803,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2153:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2152:9:6"},"scope":1831,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1814,"nodeType":"FunctionDefinition","src":"2412:59:6","nodes":[],"documentation":{"id":1807,"nodeType":"StructuredDocumentation","src":"2168:239:6","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"2f2ff15d","implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"2421:9:6","parameters":{"id":1812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1809,"mutability":"mutable","name":"role","nameLocation":"2439:4:6","nodeType":"VariableDeclaration","scope":1814,"src":"2431:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1808,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2431:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1811,"mutability":"mutable","name":"account","nameLocation":"2453:7:6","nodeType":"VariableDeclaration","scope":1814,"src":"2445:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1810,"name":"address","nodeType":"ElementaryTypeName","src":"2445:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2430:31:6"},"returnParameters":{"id":1813,"nodeType":"ParameterList","parameters":[],"src":"2470:0:6"},"scope":1831,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1822,"nodeType":"FunctionDefinition","src":"2705:60:6","nodes":[],"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"2477:223:6","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"d547741f","implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"2714:10:6","parameters":{"id":1820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"role","nameLocation":"2733:4:6","nodeType":"VariableDeclaration","scope":1822,"src":"2725:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1816,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2725:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1819,"mutability":"mutable","name":"account","nameLocation":"2747:7:6","nodeType":"VariableDeclaration","scope":1822,"src":"2739:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1818,"name":"address","nodeType":"ElementaryTypeName","src":"2739:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2724:31:6"},"returnParameters":{"id":1821,"nodeType":"ParameterList","parameters":[],"src":"2764:0:6"},"scope":1831,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1830,"nodeType":"FunctionDefinition","src":"3267:73:6","nodes":[],"documentation":{"id":1823,"nodeType":"StructuredDocumentation","src":"2771:491:6","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`."},"functionSelector":"36568abe","implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"3276:12:6","parameters":{"id":1828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1825,"mutability":"mutable","name":"role","nameLocation":"3297:4:6","nodeType":"VariableDeclaration","scope":1830,"src":"3289:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1824,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3289:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1827,"mutability":"mutable","name":"callerConfirmation","nameLocation":"3311:18:6","nodeType":"VariableDeclaration","scope":1830,"src":"3303:26:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1826,"name":"address","nodeType":"ElementaryTypeName","src":"3303:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3288:42:6"},"returnParameters":{"id":1829,"nodeType":"ParameterList","parameters":[],"src":"3339:0:6"},"scope":1831,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IAccessControl","contractDependencies":[],"contractKind":"interface","documentation":{"id":1751,"nodeType":"StructuredDocumentation","src":"135:90:6","text":" @dev External interface of AccessControl declared to support ERC-165 detection."},"fullyImplemented":false,"linearizedBaseContracts":[1831],"name":"IAccessControl","nameLocation":"236:14:6","scope":1832,"usedErrors":[1758,1761],"usedEvents":[1770,1779,1788]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"id":7,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/access/Ownable.sol","id":1980,"exportedSymbols":{"Context":[3345],"Ownable":[1979]},"nodeType":"SourceUnit","src":"102:3000:7","nodes":[{"id":1833,"nodeType":"PragmaDirective","src":"102:24:7","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1835,"nodeType":"ImportDirective","src":"128:45:7","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Context.sol","file":"../utils/Context.sol","nameLocation":"-1:-1:-1","scope":1980,"sourceUnit":3346,"symbolAliases":[{"foreign":{"id":1834,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3345,"src":"136:7:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1979,"nodeType":"ContractDefinition","src":"663:2438:7","nodes":[{"id":1840,"nodeType":"VariableDeclaration","src":"706:22:7","nodes":[],"constant":false,"mutability":"mutable","name":"_owner","nameLocation":"722:6:7","scope":1979,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1839,"name":"address","nodeType":"ElementaryTypeName","src":"706:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":1845,"nodeType":"ErrorDefinition","src":"825:50:7","nodes":[],"documentation":{"id":1841,"nodeType":"StructuredDocumentation","src":"735:85:7","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","name":"OwnableUnauthorizedAccount","nameLocation":"831:26:7","parameters":{"id":1844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1843,"mutability":"mutable","name":"account","nameLocation":"866:7:7","nodeType":"VariableDeclaration","scope":1845,"src":"858:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1842,"name":"address","nodeType":"ElementaryTypeName","src":"858:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"857:17:7"}},{"id":1850,"nodeType":"ErrorDefinition","src":"968:41:7","nodes":[],"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"881:82:7","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","name":"OwnableInvalidOwner","nameLocation":"974:19:7","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"owner","nameLocation":"1002:5:7","nodeType":"VariableDeclaration","scope":1850,"src":"994:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"994:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"993:15:7"}},{"id":1856,"nodeType":"EventDefinition","src":"1015:84:7","nodes":[],"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","name":"OwnershipTransferred","nameLocation":"1021:20:7","parameters":{"id":1855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1852,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1058:13:7","nodeType":"VariableDeclaration","scope":1856,"src":"1042:29:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1851,"name":"address","nodeType":"ElementaryTypeName","src":"1042:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1854,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1089:8:7","nodeType":"VariableDeclaration","scope":1856,"src":"1073:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1853,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1041:57:7"}},{"id":1882,"nodeType":"FunctionDefinition","src":"1225:187:7","nodes":[],"body":{"id":1881,"nodeType":"Block","src":"1259:153:7","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1862,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1859,"src":"1273:12:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1297:1:7","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":1864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1289:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1863,"name":"address","nodeType":"ElementaryTypeName","src":"1289:7:7","typeDescriptions":{}}},"id":1866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1289:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1273:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1876,"nodeType":"IfStatement","src":"1269:95:7","trueBody":{"id":1875,"nodeType":"Block","src":"1301:63:7","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1350:1:7","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":1870,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1342:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1869,"name":"address","nodeType":"ElementaryTypeName","src":"1342:7:7","typeDescriptions":{}}},"id":1872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1342:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1868,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1850,"src":"1322:19:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1322:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1874,"nodeType":"RevertStatement","src":"1315:38:7"}]}},{"expression":{"arguments":[{"id":1878,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1859,"src":"1392:12:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1877,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1978,"src":"1373:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1373:32:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1880,"nodeType":"ExpressionStatement","src":"1373:32:7"}]},"documentation":{"id":1857,"nodeType":"StructuredDocumentation","src":"1105:115:7","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":1860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1859,"mutability":"mutable","name":"initialOwner","nameLocation":"1245:12:7","nodeType":"VariableDeclaration","scope":1882,"src":"1237:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1858,"name":"address","nodeType":"ElementaryTypeName","src":"1237:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1236:22:7"},"returnParameters":{"id":1861,"nodeType":"ParameterList","parameters":[],"src":"1259:0:7"},"scope":1979,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1890,"nodeType":"ModifierDefinition","src":"1500:62:7","nodes":[],"body":{"id":1889,"nodeType":"Block","src":"1521:41:7","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1885,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1916,"src":"1531:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1531:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1887,"nodeType":"ExpressionStatement","src":"1531:13:7"},{"id":1888,"nodeType":"PlaceholderStatement","src":"1554:1:7"}]},"documentation":{"id":1883,"nodeType":"StructuredDocumentation","src":"1418:77:7","text":" @dev Throws if called by any account other than the owner."},"name":"onlyOwner","nameLocation":"1509:9:7","parameters":{"id":1884,"nodeType":"ParameterList","parameters":[],"src":"1518:2:7"},"virtual":false,"visibility":"internal"},{"id":1899,"nodeType":"FunctionDefinition","src":"1638:85:7","nodes":[],"body":{"id":1898,"nodeType":"Block","src":"1693:30:7","nodes":[],"statements":[{"expression":{"id":1896,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"1710:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1895,"id":1897,"nodeType":"Return","src":"1703:13:7"}]},"documentation":{"id":1891,"nodeType":"StructuredDocumentation","src":"1568:65:7","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1647:5:7","parameters":{"id":1892,"nodeType":"ParameterList","parameters":[],"src":"1652:2:7"},"returnParameters":{"id":1895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1894,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1899,"src":"1684:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1893,"name":"address","nodeType":"ElementaryTypeName","src":"1684:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1683:9:7"},"scope":1979,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1916,"nodeType":"FunctionDefinition","src":"1796:162:7","nodes":[],"body":{"id":1915,"nodeType":"Block","src":"1841:117:7","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1903,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1899,"src":"1855:5:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1855:7:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1905,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3327,"src":"1866:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1866:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1855:23:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1914,"nodeType":"IfStatement","src":"1851:101:7","trueBody":{"id":1913,"nodeType":"Block","src":"1880:72:7","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1909,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3327,"src":"1928:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1928:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1908,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1845,"src":"1901:26:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1912,"nodeType":"RevertStatement","src":"1894:47:7"}]}}]},"documentation":{"id":1900,"nodeType":"StructuredDocumentation","src":"1729:62:7","text":" @dev Throws if the sender is not the owner."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1805:11:7","parameters":{"id":1901,"nodeType":"ParameterList","parameters":[],"src":"1816:2:7"},"returnParameters":{"id":1902,"nodeType":"ParameterList","parameters":[],"src":"1841:0:7"},"scope":1979,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1930,"nodeType":"FunctionDefinition","src":"2293:101:7","nodes":[],"body":{"id":1929,"nodeType":"Block","src":"2347:47:7","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":1925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2384:1:7","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":1924,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2376:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1923,"name":"address","nodeType":"ElementaryTypeName","src":"2376:7:7","typeDescriptions":{}}},"id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2376:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1922,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1978,"src":"2357:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2357:30:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1928,"nodeType":"ExpressionStatement","src":"2357:30:7"}]},"documentation":{"id":1917,"nodeType":"StructuredDocumentation","src":"1964:324:7","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","implemented":true,"kind":"function","modifiers":[{"id":1920,"kind":"modifierInvocation","modifierName":{"id":1919,"name":"onlyOwner","nameLocations":["2337:9:7"],"nodeType":"IdentifierPath","referencedDeclaration":1890,"src":"2337:9:7"},"nodeType":"ModifierInvocation","src":"2337:9:7"}],"name":"renounceOwnership","nameLocation":"2302:17:7","parameters":{"id":1918,"nodeType":"ParameterList","parameters":[],"src":"2319:2:7"},"returnParameters":{"id":1921,"nodeType":"ParameterList","parameters":[],"src":"2347:0:7"},"scope":1979,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1958,"nodeType":"FunctionDefinition","src":"2543:215:7","nodes":[],"body":{"id":1957,"nodeType":"Block","src":"2613:145:7","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1938,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1933,"src":"2627:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2647:1:7","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":1940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2639:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1939,"name":"address","nodeType":"ElementaryTypeName","src":"2639:7:7","typeDescriptions":{}}},"id":1942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2639:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2627:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1952,"nodeType":"IfStatement","src":"2623:91:7","trueBody":{"id":1951,"nodeType":"Block","src":"2651:63:7","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2700:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1946,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2692:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1945,"name":"address","nodeType":"ElementaryTypeName","src":"2692:7:7","typeDescriptions":{}}},"id":1948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2692:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1944,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1850,"src":"2672:19:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2672:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1950,"nodeType":"RevertStatement","src":"2665:38:7"}]}},{"expression":{"arguments":[{"id":1954,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1933,"src":"2742:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1953,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1978,"src":"2723:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2723:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1956,"nodeType":"ExpressionStatement","src":"2723:28:7"}]},"documentation":{"id":1931,"nodeType":"StructuredDocumentation","src":"2400:138:7","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","implemented":true,"kind":"function","modifiers":[{"id":1936,"kind":"modifierInvocation","modifierName":{"id":1935,"name":"onlyOwner","nameLocations":["2603:9:7"],"nodeType":"IdentifierPath","referencedDeclaration":1890,"src":"2603:9:7"},"nodeType":"ModifierInvocation","src":"2603:9:7"}],"name":"transferOwnership","nameLocation":"2552:17:7","parameters":{"id":1934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1933,"mutability":"mutable","name":"newOwner","nameLocation":"2578:8:7","nodeType":"VariableDeclaration","scope":1958,"src":"2570:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1932,"name":"address","nodeType":"ElementaryTypeName","src":"2570:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2569:18:7"},"returnParameters":{"id":1937,"nodeType":"ParameterList","parameters":[],"src":"2613:0:7"},"scope":1979,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1978,"nodeType":"FunctionDefinition","src":"2912:187:7","nodes":[],"body":{"id":1977,"nodeType":"Block","src":"2975:124:7","nodes":[],"statements":[{"assignments":[1965],"declarations":[{"constant":false,"id":1965,"mutability":"mutable","name":"oldOwner","nameLocation":"2993:8:7","nodeType":"VariableDeclaration","scope":1977,"src":"2985:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1964,"name":"address","nodeType":"ElementaryTypeName","src":"2985:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1967,"initialValue":{"id":1966,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"3004:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2985:25:7"},{"expression":{"id":1970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1968,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"3020:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1969,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"3029:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3020:17:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1971,"nodeType":"ExpressionStatement","src":"3020:17:7"},{"eventCall":{"arguments":[{"id":1973,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1965,"src":"3073:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1974,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"3083:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1972,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1856,"src":"3052:20:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3052:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1976,"nodeType":"EmitStatement","src":"3047:45:7"}]},"documentation":{"id":1959,"nodeType":"StructuredDocumentation","src":"2764:143:7","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2921:18:7","parameters":{"id":1962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1961,"mutability":"mutable","name":"newOwner","nameLocation":"2948:8:7","nodeType":"VariableDeclaration","scope":1978,"src":"2940:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1960,"name":"address","nodeType":"ElementaryTypeName","src":"2940:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2939:18:7"},"returnParameters":{"id":1963,"nodeType":"ParameterList","parameters":[],"src":"2975:0:7"},"scope":1979,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":1837,"name":"Context","nameLocations":["692:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":3345,"src":"692:7:7"},"id":1838,"nodeType":"InheritanceSpecifier","src":"692:7:7"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1836,"nodeType":"StructuredDocumentation","src":"175:487:7","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 The initial owner is set to the address provided by the deployer. This can\n 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,"linearizedBaseContracts":[1979,3345],"name":"Ownable","nameLocation":"681:7:7","scope":1980,"usedErrors":[1845,1850],"usedEvents":[1856]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol":{"id":8,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol","id":2079,"exportedSymbols":{"IAccessControl":[1831],"IAccessControlDefaultAdminRules":[2078]},"nodeType":"SourceUnit","src":"137:8034:8","nodes":[{"id":1981,"nodeType":"PragmaDirective","src":"137:24:8","nodes":[],"literals":["solidity",">=","0.8",".4"]},{"id":1983,"nodeType":"ImportDirective","src":"163:53:8","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol","file":"../IAccessControl.sol","nameLocation":"-1:-1:-1","scope":2079,"sourceUnit":1832,"symbolAliases":[{"foreign":{"id":1982,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"171:14:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2078,"nodeType":"ContractDefinition","src":"326:7844:8","nodes":[{"id":1991,"nodeType":"ErrorDefinition","src":"472:61:8","nodes":[],"documentation":{"id":1987,"nodeType":"StructuredDocumentation","src":"392:75:8","text":" @dev The new default admin is not a valid default admin."},"errorSelector":"c22c8022","name":"AccessControlInvalidDefaultAdmin","nameLocation":"478:32:8","parameters":{"id":1990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1989,"mutability":"mutable","name":"defaultAdmin","nameLocation":"519:12:8","nodeType":"VariableDeclaration","scope":1991,"src":"511:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1988,"name":"address","nodeType":"ElementaryTypeName","src":"511:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"510:22:8"}},{"id":1994,"nodeType":"ErrorDefinition","src":"843:47:8","nodes":[],"documentation":{"id":1992,"nodeType":"StructuredDocumentation","src":"539:299:8","text":" @dev At least one of the following rules was violated:\n - The `DEFAULT_ADMIN_ROLE` must only be managed by itself.\n - The `DEFAULT_ADMIN_ROLE` must only be held by one account at the time.\n - Any `DEFAULT_ADMIN_ROLE` transfer must be in two delayed steps."},"errorSelector":"3fc3c27a","name":"AccessControlEnforcedDefaultAdminRules","nameLocation":"849:38:8","parameters":{"id":1993,"nodeType":"ParameterList","parameters":[],"src":"887:2:8"}},{"id":1999,"nodeType":"ErrorDefinition","src":"1122:62:8","nodes":[],"documentation":{"id":1995,"nodeType":"StructuredDocumentation","src":"896:221:8","text":" @dev The delay for transferring the default admin delay is enforced and\n the operation must wait until `schedule`.\n NOTE: `schedule` can be 0 indicating there's no transfer scheduled."},"errorSelector":"19ca5ebb","name":"AccessControlEnforcedDefaultAdminDelay","nameLocation":"1128:38:8","parameters":{"id":1998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1997,"mutability":"mutable","name":"schedule","nameLocation":"1174:8:8","nodeType":"VariableDeclaration","scope":1999,"src":"1167:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1996,"name":"uint48","nodeType":"ElementaryTypeName","src":"1167:6:8","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"1166:17:8"}},{"id":2006,"nodeType":"EventDefinition","src":"1427:85:8","nodes":[],"anonymous":false,"documentation":{"id":2000,"nodeType":"StructuredDocumentation","src":"1190:232:8","text":" @dev Emitted when a {defaultAdmin} transfer is started, setting `newAdmin` as the next\n address to become the {defaultAdmin} by calling {acceptDefaultAdminTransfer} only after `acceptSchedule`\n passes."},"eventSelector":"3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed6","name":"DefaultAdminTransferScheduled","nameLocation":"1433:29:8","parameters":{"id":2005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2002,"indexed":true,"mutability":"mutable","name":"newAdmin","nameLocation":"1479:8:8","nodeType":"VariableDeclaration","scope":2006,"src":"1463:24:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2001,"name":"address","nodeType":"ElementaryTypeName","src":"1463:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2004,"indexed":false,"mutability":"mutable","name":"acceptSchedule","nameLocation":"1496:14:8","nodeType":"VariableDeclaration","scope":2006,"src":"1489:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":2003,"name":"uint48","nodeType":"ElementaryTypeName","src":"1489:6:8","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"1462:49:8"}},{"id":2009,"nodeType":"EventDefinition","src":"1646:37:8","nodes":[],"anonymous":false,"documentation":{"id":2007,"nodeType":"StructuredDocumentation","src":"1518:123:8","text":" @dev Emitted when a {pendingDefaultAdmin} is reset if it was never accepted, regardless of its schedule."},"eventSelector":"8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109","name":"DefaultAdminTransferCanceled","nameLocation":"1652:28:8","parameters":{"id":2008,"nodeType":"ParameterList","parameters":[],"src":"1680:2:8"}},{"id":2016,"nodeType":"EventDefinition","src":"1895:79:8","nodes":[],"anonymous":false,"documentation":{"id":2010,"nodeType":"StructuredDocumentation","src":"1689:201:8","text":" @dev Emitted when a {defaultAdminDelay} change is started, setting `newDelay` as the next\n delay to be applied between default admin transfer after `effectSchedule` has passed."},"eventSelector":"f1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b","name":"DefaultAdminDelayChangeScheduled","nameLocation":"1901:32:8","parameters":{"id":2015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2012,"indexed":false,"mutability":"mutable","name":"newDelay","nameLocation":"1941:8:8","nodeType":"VariableDeclaration","scope":2016,"src":"1934:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":2011,"name":"uint48","nodeType":"ElementaryTypeName","src":"1934:6:8","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":2014,"indexed":false,"mutability":"mutable","name":"effectSchedule","nameLocation":"1958:14:8","nodeType":"VariableDeclaration","scope":2016,"src":"1951:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":2013,"name":"uint48","nodeType":"ElementaryTypeName","src":"1951:6:8","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"1933:40:8"}},{"id":2019,"nodeType":"EventDefinition","src":"2088:40:8","nodes":[],"anonymous":false,"documentation":{"id":2017,"nodeType":"StructuredDocumentation","src":"1980:103:8","text":" @dev Emitted when a {pendingDefaultAdminDelay} is reset if its schedule didn't pass."},"eventSelector":"2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5","name":"DefaultAdminDelayChangeCanceled","nameLocation":"2094:31:8","parameters":{"id":2018,"nodeType":"ParameterList","parameters":[],"src":"2125:2:8"}},{"id":2025,"nodeType":"FunctionDefinition","src":"2226:56:8","nodes":[],"documentation":{"id":2020,"nodeType":"StructuredDocumentation","src":"2134:87:8","text":" @dev Returns the address of the current `DEFAULT_ADMIN_ROLE` holder."},"functionSelector":"84ef8ffc","implemented":false,"kind":"function","modifiers":[],"name":"defaultAdmin","nameLocation":"2235:12:8","parameters":{"id":2021,"nodeType":"ParameterList","parameters":[],"src":"2247:2:8"},"returnParameters":{"id":2024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2023,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2025,"src":"2273:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2022,"name":"address","nodeType":"ElementaryTypeName","src":"2273:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2272:9:8"},"scope":2078,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2033,"nodeType":"FunctionDefinition","src":"2736:95:8","nodes":[],"documentation":{"id":2026,"nodeType":"StructuredDocumentation","src":"2288:443:8","text":" @dev Returns a tuple of a `newAdmin` and an accept schedule.\n After the `schedule` passes, the `newAdmin` will be able to accept the {defaultAdmin} role\n by calling {acceptDefaultAdminTransfer}, completing the role transfer.\n A zero value only in `acceptSchedule` indicates no pending admin transfer.\n NOTE: A zero address `newAdmin` means that {defaultAdmin} is being renounced."},"functionSelector":"cf6eefb7","implemented":false,"kind":"function","modifiers":[],"name":"pendingDefaultAdmin","nameLocation":"2745:19:8","parameters":{"id":2027,"nodeType":"ParameterList","parameters":[],"src":"2764:2:8"},"returnParameters":{"id":2032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2029,"mutability":"mutable","name":"newAdmin","nameLocation":"2798:8:8","nodeType":"VariableDeclaration","scope":2033,"src":"2790:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2028,"name":"address","nodeType":"ElementaryTypeName","src":"2790:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2031,"mutability":"mutable","name":"acceptSchedule","nameLocation":"2815:14:8","nodeType":"VariableDeclaration","scope":2033,"src":"2808:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":2030,"name":"uint48","nodeType":"ElementaryTypeName","src":"2808:6:8","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"2789:41:8"},"scope":2078,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2039,"nodeType":"FunctionDefinition","src":"3293:60:8","nodes":[],"documentation":{"id":2034,"nodeType":"StructuredDocumentation","src":"2837:451:8","text":" @dev Returns the delay required to schedule the acceptance of a {defaultAdmin} transfer started.\n This delay will be added to the current timestamp when calling {beginDefaultAdminTransfer} to set\n the acceptance schedule.\n NOTE: If a delay change has been scheduled, it will take effect as soon as the schedule passes, making this\n function returns the new delay. See {changeDefaultAdminDelay}."},"functionSelector":"cc8463c8","implemented":false,"kind":"function","modifiers":[],"name":"defaultAdminDelay","nameLocation":"3302:17:8","parameters":{"id":2035,"nodeType":"ParameterList","parameters":[],"src":"3319:2:8"},"returnParameters":{"id":2038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2037,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2039,"src":"3345:6:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":2036,"name":"uint48","nodeType":"ElementaryTypeName","src":"3345:6:8","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3344:8:8"},"scope":2078,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2047,"nodeType":"FunctionDefinition","src":"3846:99:8","nodes":[],"documentation":{"id":2040,"nodeType":"StructuredDocumentation","src":"3359:482:8","text":" @dev Returns a tuple of `newDelay` and an effect schedule.\n After the `schedule` passes, the `newDelay` will get into effect immediately for every\n new {defaultAdmin} transfer started with {beginDefaultAdminTransfer}.\n A zero value only in `effectSchedule` indicates no pending delay change.\n NOTE: A zero value only for `newDelay` means that the next {defaultAdminDelay}\n will be zero after the effect schedule."},"functionSelector":"a1eda53c","implemented":false,"kind":"function","modifiers":[],"name":"pendingDefaultAdminDelay","nameLocation":"3855:24:8","parameters":{"id":2041,"nodeType":"ParameterList","parameters":[],"src":"3879:2:8"},"returnParameters":{"id":2046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2043,"mutability":"mutable","name":"newDelay","nameLocation":"3912:8:8","nodeType":"VariableDeclaration","scope":2047,"src":"3905:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":2042,"name":"uint48","nodeType":"ElementaryTypeName","src":"3905:6:8","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":2045,"mutability":"mutable","name":"effectSchedule","nameLocation":"3929:14:8","nodeType":"VariableDeclaration","scope":2047,"src":"3922:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":2044,"name":"uint48","nodeType":"ElementaryTypeName","src":"3922:6:8","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3904:40:8"},"scope":2078,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2053,"nodeType":"FunctionDefinition","src":"4288:62:8","nodes":[],"documentation":{"id":2048,"nodeType":"StructuredDocumentation","src":"3951:332:8","text":" @dev Starts a {defaultAdmin} transfer by setting a {pendingDefaultAdmin} scheduled for acceptance\n after the current timestamp plus a {defaultAdminDelay}.\n Requirements:\n - Only can be called by the current {defaultAdmin}.\n Emits a DefaultAdminRoleChangeStarted event."},"functionSelector":"634e93da","implemented":false,"kind":"function","modifiers":[],"name":"beginDefaultAdminTransfer","nameLocation":"4297:25:8","parameters":{"id":2051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2050,"mutability":"mutable","name":"newAdmin","nameLocation":"4331:8:8","nodeType":"VariableDeclaration","scope":2053,"src":"4323:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2049,"name":"address","nodeType":"ElementaryTypeName","src":"4323:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4322:18:8"},"returnParameters":{"id":2052,"nodeType":"ParameterList","parameters":[],"src":"4349:0:8"},"scope":2078,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2057,"nodeType":"FunctionDefinition","src":"4723:47:8","nodes":[],"documentation":{"id":2054,"nodeType":"StructuredDocumentation","src":"4356:362:8","text":" @dev Cancels a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}.\n A {pendingDefaultAdmin} not yet accepted can also be cancelled with this function.\n Requirements:\n - Only can be called by the current {defaultAdmin}.\n May emit a DefaultAdminTransferCanceled event."},"functionSelector":"d602b9fd","implemented":false,"kind":"function","modifiers":[],"name":"cancelDefaultAdminTransfer","nameLocation":"4732:26:8","parameters":{"id":2055,"nodeType":"ParameterList","parameters":[],"src":"4758:2:8"},"returnParameters":{"id":2056,"nodeType":"ParameterList","parameters":[],"src":"4769:0:8"},"scope":2078,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2061,"nodeType":"FunctionDefinition","src":"5320:47:8","nodes":[],"documentation":{"id":2058,"nodeType":"StructuredDocumentation","src":"4776:539:8","text":" @dev Completes a {defaultAdmin} transfer previously started with {beginDefaultAdminTransfer}.\n After calling the function:\n - `DEFAULT_ADMIN_ROLE` should be granted to the caller.\n - `DEFAULT_ADMIN_ROLE` should be revoked from the previous holder.\n - {pendingDefaultAdmin} should be reset to zero values.\n Requirements:\n - Only can be called by the {pendingDefaultAdmin}'s `newAdmin`.\n - The {pendingDefaultAdmin}'s `acceptSchedule` should've passed."},"functionSelector":"cefc1429","implemented":false,"kind":"function","modifiers":[],"name":"acceptDefaultAdminTransfer","nameLocation":"5329:26:8","parameters":{"id":2059,"nodeType":"ParameterList","parameters":[],"src":"5355:2:8"},"returnParameters":{"id":2060,"nodeType":"ParameterList","parameters":[],"src":"5366:0:8"},"scope":2078,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2067,"nodeType":"FunctionDefinition","src":"6788:59:8","nodes":[],"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"5373:1410:8","text":" @dev Initiates a {defaultAdminDelay} update by setting a {pendingDefaultAdminDelay} scheduled for getting\n into effect after the current timestamp plus a {defaultAdminDelay}.\n This function guarantees that any call to {beginDefaultAdminTransfer} done between the timestamp this\n method is called and the {pendingDefaultAdminDelay} effect schedule will use the current {defaultAdminDelay}\n set before calling.\n The {pendingDefaultAdminDelay}'s effect schedule is defined in a way that waiting until the schedule and then\n calling {beginDefaultAdminTransfer} with the new delay will take at least the same as another {defaultAdmin}\n complete transfer (including acceptance).\n The schedule is designed for two scenarios:\n - When the delay is changed for a larger one the schedule is `block.timestamp + newDelay` capped by\n {defaultAdminDelayIncreaseWait}.\n - When the delay is changed for a shorter one, the schedule is `block.timestamp + (current delay - new delay)`.\n A {pendingDefaultAdminDelay} that never got into effect will be canceled in favor of a new scheduled change.\n Requirements:\n - Only can be called by the current {defaultAdmin}.\n Emits a DefaultAdminDelayChangeScheduled event and may emit a DefaultAdminDelayChangeCanceled event."},"functionSelector":"649a5ec7","implemented":false,"kind":"function","modifiers":[],"name":"changeDefaultAdminDelay","nameLocation":"6797:23:8","parameters":{"id":2065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"newDelay","nameLocation":"6828:8:8","nodeType":"VariableDeclaration","scope":2067,"src":"6821:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":2063,"name":"uint48","nodeType":"ElementaryTypeName","src":"6821:6:8","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"6820:17:8"},"returnParameters":{"id":2066,"nodeType":"ParameterList","parameters":[],"src":"6846:0:8"},"scope":2078,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2071,"nodeType":"FunctionDefinition","src":"7087:46:8","nodes":[],"documentation":{"id":2068,"nodeType":"StructuredDocumentation","src":"6853:229:8","text":" @dev Cancels a scheduled {defaultAdminDelay} change.\n Requirements:\n - Only can be called by the current {defaultAdmin}.\n May emit a DefaultAdminDelayChangeCanceled event."},"functionSelector":"0aa6220b","implemented":false,"kind":"function","modifiers":[],"name":"rollbackDefaultAdminDelay","nameLocation":"7096:25:8","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[],"src":"7121:2:8"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"7132:0:8"},"scope":2078,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2077,"nodeType":"FunctionDefinition","src":"8096:72:8","nodes":[],"documentation":{"id":2072,"nodeType":"StructuredDocumentation","src":"7139:952:8","text":" @dev Maximum time in seconds for an increase to {defaultAdminDelay} (that is scheduled using {changeDefaultAdminDelay})\n to take effect. Default to 5 days.\n When the {defaultAdminDelay} is scheduled to be increased, it goes into effect after the new delay has passed with\n the purpose of giving enough time for reverting any accidental change (i.e. using milliseconds instead of seconds)\n that may lock the contract. However, to avoid excessive schedules, the wait is capped by this function and it can\n be overrode for a custom {defaultAdminDelay} increase scheduling.\n IMPORTANT: Make sure to add a reasonable amount of time while overriding this value, otherwise,\n there's a risk of setting a high new delay that goes into effect almost immediately without the\n possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds)."},"functionSelector":"022d63fb","implemented":false,"kind":"function","modifiers":[],"name":"defaultAdminDelayIncreaseWait","nameLocation":"8105:29:8","parameters":{"id":2073,"nodeType":"ParameterList","parameters":[],"src":"8134:2:8"},"returnParameters":{"id":2076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2075,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2077,"src":"8160:6:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":2074,"name":"uint48","nodeType":"ElementaryTypeName","src":"8160:6:8","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"8159:8:8"},"scope":2078,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":1985,"name":"IAccessControl","nameLocations":["371:14:8"],"nodeType":"IdentifierPath","referencedDeclaration":1831,"src":"371:14:8"},"id":1986,"nodeType":"InheritanceSpecifier","src":"371:14:8"}],"canonicalName":"IAccessControlDefaultAdminRules","contractDependencies":[],"contractKind":"interface","documentation":{"id":1984,"nodeType":"StructuredDocumentation","src":"218:107:8","text":" @dev External interface of AccessControlDefaultAdminRules declared to support ERC-165 detection."},"fullyImplemented":false,"linearizedBaseContracts":[2078,1831],"name":"IAccessControlDefaultAdminRules","nameLocation":"336:31:8","scope":2079,"usedErrors":[1758,1761,1991,1994,1999],"usedEvents":[1770,1779,1788,2006,2009,2016,2019]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"id":9,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol","id":2161,"exportedSymbols":{"IERC1363":[2160],"IERC165":[3774],"IERC20":[2591]},"nodeType":"SourceUnit","src":"107:4347:9","nodes":[{"id":2080,"nodeType":"PragmaDirective","src":"107:24:9","nodes":[],"literals":["solidity",">=","0.6",".2"]},{"id":2082,"nodeType":"ImportDirective","src":"133:36:9","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol","file":"./IERC20.sol","nameLocation":"-1:-1:-1","scope":2161,"sourceUnit":2190,"symbolAliases":[{"foreign":{"id":2081,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2591,"src":"141:6:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2084,"nodeType":"ImportDirective","src":"170:38:9","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol","file":"./IERC165.sol","nameLocation":"-1:-1:-1","scope":2161,"sourceUnit":2165,"symbolAliases":[{"foreign":{"id":2083,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3774,"src":"178:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2160,"nodeType":"ContractDefinition","src":"568:3885:9","nodes":[{"id":2099,"nodeType":"FunctionDefinition","src":"1523:76:9","nodes":[],"documentation":{"id":2090,"nodeType":"StructuredDocumentation","src":"1148:370:9","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"1296ee62","implemented":false,"kind":"function","modifiers":[],"name":"transferAndCall","nameLocation":"1532:15:9","parameters":{"id":2095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2092,"mutability":"mutable","name":"to","nameLocation":"1556:2:9","nodeType":"VariableDeclaration","scope":2099,"src":"1548:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2091,"name":"address","nodeType":"ElementaryTypeName","src":"1548:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2094,"mutability":"mutable","name":"value","nameLocation":"1568:5:9","nodeType":"VariableDeclaration","scope":2099,"src":"1560:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2093,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1547:27:9"},"returnParameters":{"id":2098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2097,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2099,"src":"1593:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2096,"name":"bool","nodeType":"ElementaryTypeName","src":"1593:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1592:6:9"},"scope":2160,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2111,"nodeType":"FunctionDefinition","src":"2063:97:9","nodes":[],"documentation":{"id":2100,"nodeType":"StructuredDocumentation","src":"1605:453:9","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"4000aea0","implemented":false,"kind":"function","modifiers":[],"name":"transferAndCall","nameLocation":"2072:15:9","parameters":{"id":2107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2102,"mutability":"mutable","name":"to","nameLocation":"2096:2:9","nodeType":"VariableDeclaration","scope":2111,"src":"2088:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2101,"name":"address","nodeType":"ElementaryTypeName","src":"2088:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2104,"mutability":"mutable","name":"value","nameLocation":"2108:5:9","nodeType":"VariableDeclaration","scope":2111,"src":"2100:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2103,"name":"uint256","nodeType":"ElementaryTypeName","src":"2100:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2106,"mutability":"mutable","name":"data","nameLocation":"2130:4:9","nodeType":"VariableDeclaration","scope":2111,"src":"2115:19:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2105,"name":"bytes","nodeType":"ElementaryTypeName","src":"2115:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2087:48:9"},"returnParameters":{"id":2110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2109,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2111,"src":"2154:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2108,"name":"bool","nodeType":"ElementaryTypeName","src":"2154:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2153:6:9"},"scope":2160,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2123,"nodeType":"FunctionDefinition","src":"2624:94:9","nodes":[],"documentation":{"id":2112,"nodeType":"StructuredDocumentation","src":"2166:453:9","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"d8fbe994","implemented":false,"kind":"function","modifiers":[],"name":"transferFromAndCall","nameLocation":"2633:19:9","parameters":{"id":2119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2114,"mutability":"mutable","name":"from","nameLocation":"2661:4:9","nodeType":"VariableDeclaration","scope":2123,"src":"2653:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2113,"name":"address","nodeType":"ElementaryTypeName","src":"2653:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2116,"mutability":"mutable","name":"to","nameLocation":"2675:2:9","nodeType":"VariableDeclaration","scope":2123,"src":"2667:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2115,"name":"address","nodeType":"ElementaryTypeName","src":"2667:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2118,"mutability":"mutable","name":"value","nameLocation":"2687:5:9","nodeType":"VariableDeclaration","scope":2123,"src":"2679:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2117,"name":"uint256","nodeType":"ElementaryTypeName","src":"2679:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2652:41:9"},"returnParameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2121,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2123,"src":"2712:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2120,"name":"bool","nodeType":"ElementaryTypeName","src":"2712:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2711:6:9"},"scope":2160,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2137,"nodeType":"FunctionDefinition","src":"3265:115:9","nodes":[],"documentation":{"id":2124,"nodeType":"StructuredDocumentation","src":"2724:536:9","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"c1d34b89","implemented":false,"kind":"function","modifiers":[],"name":"transferFromAndCall","nameLocation":"3274:19:9","parameters":{"id":2133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2126,"mutability":"mutable","name":"from","nameLocation":"3302:4:9","nodeType":"VariableDeclaration","scope":2137,"src":"3294:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2125,"name":"address","nodeType":"ElementaryTypeName","src":"3294:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2128,"mutability":"mutable","name":"to","nameLocation":"3316:2:9","nodeType":"VariableDeclaration","scope":2137,"src":"3308:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2127,"name":"address","nodeType":"ElementaryTypeName","src":"3308:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2130,"mutability":"mutable","name":"value","nameLocation":"3328:5:9","nodeType":"VariableDeclaration","scope":2137,"src":"3320:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2129,"name":"uint256","nodeType":"ElementaryTypeName","src":"3320:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2132,"mutability":"mutable","name":"data","nameLocation":"3350:4:9","nodeType":"VariableDeclaration","scope":2137,"src":"3335:19:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2131,"name":"bytes","nodeType":"ElementaryTypeName","src":"3335:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3293:62:9"},"returnParameters":{"id":2136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2135,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2137,"src":"3374:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2134,"name":"bool","nodeType":"ElementaryTypeName","src":"3374:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3373:6:9"},"scope":2160,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2147,"nodeType":"FunctionDefinition","src":"3781:80:9","nodes":[],"documentation":{"id":2138,"nodeType":"StructuredDocumentation","src":"3386:390:9","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"3177029f","implemented":false,"kind":"function","modifiers":[],"name":"approveAndCall","nameLocation":"3790:14:9","parameters":{"id":2143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2140,"mutability":"mutable","name":"spender","nameLocation":"3813:7:9","nodeType":"VariableDeclaration","scope":2147,"src":"3805:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2139,"name":"address","nodeType":"ElementaryTypeName","src":"3805:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2142,"mutability":"mutable","name":"value","nameLocation":"3830:5:9","nodeType":"VariableDeclaration","scope":2147,"src":"3822:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2141,"name":"uint256","nodeType":"ElementaryTypeName","src":"3822:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3804:32:9"},"returnParameters":{"id":2146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2145,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2147,"src":"3855:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2144,"name":"bool","nodeType":"ElementaryTypeName","src":"3855:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3854:6:9"},"scope":2160,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2159,"nodeType":"FunctionDefinition","src":"4350:101:9","nodes":[],"documentation":{"id":2148,"nodeType":"StructuredDocumentation","src":"3867:478:9","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @param data Additional data with no specified format, sent in call to `spender`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"cae9ca51","implemented":false,"kind":"function","modifiers":[],"name":"approveAndCall","nameLocation":"4359:14:9","parameters":{"id":2155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2150,"mutability":"mutable","name":"spender","nameLocation":"4382:7:9","nodeType":"VariableDeclaration","scope":2159,"src":"4374:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2149,"name":"address","nodeType":"ElementaryTypeName","src":"4374:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2152,"mutability":"mutable","name":"value","nameLocation":"4399:5:9","nodeType":"VariableDeclaration","scope":2159,"src":"4391:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2151,"name":"uint256","nodeType":"ElementaryTypeName","src":"4391:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2154,"mutability":"mutable","name":"data","nameLocation":"4421:4:9","nodeType":"VariableDeclaration","scope":2159,"src":"4406:19:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2153,"name":"bytes","nodeType":"ElementaryTypeName","src":"4406:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4373:53:9"},"returnParameters":{"id":2158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2157,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2159,"src":"4445:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2156,"name":"bool","nodeType":"ElementaryTypeName","src":"4445:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4444:6:9"},"scope":2160,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":2086,"name":"IERC20","nameLocations":["590:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"590:6:9"},"id":2087,"nodeType":"InheritanceSpecifier","src":"590:6:9"},{"baseName":{"id":2088,"name":"IERC165","nameLocations":["598:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":3774,"src":"598:7:9"},"id":2089,"nodeType":"InheritanceSpecifier","src":"598:7:9"}],"canonicalName":"IERC1363","contractDependencies":[],"contractKind":"interface","documentation":{"id":2085,"nodeType":"StructuredDocumentation","src":"210:357:9","text":" @title IERC1363\n @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction."},"fullyImplemented":false,"linearizedBaseContracts":[2160,3774,2591],"name":"IERC1363","nameLocation":"578:8:9","scope":2161,"usedErrors":[],"usedEvents":[2525,2534]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"id":10,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol","id":2165,"exportedSymbols":{"IERC165":[3774]},"nodeType":"SourceUnit","src":"106:87:10","nodes":[{"id":2162,"nodeType":"PragmaDirective","src":"106:25:10","nodes":[],"literals":["solidity",">=","0.4",".16"]},{"id":2164,"nodeType":"ImportDirective","src":"133:59:10","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","file":"../utils/introspection/IERC165.sol","nameLocation":"-1:-1:-1","scope":2165,"sourceUnit":3775,"symbolAliases":[{"foreign":{"id":2163,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3774,"src":"141:7:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"id":11,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol","id":2186,"exportedSymbols":{"IERC1967":[2185]},"nodeType":"SourceUnit","src":"107:530:11","nodes":[{"id":2166,"nodeType":"PragmaDirective","src":"107:25:11","nodes":[],"literals":["solidity",">=","0.4",".11"]},{"id":2185,"nodeType":"ContractDefinition","src":"236:400:11","nodes":[{"id":2172,"nodeType":"EventDefinition","src":"334:47:11","nodes":[],"anonymous":false,"documentation":{"id":2168,"nodeType":"StructuredDocumentation","src":"261:68:11","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","name":"Upgraded","nameLocation":"340:8:11","parameters":{"id":2171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"365:14:11","nodeType":"VariableDeclaration","scope":2172,"src":"349:30:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"349:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"348:32:11"}},{"id":2179,"nodeType":"EventDefinition","src":"459:60:11","nodes":[],"anonymous":false,"documentation":{"id":2173,"nodeType":"StructuredDocumentation","src":"387:67:11","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","name":"AdminChanged","nameLocation":"465:12:11","parameters":{"id":2178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2175,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"486:13:11","nodeType":"VariableDeclaration","scope":2179,"src":"478:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2174,"name":"address","nodeType":"ElementaryTypeName","src":"478:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2177,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"509:8:11","nodeType":"VariableDeclaration","scope":2179,"src":"501:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2176,"name":"address","nodeType":"ElementaryTypeName","src":"501:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"477:41:11"}},{"id":2184,"nodeType":"EventDefinition","src":"589:45:11","nodes":[],"anonymous":false,"documentation":{"id":2180,"nodeType":"StructuredDocumentation","src":"525:59:11","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","name":"BeaconUpgraded","nameLocation":"595:14:11","parameters":{"id":2183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2182,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"626:6:11","nodeType":"VariableDeclaration","scope":2184,"src":"610:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2181,"name":"address","nodeType":"ElementaryTypeName","src":"610:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"609:24:11"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1967","contractDependencies":[],"contractKind":"interface","documentation":{"id":2167,"nodeType":"StructuredDocumentation","src":"134:101:11","text":" @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC."},"fullyImplemented":true,"linearizedBaseContracts":[2185],"name":"IERC1967","nameLocation":"246:8:11","scope":2186,"usedErrors":[],"usedEvents":[2172,2179,2184]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"id":12,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol","id":2190,"exportedSymbols":{"IERC20":[2591]},"nodeType":"SourceUnit","src":"105:77:12","nodes":[{"id":2187,"nodeType":"PragmaDirective","src":"105:25:12","nodes":[],"literals":["solidity",">=","0.4",".16"]},{"id":2189,"nodeType":"ImportDirective","src":"132:49:12","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"../token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":2190,"sourceUnit":2592,"symbolAliases":[{"foreign":{"id":2188,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2591,"src":"140:6:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol":{"id":13,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol","id":2200,"exportedSymbols":{"IERC5313":[2199]},"nodeType":"SourceUnit","src":"107:328:13","nodes":[{"id":2191,"nodeType":"PragmaDirective","src":"107:25:13","nodes":[],"literals":["solidity",">=","0.4",".16"]},{"id":2199,"nodeType":"ContractDefinition","src":"299:135:13","nodes":[{"id":2198,"nodeType":"FunctionDefinition","src":"383:49:13","nodes":[],"documentation":{"id":2193,"nodeType":"StructuredDocumentation","src":"324:54:13","text":" @dev Gets the address of the owner."},"functionSelector":"8da5cb5b","implemented":false,"kind":"function","modifiers":[],"name":"owner","nameLocation":"392:5:13","parameters":{"id":2194,"nodeType":"ParameterList","parameters":[],"src":"397:2:13"},"returnParameters":{"id":2197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2196,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2198,"src":"423:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2195,"name":"address","nodeType":"ElementaryTypeName","src":"423:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"422:9:13"},"scope":2199,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC5313","contractDependencies":[],"contractKind":"interface","documentation":{"id":2192,"nodeType":"StructuredDocumentation","src":"134:164:13","text":" @dev Interface for the Light Contract Ownership Standard.\n A standardized minimal interface required to identify an account that controls a contract"},"fullyImplemented":false,"linearizedBaseContracts":[2199],"name":"IERC5313","nameLocation":"309:8:13","scope":2200,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"id":14,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","id":2210,"exportedSymbols":{"IERC1822Proxiable":[2209]},"nodeType":"SourceUnit","src":"113:769:14","nodes":[{"id":2201,"nodeType":"PragmaDirective","src":"113:25:14","nodes":[],"literals":["solidity",">=","0.4",".16"]},{"id":2209,"nodeType":"ContractDefinition","src":"345:536:14","nodes":[{"id":2208,"nodeType":"FunctionDefinition","src":"822:57:14","nodes":[],"documentation":{"id":2203,"nodeType":"StructuredDocumentation","src":"379:438:14","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","implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"831:13:14","parameters":{"id":2204,"nodeType":"ParameterList","parameters":[],"src":"844:2:14"},"returnParameters":{"id":2207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2206,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2208,"src":"870:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2205,"name":"bytes32","nodeType":"ElementaryTypeName","src":"870:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"869:9:14"},"scope":2209,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":2202,"nodeType":"StructuredDocumentation","src":"140:204:14","text":" @dev ERC-1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"linearizedBaseContracts":[2209],"name":"IERC1822Proxiable","nameLocation":"355:17:14","scope":2210,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"id":15,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol","id":2504,"exportedSymbols":{"Address":[3315],"ERC1967Utils":[2503],"IBeacon":[2513],"IERC1967":[2185],"StorageSlot":[3543]},"nodeType":"SourceUnit","src":"114:6124:15","nodes":[{"id":2211,"nodeType":"PragmaDirective","src":"114:24:15","nodes":[],"literals":["solidity","^","0.8",".21"]},{"id":2213,"nodeType":"ImportDirective","src":"140:46:15","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","nameLocation":"-1:-1:-1","scope":2504,"sourceUnit":2514,"symbolAliases":[{"foreign":{"id":2212,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2513,"src":"148:7:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2215,"nodeType":"ImportDirective","src":"187:55:15","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","nameLocation":"-1:-1:-1","scope":2504,"sourceUnit":2186,"symbolAliases":[{"foreign":{"id":2214,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2185,"src":"195:8:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2217,"nodeType":"ImportDirective","src":"243:48:15","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Address.sol","file":"../../utils/Address.sol","nameLocation":"-1:-1:-1","scope":2504,"sourceUnit":3316,"symbolAliases":[{"foreign":{"id":2216,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3315,"src":"251:7:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2219,"nodeType":"ImportDirective","src":"292:56:15","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":2504,"sourceUnit":3544,"symbolAliases":[{"foreign":{"id":2218,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3543,"src":"300:11:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2503,"nodeType":"ContractDefinition","src":"496:5741:15","nodes":[{"id":2224,"nodeType":"VariableDeclaration","src":"763:114:15","nodes":[],"constant":true,"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"523:170:15","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."},"mutability":"constant","name":"IMPLEMENTATION_SLOT","nameLocation":"789:19:15","scope":2503,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2222,"name":"bytes32","nodeType":"ElementaryTypeName","src":"763:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":2223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"811:66:15","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"id":2229,"nodeType":"ErrorDefinition","src":"958:59:15","nodes":[],"documentation":{"id":2225,"nodeType":"StructuredDocumentation","src":"884:69:15","text":" @dev The `implementation` of the proxy is invalid."},"errorSelector":"4c9c8ce3","name":"ERC1967InvalidImplementation","nameLocation":"964:28:15","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2227,"mutability":"mutable","name":"implementation","nameLocation":"1001:14:15","nodeType":"VariableDeclaration","scope":2229,"src":"993:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2226,"name":"address","nodeType":"ElementaryTypeName","src":"993:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"992:24:15"}},{"id":2234,"nodeType":"ErrorDefinition","src":"1088:41:15","nodes":[],"documentation":{"id":2230,"nodeType":"StructuredDocumentation","src":"1023:60:15","text":" @dev The `admin` of the proxy is invalid."},"errorSelector":"62e77ba2","name":"ERC1967InvalidAdmin","nameLocation":"1094:19:15","parameters":{"id":2233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2232,"mutability":"mutable","name":"admin","nameLocation":"1122:5:15","nodeType":"VariableDeclaration","scope":2234,"src":"1114:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2231,"name":"address","nodeType":"ElementaryTypeName","src":"1114:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1113:15:15"}},{"id":2239,"nodeType":"ErrorDefinition","src":"1201:43:15","nodes":[],"documentation":{"id":2235,"nodeType":"StructuredDocumentation","src":"1135:61:15","text":" @dev The `beacon` of the proxy is invalid."},"errorSelector":"64ced0ec","name":"ERC1967InvalidBeacon","nameLocation":"1207:20:15","parameters":{"id":2238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2237,"mutability":"mutable","name":"beacon","nameLocation":"1236:6:15","nodeType":"VariableDeclaration","scope":2239,"src":"1228:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2236,"name":"address","nodeType":"ElementaryTypeName","src":"1228:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1227:16:15"}},{"id":2242,"nodeType":"ErrorDefinition","src":"1337:26:15","nodes":[],"documentation":{"id":2240,"nodeType":"StructuredDocumentation","src":"1250:82:15","text":" @dev An upgrade function sees `msg.value > 0` that may be lost."},"errorSelector":"b398979f","name":"ERC1967NonPayable","nameLocation":"1343:17:15","parameters":{"id":2241,"nodeType":"ParameterList","parameters":[],"src":"1360:2:15"}},{"id":2255,"nodeType":"FunctionDefinition","src":"1441:138:15","nodes":[],"body":{"id":2254,"nodeType":"Block","src":"1502:77:15","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2250,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2224,"src":"1546:19:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2248,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3543,"src":"1519:11:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3543_$","typeString":"type(library StorageSlot)"}},"id":2249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1531:14:15","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":3454,"src":"1519:26:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3425_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":2251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1519:47:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3425_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":2252,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1567:5:15","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3424,"src":"1519:53:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2247,"id":2253,"nodeType":"Return","src":"1512:60:15"}]},"documentation":{"id":2243,"nodeType":"StructuredDocumentation","src":"1369:67:15","text":" @dev Returns the current implementation address."},"implemented":true,"kind":"function","modifiers":[],"name":"getImplementation","nameLocation":"1450:17:15","parameters":{"id":2244,"nodeType":"ParameterList","parameters":[],"src":"1467:2:15"},"returnParameters":{"id":2247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2246,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2255,"src":"1493:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2245,"name":"address","nodeType":"ElementaryTypeName","src":"1493:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1492:9:15"},"scope":2503,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2282,"nodeType":"FunctionDefinition","src":"1671:281:15","nodes":[],"body":{"id":2281,"nodeType":"Block","src":"1734:218:15","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2261,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2258,"src":"1748:17:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1766:4:15","memberName":"code","nodeType":"MemberAccess","src":"1748:22:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1771:6:15","memberName":"length","nodeType":"MemberAccess","src":"1748:29:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1781:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1748:34:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2271,"nodeType":"IfStatement","src":"1744:119:15","trueBody":{"id":2270,"nodeType":"Block","src":"1784:79:15","statements":[{"errorCall":{"arguments":[{"id":2267,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2258,"src":"1834:17:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2266,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2229,"src":"1805:28:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1805:47:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2269,"nodeType":"RevertStatement","src":"1798:54:15"}]}},{"expression":{"id":2279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":2275,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2224,"src":"1899:19:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2272,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3543,"src":"1872:11:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3543_$","typeString":"type(library StorageSlot)"}},"id":2274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1884:14:15","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":3454,"src":"1872:26:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3425_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":2276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1872:47:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3425_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":2277,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1920:5:15","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3424,"src":"1872:53:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2278,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2258,"src":"1928:17:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1872:73:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2280,"nodeType":"ExpressionStatement","src":"1872:73:15"}]},"documentation":{"id":2256,"nodeType":"StructuredDocumentation","src":"1585:81:15","text":" @dev Stores a new address in the ERC-1967 implementation slot."},"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1680:18:15","parameters":{"id":2259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2258,"mutability":"mutable","name":"newImplementation","nameLocation":"1707:17:15","nodeType":"VariableDeclaration","scope":2282,"src":"1699:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2257,"name":"address","nodeType":"ElementaryTypeName","src":"1699:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1698:27:15"},"returnParameters":{"id":2260,"nodeType":"ParameterList","parameters":[],"src":"1734:0:15"},"scope":2503,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":2318,"nodeType":"FunctionDefinition","src":"2264:344:15","nodes":[],"body":{"id":2317,"nodeType":"Block","src":"2345:263:15","nodes":[],"statements":[{"expression":{"arguments":[{"id":2291,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2285,"src":"2374:17:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2290,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2282,"src":"2355:18:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2355:37:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2293,"nodeType":"ExpressionStatement","src":"2355:37:15"},{"eventCall":{"arguments":[{"id":2297,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2285,"src":"2425:17:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2294,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2185,"src":"2407:8:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$2185_$","typeString":"type(contract IERC1967)"}},"id":2296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2416:8:15","memberName":"Upgraded","nodeType":"MemberAccess","referencedDeclaration":2172,"src":"2407:17:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2407:36:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2299,"nodeType":"EmitStatement","src":"2402:41:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2300,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"2458:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2463:6:15","memberName":"length","nodeType":"MemberAccess","src":"2458:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2472:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2458:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2315,"nodeType":"Block","src":"2559:43:15","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2312,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2502,"src":"2573:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2573:18:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2314,"nodeType":"ExpressionStatement","src":"2573:18:15"}]},"id":2316,"nodeType":"IfStatement","src":"2454:148:15","trueBody":{"id":2311,"nodeType":"Block","src":"2475:78:15","statements":[{"expression":{"arguments":[{"id":2307,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2285,"src":"2518:17:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2308,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"2537:4:15","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":2304,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3315,"src":"2489:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$3315_$","typeString":"type(library Address)"}},"id":2306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2497:20:15","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":3232,"src":"2489:28:15","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":2309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2489:53:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2310,"nodeType":"ExpressionStatement","src":"2489:53:15"}]}}]},"documentation":{"id":2283,"nodeType":"StructuredDocumentation","src":"1958:301:15","text":" @dev Performs implementation upgrade with additional setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-Upgraded} event."},"implemented":true,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"2273:16:15","parameters":{"id":2288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2285,"mutability":"mutable","name":"newImplementation","nameLocation":"2298:17:15","nodeType":"VariableDeclaration","scope":2318,"src":"2290:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2284,"name":"address","nodeType":"ElementaryTypeName","src":"2290:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2287,"mutability":"mutable","name":"data","nameLocation":"2330:4:15","nodeType":"VariableDeclaration","scope":2318,"src":"2317:17:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2286,"name":"bytes","nodeType":"ElementaryTypeName","src":"2317:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2289:46:15"},"returnParameters":{"id":2289,"nodeType":"ParameterList","parameters":[],"src":"2345:0:15"},"scope":2503,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2322,"nodeType":"VariableDeclaration","src":"2829:105:15","nodes":[],"constant":true,"documentation":{"id":2319,"nodeType":"StructuredDocumentation","src":"2614:145:15","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1."},"mutability":"constant","name":"ADMIN_SLOT","nameLocation":"2855:10:15","scope":2503,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2320,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2829:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2868:66:15","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"id":2335,"nodeType":"FunctionDefinition","src":"3287:120:15","nodes":[],"body":{"id":2334,"nodeType":"Block","src":"3339:68:15","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2330,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"3383:10:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2328,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3543,"src":"3356:11:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3543_$","typeString":"type(library StorageSlot)"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3368:14:15","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":3454,"src":"3356:26:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3425_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":2331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3356:38:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3425_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":2332,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3395:5:15","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3424,"src":"3356:44:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2327,"id":2333,"nodeType":"Return","src":"3349:51:15"}]},"documentation":{"id":2323,"nodeType":"StructuredDocumentation","src":"2941:341:15","text":" @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"implemented":true,"kind":"function","modifiers":[],"name":"getAdmin","nameLocation":"3296:8:15","parameters":{"id":2324,"nodeType":"ParameterList","parameters":[],"src":"3304:2:15"},"returnParameters":{"id":2327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2326,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2335,"src":"3330:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"3330:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3329:9:15"},"scope":2503,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2366,"nodeType":"FunctionDefinition","src":"3490:217:15","nodes":[],"body":{"id":2365,"nodeType":"Block","src":"3535:172:15","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2341,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2338,"src":"3549:8:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3569:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2343,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3561:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2342,"name":"address","nodeType":"ElementaryTypeName","src":"3561:7:15","typeDescriptions":{}}},"id":2345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3561:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3549:22:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2355,"nodeType":"IfStatement","src":"3545:91:15","trueBody":{"id":2354,"nodeType":"Block","src":"3573:63:15","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3622:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3614:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2348,"name":"address","nodeType":"ElementaryTypeName","src":"3614:7:15","typeDescriptions":{}}},"id":2351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3614:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2347,"name":"ERC1967InvalidAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2234,"src":"3594:19:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3594:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2353,"nodeType":"RevertStatement","src":"3587:38:15"}]}},{"expression":{"id":2363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":2359,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"3672:10:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2356,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3543,"src":"3645:11:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3543_$","typeString":"type(library StorageSlot)"}},"id":2358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3657:14:15","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":3454,"src":"3645:26:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3425_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":2360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3645:38:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3425_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":2361,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3684:5:15","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3424,"src":"3645:44:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2362,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2338,"src":"3692:8:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3645:55:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2364,"nodeType":"ExpressionStatement","src":"3645:55:15"}]},"documentation":{"id":2336,"nodeType":"StructuredDocumentation","src":"3413:72:15","text":" @dev Stores a new address in the ERC-1967 admin slot."},"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"3499:9:15","parameters":{"id":2339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2338,"mutability":"mutable","name":"newAdmin","nameLocation":"3517:8:15","nodeType":"VariableDeclaration","scope":2366,"src":"3509:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2337,"name":"address","nodeType":"ElementaryTypeName","src":"3509:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3508:18:15"},"returnParameters":{"id":2340,"nodeType":"ParameterList","parameters":[],"src":"3535:0:15"},"scope":2503,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":2385,"nodeType":"FunctionDefinition","src":"3827:142:15","nodes":[],"body":{"id":2384,"nodeType":"Block","src":"3875:94:15","nodes":[],"statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2375,"name":"getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2335,"src":"3912:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3912:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2377,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2369,"src":"3924:8:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2372,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2185,"src":"3890:8:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$2185_$","typeString":"type(contract IERC1967)"}},"id":2374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3899:12:15","memberName":"AdminChanged","nodeType":"MemberAccess","referencedDeclaration":2179,"src":"3890:21:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":2378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3890:43:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2379,"nodeType":"EmitStatement","src":"3885:48:15"},{"expression":{"arguments":[{"id":2381,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2369,"src":"3953:8:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2380,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2366,"src":"3943:9:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3943:19:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2383,"nodeType":"ExpressionStatement","src":"3943:19:15"}]},"documentation":{"id":2367,"nodeType":"StructuredDocumentation","src":"3713:109:15","text":" @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event."},"implemented":true,"kind":"function","modifiers":[],"name":"changeAdmin","nameLocation":"3836:11:15","parameters":{"id":2370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2369,"mutability":"mutable","name":"newAdmin","nameLocation":"3856:8:15","nodeType":"VariableDeclaration","scope":2385,"src":"3848:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2368,"name":"address","nodeType":"ElementaryTypeName","src":"3848:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3847:18:15"},"returnParameters":{"id":2371,"nodeType":"ParameterList","parameters":[],"src":"3875:0:15"},"scope":2503,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2389,"nodeType":"VariableDeclaration","src":"4246:106:15","nodes":[],"constant":true,"documentation":{"id":2386,"nodeType":"StructuredDocumentation","src":"3975:201:15","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1."},"mutability":"constant","name":"BEACON_SLOT","nameLocation":"4272:11:15","scope":2503,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2387,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4246:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":2388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4286:66:15","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"id":2402,"nodeType":"FunctionDefinition","src":"4415:122:15","nodes":[],"body":{"id":2401,"nodeType":"Block","src":"4468:69:15","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":2397,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2389,"src":"4512:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2395,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3543,"src":"4485:11:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3543_$","typeString":"type(library StorageSlot)"}},"id":2396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4497:14:15","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":3454,"src":"4485:26:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3425_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":2398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4485:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3425_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":2399,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4525:5:15","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3424,"src":"4485:45:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2394,"id":2400,"nodeType":"Return","src":"4478:52:15"}]},"documentation":{"id":2390,"nodeType":"StructuredDocumentation","src":"4359:51:15","text":" @dev Returns the current beacon."},"implemented":true,"kind":"function","modifiers":[],"name":"getBeacon","nameLocation":"4424:9:15","parameters":{"id":2391,"nodeType":"ParameterList","parameters":[],"src":"4433:2:15"},"returnParameters":{"id":2394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2393,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2402,"src":"4459:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2392,"name":"address","nodeType":"ElementaryTypeName","src":"4459:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4458:9:15"},"scope":2503,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2448,"nodeType":"FunctionDefinition","src":"4620:437:15","nodes":[],"body":{"id":2447,"nodeType":"Block","src":"4667:390:15","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2408,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2405,"src":"4681:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4691:4:15","memberName":"code","nodeType":"MemberAccess","src":"4681:14:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4696:6:15","memberName":"length","nodeType":"MemberAccess","src":"4681:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4706:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4681:26:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2418,"nodeType":"IfStatement","src":"4677:95:15","trueBody":{"id":2417,"nodeType":"Block","src":"4709:63:15","statements":[{"errorCall":{"arguments":[{"id":2414,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2405,"src":"4751:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2413,"name":"ERC1967InvalidBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"4730:20:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4730:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2416,"nodeType":"RevertStatement","src":"4723:38:15"}]}},{"expression":{"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":2422,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2389,"src":"4809:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2419,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3543,"src":"4782:11:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$3543_$","typeString":"type(library StorageSlot)"}},"id":2421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4794:14:15","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":3454,"src":"4782:26:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$3425_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":2423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4782:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3425_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":2424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4822:5:15","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":3424,"src":"4782:45:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2425,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2405,"src":"4830:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4782:57:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2427,"nodeType":"ExpressionStatement","src":"4782:57:15"},{"assignments":[2429],"declarations":[{"constant":false,"id":2429,"mutability":"mutable","name":"beaconImplementation","nameLocation":"4858:20:15","nodeType":"VariableDeclaration","scope":2447,"src":"4850:28:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2428,"name":"address","nodeType":"ElementaryTypeName","src":"4850:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2435,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2431,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2405,"src":"4889:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2430,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2513,"src":"4881:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$2513_$","typeString":"type(contract IBeacon)"}},"id":2432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4881:18:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$2513","typeString":"contract IBeacon"}},"id":2433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4900:14:15","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":2512,"src":"4881:33:15","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":2434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4881:35:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4850:66:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2436,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2429,"src":"4930:20:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4951:4:15","memberName":"code","nodeType":"MemberAccess","src":"4930:25:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4956:6:15","memberName":"length","nodeType":"MemberAccess","src":"4930:32:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4966:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4930:37:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2446,"nodeType":"IfStatement","src":"4926:125:15","trueBody":{"id":2445,"nodeType":"Block","src":"4969:82:15","statements":[{"errorCall":{"arguments":[{"id":2442,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2429,"src":"5019:20:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2441,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2229,"src":"4990:28:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4990:50:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2444,"nodeType":"RevertStatement","src":"4983:57:15"}]}}]},"documentation":{"id":2403,"nodeType":"StructuredDocumentation","src":"4543:72:15","text":" @dev Stores a new beacon in the ERC-1967 beacon slot."},"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"4629:10:15","parameters":{"id":2406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2405,"mutability":"mutable","name":"newBeacon","nameLocation":"4648:9:15","nodeType":"VariableDeclaration","scope":2448,"src":"4640:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2404,"name":"address","nodeType":"ElementaryTypeName","src":"4640:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4639:19:15"},"returnParameters":{"id":2407,"nodeType":"ParameterList","parameters":[],"src":"4667:0:15"},"scope":2503,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":2488,"nodeType":"FunctionDefinition","src":"5582:342:15","nodes":[],"body":{"id":2487,"nodeType":"Block","src":"5661:263:15","nodes":[],"statements":[{"expression":{"arguments":[{"id":2457,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2451,"src":"5682:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2456,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2448,"src":"5671:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5671:21:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2459,"nodeType":"ExpressionStatement","src":"5671:21:15"},{"eventCall":{"arguments":[{"id":2463,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2451,"src":"5731:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2460,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2185,"src":"5707:8:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$2185_$","typeString":"type(contract IERC1967)"}},"id":2462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5716:14:15","memberName":"BeaconUpgraded","nodeType":"MemberAccess","referencedDeclaration":2184,"src":"5707:23:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5707:34:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2465,"nodeType":"EmitStatement","src":"5702:39:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2466,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2453,"src":"5756:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5761:6:15","memberName":"length","nodeType":"MemberAccess","src":"5756:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5770:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5756:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2485,"nodeType":"Block","src":"5875:43:15","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2482,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2502,"src":"5889:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5889:18:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2484,"nodeType":"ExpressionStatement","src":"5889:18:15"}]},"id":2486,"nodeType":"IfStatement","src":"5752:166:15","trueBody":{"id":2481,"nodeType":"Block","src":"5773:96:15","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2474,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2451,"src":"5824:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2473,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2513,"src":"5816:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$2513_$","typeString":"type(contract IBeacon)"}},"id":2475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5816:18:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$2513","typeString":"contract IBeacon"}},"id":2476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5835:14:15","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":2512,"src":"5816:33:15","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":2477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5816:35:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2478,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2453,"src":"5853:4:15","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":2470,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3315,"src":"5787:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$3315_$","typeString":"type(library Address)"}},"id":2472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5795:20:15","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":3232,"src":"5787:28:15","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":2479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5787:71:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2480,"nodeType":"ExpressionStatement","src":"5787:71:15"}]}}]},"documentation":{"id":2449,"nodeType":"StructuredDocumentation","src":"5063:514:15","text":" @dev Change the beacon and trigger a setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-BeaconUpgraded} event.\n CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n efficiency."},"implemented":true,"kind":"function","modifiers":[],"name":"upgradeBeaconToAndCall","nameLocation":"5591:22:15","parameters":{"id":2454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2451,"mutability":"mutable","name":"newBeacon","nameLocation":"5622:9:15","nodeType":"VariableDeclaration","scope":2488,"src":"5614:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2450,"name":"address","nodeType":"ElementaryTypeName","src":"5614:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2453,"mutability":"mutable","name":"data","nameLocation":"5646:4:15","nodeType":"VariableDeclaration","scope":2488,"src":"5633:17:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2452,"name":"bytes","nodeType":"ElementaryTypeName","src":"5633:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5613:38:15"},"returnParameters":{"id":2455,"nodeType":"ParameterList","parameters":[],"src":"5661:0:15"},"scope":2503,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2502,"nodeType":"FunctionDefinition","src":"6113:122:15","nodes":[],"body":{"id":2501,"nodeType":"Block","src":"6149:86:15","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2492,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6163:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6167:5:15","memberName":"value","nodeType":"MemberAccess","src":"6163:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6175:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6163:13:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2500,"nodeType":"IfStatement","src":"6159:70:15","trueBody":{"id":2499,"nodeType":"Block","src":"6178:51:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2496,"name":"ERC1967NonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"6199:17:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6199:19:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2498,"nodeType":"RevertStatement","src":"6192:26:15"}]}}]},"documentation":{"id":2489,"nodeType":"StructuredDocumentation","src":"5930:178:15","text":" @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n if an upgrade doesn't perform an initialization call."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkNonPayable","nameLocation":"6122:16:15","parameters":{"id":2490,"nodeType":"ParameterList","parameters":[],"src":"6138:2:15"},"returnParameters":{"id":2491,"nodeType":"ParameterList","parameters":[],"src":"6149:0:15"},"scope":2503,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[],"canonicalName":"ERC1967Utils","contractDependencies":[],"contractKind":"library","documentation":{"id":2220,"nodeType":"StructuredDocumentation","src":"350:145:15","text":" @dev This library provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots."},"fullyImplemented":true,"linearizedBaseContracts":[2503],"name":"ERC1967Utils","nameLocation":"504:12:15","scope":2504,"usedErrors":[2229,2234,2239,2242],"usedEvents":[]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"id":16,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol","id":2514,"exportedSymbols":{"IBeacon":[2513]},"nodeType":"SourceUnit","src":"108:365:16","nodes":[{"id":2505,"nodeType":"PragmaDirective","src":"108:25:16","nodes":[],"literals":["solidity",">=","0.4",".16"]},{"id":2513,"nodeType":"ContractDefinition","src":"215:257:16","nodes":[{"id":2512,"nodeType":"FunctionDefinition","src":"412:58:16","nodes":[],"documentation":{"id":2507,"nodeType":"StructuredDocumentation","src":"239:168:16","text":" @dev Must return an address that can be used as a delegate call target.\n {UpgradeableBeacon} will check that this address is a contract."},"functionSelector":"5c60da1b","implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"421:14:16","parameters":{"id":2508,"nodeType":"ParameterList","parameters":[],"src":"435:2:16"},"returnParameters":{"id":2511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2510,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2512,"src":"461:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2509,"name":"address","nodeType":"ElementaryTypeName","src":"461:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"460:9:16"},"scope":2513,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":2506,"nodeType":"StructuredDocumentation","src":"135:79:16","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"linearizedBaseContracts":[2513],"name":"IBeacon","nameLocation":"225:7:16","scope":2514,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"id":17,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","id":2592,"exportedSymbols":{"IERC20":[2591]},"nodeType":"SourceUnit","src":"106:2675:17","nodes":[{"id":2515,"nodeType":"PragmaDirective","src":"106:25:17","nodes":[],"literals":["solidity",">=","0.4",".16"]},{"id":2591,"nodeType":"ContractDefinition","src":"205:2575:17","nodes":[{"id":2525,"nodeType":"EventDefinition","src":"391:72:17","nodes":[],"anonymous":false,"documentation":{"id":2517,"nodeType":"StructuredDocumentation","src":"228:158:17","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","name":"Transfer","nameLocation":"397:8:17","parameters":{"id":2524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2519,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"422:4:17","nodeType":"VariableDeclaration","scope":2525,"src":"406:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2518,"name":"address","nodeType":"ElementaryTypeName","src":"406:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2521,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"444:2:17","nodeType":"VariableDeclaration","scope":2525,"src":"428:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2520,"name":"address","nodeType":"ElementaryTypeName","src":"428:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2523,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"456:5:17","nodeType":"VariableDeclaration","scope":2525,"src":"448:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2522,"name":"uint256","nodeType":"ElementaryTypeName","src":"448:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"405:57:17"}},{"id":2534,"nodeType":"EventDefinition","src":"622:78:17","nodes":[],"anonymous":false,"documentation":{"id":2526,"nodeType":"StructuredDocumentation","src":"469:148:17","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","name":"Approval","nameLocation":"628:8:17","parameters":{"id":2533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2528,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"653:5:17","nodeType":"VariableDeclaration","scope":2534,"src":"637:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2527,"name":"address","nodeType":"ElementaryTypeName","src":"637:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2530,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"676:7:17","nodeType":"VariableDeclaration","scope":2534,"src":"660:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2529,"name":"address","nodeType":"ElementaryTypeName","src":"660:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2532,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"693:5:17","nodeType":"VariableDeclaration","scope":2534,"src":"685:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2531,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"636:63:17"}},{"id":2540,"nodeType":"FunctionDefinition","src":"776:55:17","nodes":[],"documentation":{"id":2535,"nodeType":"StructuredDocumentation","src":"706:65:17","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"785:11:17","parameters":{"id":2536,"nodeType":"ParameterList","parameters":[],"src":"796:2:17"},"returnParameters":{"id":2539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2538,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2540,"src":"822:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2537,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:9:17"},"scope":2591,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2548,"nodeType":"FunctionDefinition","src":"913:68:17","nodes":[],"documentation":{"id":2541,"nodeType":"StructuredDocumentation","src":"837:71:17","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"922:9:17","parameters":{"id":2544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2543,"mutability":"mutable","name":"account","nameLocation":"940:7:17","nodeType":"VariableDeclaration","scope":2548,"src":"932:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2542,"name":"address","nodeType":"ElementaryTypeName","src":"932:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"931:17:17"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2546,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2548,"src":"972:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2545,"name":"uint256","nodeType":"ElementaryTypeName","src":"972:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"971:9:17"},"scope":2591,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2558,"nodeType":"FunctionDefinition","src":"1205:69:17","nodes":[],"documentation":{"id":2549,"nodeType":"StructuredDocumentation","src":"987:213:17","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1214:8:17","parameters":{"id":2554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2551,"mutability":"mutable","name":"to","nameLocation":"1231:2:17","nodeType":"VariableDeclaration","scope":2558,"src":"1223:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2550,"name":"address","nodeType":"ElementaryTypeName","src":"1223:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2553,"mutability":"mutable","name":"value","nameLocation":"1243:5:17","nodeType":"VariableDeclaration","scope":2558,"src":"1235:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2552,"name":"uint256","nodeType":"ElementaryTypeName","src":"1235:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1222:27:17"},"returnParameters":{"id":2557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2556,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2558,"src":"1268:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2555,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1267:6:17"},"scope":2591,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2568,"nodeType":"FunctionDefinition","src":"1549:83:17","nodes":[],"documentation":{"id":2559,"nodeType":"StructuredDocumentation","src":"1280:264:17","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","implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1558:9:17","parameters":{"id":2564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2561,"mutability":"mutable","name":"owner","nameLocation":"1576:5:17","nodeType":"VariableDeclaration","scope":2568,"src":"1568:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2560,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"spender","nameLocation":"1591:7:17","nodeType":"VariableDeclaration","scope":2568,"src":"1583:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2562,"name":"address","nodeType":"ElementaryTypeName","src":"1583:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1567:32:17"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2568,"src":"1623:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2565,"name":"uint256","nodeType":"ElementaryTypeName","src":"1623:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1622:9:17"},"scope":2591,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2578,"nodeType":"FunctionDefinition","src":"2310:73:17","nodes":[],"documentation":{"id":2569,"nodeType":"StructuredDocumentation","src":"1638:667:17","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2319:7:17","parameters":{"id":2574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2571,"mutability":"mutable","name":"spender","nameLocation":"2335:7:17","nodeType":"VariableDeclaration","scope":2578,"src":"2327:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2570,"name":"address","nodeType":"ElementaryTypeName","src":"2327:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2573,"mutability":"mutable","name":"value","nameLocation":"2352:5:17","nodeType":"VariableDeclaration","scope":2578,"src":"2344:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2572,"name":"uint256","nodeType":"ElementaryTypeName","src":"2344:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2326:32:17"},"returnParameters":{"id":2577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2576,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2578,"src":"2377:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2575,"name":"bool","nodeType":"ElementaryTypeName","src":"2377:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2376:6:17"},"scope":2591,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2590,"nodeType":"FunctionDefinition","src":"2691:87:17","nodes":[],"documentation":{"id":2579,"nodeType":"StructuredDocumentation","src":"2389:297:17","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2700:12:17","parameters":{"id":2586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2581,"mutability":"mutable","name":"from","nameLocation":"2721:4:17","nodeType":"VariableDeclaration","scope":2590,"src":"2713:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2580,"name":"address","nodeType":"ElementaryTypeName","src":"2713:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2583,"mutability":"mutable","name":"to","nameLocation":"2735:2:17","nodeType":"VariableDeclaration","scope":2590,"src":"2727:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2582,"name":"address","nodeType":"ElementaryTypeName","src":"2727:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2585,"mutability":"mutable","name":"value","nameLocation":"2747:5:17","nodeType":"VariableDeclaration","scope":2590,"src":"2739:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2584,"name":"uint256","nodeType":"ElementaryTypeName","src":"2739:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2712:41:17"},"returnParameters":{"id":2589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2588,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2590,"src":"2772:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2587,"name":"bool","nodeType":"ElementaryTypeName","src":"2772:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2771:6:17"},"scope":2591,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":2516,"nodeType":"StructuredDocumentation","src":"133:71:17","text":" @dev Interface of the ERC-20 standard as defined in the ERC."},"fullyImplemented":false,"linearizedBaseContracts":[2591],"name":"IERC20","nameLocation":"215:6:17","scope":2592,"usedErrors":[],"usedEvents":[2525,2534]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"id":18,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol","id":3056,"exportedSymbols":{"IERC1363":[2160],"IERC20":[2591],"SafeERC20":[3055]},"nodeType":"SourceUnit","src":"115:9960:18","nodes":[{"id":2593,"nodeType":"PragmaDirective","src":"115:24:18","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":2595,"nodeType":"ImportDirective","src":"141:37:18","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","nameLocation":"-1:-1:-1","scope":3056,"sourceUnit":2592,"symbolAliases":[{"foreign":{"id":2594,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2591,"src":"149:6:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2597,"nodeType":"ImportDirective","src":"179:58:18","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol","file":"../../../interfaces/IERC1363.sol","nameLocation":"-1:-1:-1","scope":3056,"sourceUnit":2161,"symbolAliases":[{"foreign":{"id":2596,"name":"IERC1363","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2160,"src":"187:8:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":3055,"nodeType":"ContractDefinition","src":"698:9376:18","nodes":[{"id":2603,"nodeType":"ErrorDefinition","src":"792:46:18","nodes":[],"documentation":{"id":2599,"nodeType":"StructuredDocumentation","src":"722:65:18","text":" @dev An operation with an ERC-20 token failed."},"errorSelector":"5274afe7","name":"SafeERC20FailedOperation","nameLocation":"798:24:18","parameters":{"id":2602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2601,"mutability":"mutable","name":"token","nameLocation":"831:5:18","nodeType":"VariableDeclaration","scope":2603,"src":"823:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2600,"name":"address","nodeType":"ElementaryTypeName","src":"823:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"822:15:18"}},{"id":2612,"nodeType":"ErrorDefinition","src":"920:109:18","nodes":[],"documentation":{"id":2604,"nodeType":"StructuredDocumentation","src":"844:71:18","text":" @dev Indicates a failed `decreaseAllowance` request."},"errorSelector":"e570110f","name":"SafeERC20FailedDecreaseAllowance","nameLocation":"926:32:18","parameters":{"id":2611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2606,"mutability":"mutable","name":"spender","nameLocation":"967:7:18","nodeType":"VariableDeclaration","scope":2612,"src":"959:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2605,"name":"address","nodeType":"ElementaryTypeName","src":"959:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2608,"mutability":"mutable","name":"currentAllowance","nameLocation":"984:16:18","nodeType":"VariableDeclaration","scope":2612,"src":"976:24:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2607,"name":"uint256","nodeType":"ElementaryTypeName","src":"976:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2610,"mutability":"mutable","name":"requestedDecrease","nameLocation":"1010:17:18","nodeType":"VariableDeclaration","scope":2612,"src":"1002:25:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2609,"name":"uint256","nodeType":"ElementaryTypeName","src":"1002:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"958:70:18"}},{"id":2636,"nodeType":"FunctionDefinition","src":"1219:160:18","nodes":[],"body":{"id":2635,"nodeType":"Block","src":"1291:88:18","nodes":[],"statements":[{"expression":{"arguments":[{"id":2624,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2616,"src":"1321:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":2627,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2616,"src":"1343:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"id":2628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1349:8:18","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2558,"src":"1343:14:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":2629,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2618,"src":"1360:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2630,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2620,"src":"1364:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2631,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1359:11:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":2625,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1328:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2626,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1332:10:18","memberName":"encodeCall","nodeType":"MemberAccess","src":"1328:14:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1328:43:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2623,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3013,"src":"1301:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":2633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1301:71:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2634,"nodeType":"ExpressionStatement","src":"1301:71:18"}]},"documentation":{"id":2613,"nodeType":"StructuredDocumentation","src":"1035:179:18","text":" @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"1228:12:18","parameters":{"id":2621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2616,"mutability":"mutable","name":"token","nameLocation":"1248:5:18","nodeType":"VariableDeclaration","scope":2636,"src":"1241:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":2615,"nodeType":"UserDefinedTypeName","pathNode":{"id":2614,"name":"IERC20","nameLocations":["1241:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"1241:6:18"},"referencedDeclaration":2591,"src":"1241:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2618,"mutability":"mutable","name":"to","nameLocation":"1263:2:18","nodeType":"VariableDeclaration","scope":2636,"src":"1255:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2617,"name":"address","nodeType":"ElementaryTypeName","src":"1255:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2620,"mutability":"mutable","name":"value","nameLocation":"1275:5:18","nodeType":"VariableDeclaration","scope":2636,"src":"1267:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2619,"name":"uint256","nodeType":"ElementaryTypeName","src":"1267:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1240:41:18"},"returnParameters":{"id":2622,"nodeType":"ParameterList","parameters":[],"src":"1291:0:18"},"scope":3055,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2663,"nodeType":"FunctionDefinition","src":"1618:188:18","nodes":[],"body":{"id":2662,"nodeType":"Block","src":"1708:98:18","nodes":[],"statements":[{"expression":{"arguments":[{"id":2650,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"1738:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":2653,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"1760:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"id":2654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1766:12:18","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2590,"src":"1760:18:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},{"components":[{"id":2655,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2642,"src":"1781:4:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2656,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"1787:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2657,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2646,"src":"1791:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2658,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1780:17:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}],"expression":{"id":2651,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1745:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1749:10:18","memberName":"encodeCall","nodeType":"MemberAccess","src":"1745:14:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1745:53:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2649,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3013,"src":"1718:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":2660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1718:81:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2661,"nodeType":"ExpressionStatement","src":"1718:81:18"}]},"documentation":{"id":2637,"nodeType":"StructuredDocumentation","src":"1385:228:18","text":" @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful."},"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1627:16:18","parameters":{"id":2647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2640,"mutability":"mutable","name":"token","nameLocation":"1651:5:18","nodeType":"VariableDeclaration","scope":2663,"src":"1644:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":2639,"nodeType":"UserDefinedTypeName","pathNode":{"id":2638,"name":"IERC20","nameLocations":["1644:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"1644:6:18"},"referencedDeclaration":2591,"src":"1644:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2642,"mutability":"mutable","name":"from","nameLocation":"1666:4:18","nodeType":"VariableDeclaration","scope":2663,"src":"1658:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2641,"name":"address","nodeType":"ElementaryTypeName","src":"1658:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2644,"mutability":"mutable","name":"to","nameLocation":"1680:2:18","nodeType":"VariableDeclaration","scope":2663,"src":"1672:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2643,"name":"address","nodeType":"ElementaryTypeName","src":"1672:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2646,"mutability":"mutable","name":"value","nameLocation":"1692:5:18","nodeType":"VariableDeclaration","scope":2663,"src":"1684:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2645,"name":"uint256","nodeType":"ElementaryTypeName","src":"1684:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1643:55:18"},"returnParameters":{"id":2648,"nodeType":"ParameterList","parameters":[],"src":"1708:0:18"},"scope":3055,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2689,"nodeType":"FunctionDefinition","src":"1943:189:18","nodes":[],"body":{"id":2688,"nodeType":"Block","src":"2033:99:18","nodes":[],"statements":[{"expression":{"arguments":[{"id":2677,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"2074:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":2680,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"2096:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2102:8:18","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2558,"src":"2096:14:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":2682,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2669,"src":"2113:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2683,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2671,"src":"2117:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2684,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2112:11:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":2678,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2081:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2085:10:18","memberName":"encodeCall","nodeType":"MemberAccess","src":"2081:14:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2081:43:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2676,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3054,"src":"2050:23:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20,bytes memory) returns (bool)"}},"id":2686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2050:75:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2675,"id":2687,"nodeType":"Return","src":"2043:82:18"}]},"documentation":{"id":2664,"nodeType":"StructuredDocumentation","src":"1812:126:18","text":" @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful."},"implemented":true,"kind":"function","modifiers":[],"name":"trySafeTransfer","nameLocation":"1952:15:18","parameters":{"id":2672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2667,"mutability":"mutable","name":"token","nameLocation":"1975:5:18","nodeType":"VariableDeclaration","scope":2689,"src":"1968:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":2666,"nodeType":"UserDefinedTypeName","pathNode":{"id":2665,"name":"IERC20","nameLocations":["1968:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"1968:6:18"},"referencedDeclaration":2591,"src":"1968:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2669,"mutability":"mutable","name":"to","nameLocation":"1990:2:18","nodeType":"VariableDeclaration","scope":2689,"src":"1982:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2668,"name":"address","nodeType":"ElementaryTypeName","src":"1982:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2671,"mutability":"mutable","name":"value","nameLocation":"2002:5:18","nodeType":"VariableDeclaration","scope":2689,"src":"1994:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2670,"name":"uint256","nodeType":"ElementaryTypeName","src":"1994:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1967:41:18"},"returnParameters":{"id":2675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2674,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2689,"src":"2027:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2673,"name":"bool","nodeType":"ElementaryTypeName","src":"2027:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2026:6:18"},"scope":3055,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2718,"nodeType":"FunctionDefinition","src":"2273:217:18","nodes":[],"body":{"id":2717,"nodeType":"Block","src":"2381:109:18","nodes":[],"statements":[{"expression":{"arguments":[{"id":2705,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"2422:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":2708,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"2444:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"id":2709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2450:12:18","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2590,"src":"2444:18:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},{"components":[{"id":2710,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"2465:4:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2697,"src":"2471:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2712,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2699,"src":"2475:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2464:17:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}],"expression":{"id":2706,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2429:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2433:10:18","memberName":"encodeCall","nodeType":"MemberAccess","src":"2429:14:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2429:53:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2704,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3054,"src":"2398:23:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20,bytes memory) returns (bool)"}},"id":2715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2398:85:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2703,"id":2716,"nodeType":"Return","src":"2391:92:18"}]},"documentation":{"id":2690,"nodeType":"StructuredDocumentation","src":"2138:130:18","text":" @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful."},"implemented":true,"kind":"function","modifiers":[],"name":"trySafeTransferFrom","nameLocation":"2282:19:18","parameters":{"id":2700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2693,"mutability":"mutable","name":"token","nameLocation":"2309:5:18","nodeType":"VariableDeclaration","scope":2718,"src":"2302:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":2692,"nodeType":"UserDefinedTypeName","pathNode":{"id":2691,"name":"IERC20","nameLocations":["2302:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"2302:6:18"},"referencedDeclaration":2591,"src":"2302:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"from","nameLocation":"2324:4:18","nodeType":"VariableDeclaration","scope":2718,"src":"2316:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2694,"name":"address","nodeType":"ElementaryTypeName","src":"2316:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"to","nameLocation":"2338:2:18","nodeType":"VariableDeclaration","scope":2718,"src":"2330:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2696,"name":"address","nodeType":"ElementaryTypeName","src":"2330:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2699,"mutability":"mutable","name":"value","nameLocation":"2350:5:18","nodeType":"VariableDeclaration","scope":2718,"src":"2342:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2698,"name":"uint256","nodeType":"ElementaryTypeName","src":"2342:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2301:55:18"},"returnParameters":{"id":2703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2702,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2718,"src":"2375:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2701,"name":"bool","nodeType":"ElementaryTypeName","src":"2375:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2374:6:18"},"scope":3055,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2749,"nodeType":"FunctionDefinition","src":"3146:225:18","nodes":[],"body":{"id":2748,"nodeType":"Block","src":"3232:139:18","nodes":[],"statements":[{"assignments":[2730],"declarations":[{"constant":false,"id":2730,"mutability":"mutable","name":"oldAllowance","nameLocation":"3250:12:18","nodeType":"VariableDeclaration","scope":2748,"src":"3242:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2729,"name":"uint256","nodeType":"ElementaryTypeName","src":"3242:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2739,"initialValue":{"arguments":[{"arguments":[{"id":2735,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3289:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$3055","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3055","typeString":"library SafeERC20"}],"id":2734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3281:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2733,"name":"address","nodeType":"ElementaryTypeName","src":"3281:7:18","typeDescriptions":{}}},"id":2736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3281:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2737,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2724,"src":"3296:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2731,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2722,"src":"3265:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"id":2732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3271:9:18","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2568,"src":"3265:15:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":2738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3265:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3242:62:18"},{"expression":{"arguments":[{"id":2741,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2722,"src":"3327:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},{"id":2742,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2724,"src":"3334:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2743,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2730,"src":"3343:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2744,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2726,"src":"3358:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3343:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2740,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"3314:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":2746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3314:50:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2747,"nodeType":"ExpressionStatement","src":"3314:50:18"}]},"documentation":{"id":2719,"nodeType":"StructuredDocumentation","src":"2496:645:18","text":" @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior."},"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"3155:21:18","parameters":{"id":2727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2722,"mutability":"mutable","name":"token","nameLocation":"3184:5:18","nodeType":"VariableDeclaration","scope":2749,"src":"3177:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":2721,"nodeType":"UserDefinedTypeName","pathNode":{"id":2720,"name":"IERC20","nameLocations":["3177:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"3177:6:18"},"referencedDeclaration":2591,"src":"3177:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2724,"mutability":"mutable","name":"spender","nameLocation":"3199:7:18","nodeType":"VariableDeclaration","scope":2749,"src":"3191:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2723,"name":"address","nodeType":"ElementaryTypeName","src":"3191:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2726,"mutability":"mutable","name":"value","nameLocation":"3216:5:18","nodeType":"VariableDeclaration","scope":2749,"src":"3208:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2725,"name":"uint256","nodeType":"ElementaryTypeName","src":"3208:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3176:46:18"},"returnParameters":{"id":2728,"nodeType":"ParameterList","parameters":[],"src":"3232:0:18"},"scope":3055,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2792,"nodeType":"FunctionDefinition","src":"4039:468:18","nodes":[],"body":{"id":2791,"nodeType":"Block","src":"4137:370:18","nodes":[],"statements":[{"id":2790,"nodeType":"UncheckedBlock","src":"4147:354:18","statements":[{"assignments":[2761],"declarations":[{"constant":false,"id":2761,"mutability":"mutable","name":"currentAllowance","nameLocation":"4179:16:18","nodeType":"VariableDeclaration","scope":2790,"src":"4171:24:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2760,"name":"uint256","nodeType":"ElementaryTypeName","src":"4171:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2770,"initialValue":{"arguments":[{"arguments":[{"id":2766,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4222:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$3055","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3055","typeString":"library SafeERC20"}],"id":2765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4214:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2764,"name":"address","nodeType":"ElementaryTypeName","src":"4214:7:18","typeDescriptions":{}}},"id":2767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4214:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2768,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2755,"src":"4229:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2762,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"4198:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"id":2763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4204:9:18","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2568,"src":"4198:15:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":2769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4198:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4171:66:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2771,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2761,"src":"4255:16:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2772,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2757,"src":"4274:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4255:36:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2781,"nodeType":"IfStatement","src":"4251:160:18","trueBody":{"id":2780,"nodeType":"Block","src":"4293:118:18","statements":[{"errorCall":{"arguments":[{"id":2775,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2755,"src":"4351:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2776,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2761,"src":"4360:16:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2777,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2757,"src":"4378:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2774,"name":"SafeERC20FailedDecreaseAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2612,"src":"4318:32:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":2778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4318:78:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2779,"nodeType":"RevertStatement","src":"4311:85:18"}]}},{"expression":{"arguments":[{"id":2783,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"4437:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},{"id":2784,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2755,"src":"4444:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2785,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2761,"src":"4453:16:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2786,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2757,"src":"4472:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4453:36:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2782,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"4424:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":2788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4424:66:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2789,"nodeType":"ExpressionStatement","src":"4424:66:18"}]}]},"documentation":{"id":2750,"nodeType":"StructuredDocumentation","src":"3377:657:18","text":" @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n value, non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior."},"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"4048:21:18","parameters":{"id":2758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2753,"mutability":"mutable","name":"token","nameLocation":"4077:5:18","nodeType":"VariableDeclaration","scope":2792,"src":"4070:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":2752,"nodeType":"UserDefinedTypeName","pathNode":{"id":2751,"name":"IERC20","nameLocations":["4070:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"4070:6:18"},"referencedDeclaration":2591,"src":"4070:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2755,"mutability":"mutable","name":"spender","nameLocation":"4092:7:18","nodeType":"VariableDeclaration","scope":2792,"src":"4084:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2754,"name":"address","nodeType":"ElementaryTypeName","src":"4084:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2757,"mutability":"mutable","name":"requestedDecrease","nameLocation":"4109:17:18","nodeType":"VariableDeclaration","scope":2792,"src":"4101:25:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2756,"name":"uint256","nodeType":"ElementaryTypeName","src":"4101:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4069:58:18"},"returnParameters":{"id":2759,"nodeType":"ParameterList","parameters":[],"src":"4137:0:18"},"scope":3055,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2839,"nodeType":"FunctionDefinition","src":"5084:380:18","nodes":[],"body":{"id":2838,"nodeType":"Block","src":"5161:303:18","nodes":[],"statements":[{"assignments":[2804],"declarations":[{"constant":false,"id":2804,"mutability":"mutable","name":"approvalCall","nameLocation":"5184:12:18","nodeType":"VariableDeclaration","scope":2838,"src":"5171:25:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2803,"name":"bytes","nodeType":"ElementaryTypeName","src":"5171:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2813,"initialValue":{"arguments":[{"expression":{"id":2807,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2796,"src":"5214:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"id":2808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5220:7:18","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2578,"src":"5214:13:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":2809,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2798,"src":"5230:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2810,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"5239:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2811,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5229:16:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":2805,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5199:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2806,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5203:10:18","memberName":"encodeCall","nodeType":"MemberAccess","src":"5199:14:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5199:47:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5171:75:18"},{"condition":{"id":2818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5261:45:18","subExpression":{"arguments":[{"id":2815,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2796,"src":"5286:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},{"id":2816,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2804,"src":"5293:12:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2814,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3054,"src":"5262:23:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20,bytes memory) returns (bool)"}},"id":2817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5262:44:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2837,"nodeType":"IfStatement","src":"5257:201:18","trueBody":{"id":2836,"nodeType":"Block","src":"5308:150:18","statements":[{"expression":{"arguments":[{"id":2820,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2796,"src":"5342:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":2823,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2796,"src":"5364:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"id":2824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5370:7:18","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2578,"src":"5364:13:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":2825,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2798,"src":"5380:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":2826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5389:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2827,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5379:12:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_rational_0_by_1_$","typeString":"tuple(address,int_const 0)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_rational_0_by_1_$","typeString":"tuple(address,int_const 0)"}],"expression":{"id":2821,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5349:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2822,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5353:10:18","memberName":"encodeCall","nodeType":"MemberAccess","src":"5349:14:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5349:43:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2819,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3013,"src":"5322:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":2829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5322:71:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2830,"nodeType":"ExpressionStatement","src":"5322:71:18"},{"expression":{"arguments":[{"id":2832,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2796,"src":"5427:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},{"id":2833,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2804,"src":"5434:12:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2831,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3013,"src":"5407:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":2834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5407:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2835,"nodeType":"ExpressionStatement","src":"5407:40:18"}]}}]},"documentation":{"id":2793,"nodeType":"StructuredDocumentation","src":"4513:566:18","text":" @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT.\n NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n set here."},"implemented":true,"kind":"function","modifiers":[],"name":"forceApprove","nameLocation":"5093:12:18","parameters":{"id":2801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2796,"mutability":"mutable","name":"token","nameLocation":"5113:5:18","nodeType":"VariableDeclaration","scope":2839,"src":"5106:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":2795,"nodeType":"UserDefinedTypeName","pathNode":{"id":2794,"name":"IERC20","nameLocations":["5106:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"5106:6:18"},"referencedDeclaration":2591,"src":"5106:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2798,"mutability":"mutable","name":"spender","nameLocation":"5128:7:18","nodeType":"VariableDeclaration","scope":2839,"src":"5120:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2797,"name":"address","nodeType":"ElementaryTypeName","src":"5120:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2800,"mutability":"mutable","name":"value","nameLocation":"5145:5:18","nodeType":"VariableDeclaration","scope":2839,"src":"5137:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2799,"name":"uint256","nodeType":"ElementaryTypeName","src":"5137:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5105:46:18"},"returnParameters":{"id":2802,"nodeType":"ParameterList","parameters":[],"src":"5161:0:18"},"scope":3055,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2882,"nodeType":"FunctionDefinition","src":"5808:322:18","nodes":[],"body":{"id":2881,"nodeType":"Block","src":"5911:219:18","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2852,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2845,"src":"5925:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5928:4:18","memberName":"code","nodeType":"MemberAccess","src":"5925:7:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5933:6:18","memberName":"length","nodeType":"MemberAccess","src":"5925:14:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5943:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5925:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":2870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6011:39:18","subExpression":{"arguments":[{"id":2866,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2845,"src":"6034:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2867,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2847,"src":"6038:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2868,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2849,"src":"6045:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2864,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"6012:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"}},"id":2865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6018:15:18","memberName":"transferAndCall","nodeType":"MemberAccess","referencedDeclaration":2111,"src":"6012:21:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) external returns (bool)"}},"id":2869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6012:38:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2879,"nodeType":"IfStatement","src":"6007:117:18","trueBody":{"id":2878,"nodeType":"Block","src":"6052:72:18","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":2874,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"6106:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"}],"id":2873,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6098:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2872,"name":"address","nodeType":"ElementaryTypeName","src":"6098:7:18","typeDescriptions":{}}},"id":2875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6098:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2871,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2603,"src":"6073:24:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6073:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2877,"nodeType":"RevertStatement","src":"6066:47:18"}]}},"id":2880,"nodeType":"IfStatement","src":"5921:203:18","trueBody":{"id":2863,"nodeType":"Block","src":"5946:55:18","statements":[{"expression":{"arguments":[{"id":2858,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"5973:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"}},{"id":2859,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2845,"src":"5980:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2860,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2847,"src":"5984:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2857,"name":"safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2636,"src":"5960:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":2861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5960:30:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2862,"nodeType":"ExpressionStatement","src":"5960:30:18"}]}}]},"documentation":{"id":2840,"nodeType":"StructuredDocumentation","src":"5470:333:18","text":" @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`."},"implemented":true,"kind":"function","modifiers":[],"name":"transferAndCallRelaxed","nameLocation":"5817:22:18","parameters":{"id":2850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2843,"mutability":"mutable","name":"token","nameLocation":"5849:5:18","nodeType":"VariableDeclaration","scope":2882,"src":"5840:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"},"typeName":{"id":2842,"nodeType":"UserDefinedTypeName","pathNode":{"id":2841,"name":"IERC1363","nameLocations":["5840:8:18"],"nodeType":"IdentifierPath","referencedDeclaration":2160,"src":"5840:8:18"},"referencedDeclaration":2160,"src":"5840:8:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":2845,"mutability":"mutable","name":"to","nameLocation":"5864:2:18","nodeType":"VariableDeclaration","scope":2882,"src":"5856:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2844,"name":"address","nodeType":"ElementaryTypeName","src":"5856:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2847,"mutability":"mutable","name":"value","nameLocation":"5876:5:18","nodeType":"VariableDeclaration","scope":2882,"src":"5868:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2846,"name":"uint256","nodeType":"ElementaryTypeName","src":"5868:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2849,"mutability":"mutable","name":"data","nameLocation":"5896:4:18","nodeType":"VariableDeclaration","scope":2882,"src":"5883:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2848,"name":"bytes","nodeType":"ElementaryTypeName","src":"5883:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5839:62:18"},"returnParameters":{"id":2851,"nodeType":"ParameterList","parameters":[],"src":"5911:0:18"},"scope":3055,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2929,"nodeType":"FunctionDefinition","src":"6482:406:18","nodes":[],"body":{"id":2928,"nodeType":"Block","src":"6649:239:18","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2897,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2890,"src":"6663:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6666:4:18","memberName":"code","nodeType":"MemberAccess","src":"6663:7:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6671:6:18","memberName":"length","nodeType":"MemberAccess","src":"6663:14:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6681:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6663:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":2917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6759:49:18","subExpression":{"arguments":[{"id":2912,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2888,"src":"6786:4:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2913,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2890,"src":"6792:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2914,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2892,"src":"6796:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2915,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2894,"src":"6803:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2910,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2886,"src":"6760:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"}},"id":2911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6766:19:18","memberName":"transferFromAndCall","nodeType":"MemberAccess","referencedDeclaration":2137,"src":"6760:25:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) external returns (bool)"}},"id":2916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6760:48:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2926,"nodeType":"IfStatement","src":"6755:127:18","trueBody":{"id":2925,"nodeType":"Block","src":"6810:72:18","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":2921,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2886,"src":"6864:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"}],"id":2920,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6856:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2919,"name":"address","nodeType":"ElementaryTypeName","src":"6856:7:18","typeDescriptions":{}}},"id":2922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6856:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2918,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2603,"src":"6831:24:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6831:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2924,"nodeType":"RevertStatement","src":"6824:47:18"}]}},"id":2927,"nodeType":"IfStatement","src":"6659:223:18","trueBody":{"id":2909,"nodeType":"Block","src":"6684:65:18","statements":[{"expression":{"arguments":[{"id":2903,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2886,"src":"6715:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"}},{"id":2904,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2888,"src":"6722:4:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2905,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2890,"src":"6728:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2906,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2892,"src":"6732:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2902,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2663,"src":"6698:16:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":2907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6698:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2908,"nodeType":"ExpressionStatement","src":"6698:40:18"}]}}]},"documentation":{"id":2883,"nodeType":"StructuredDocumentation","src":"6136:341:18","text":" @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`."},"implemented":true,"kind":"function","modifiers":[],"name":"transferFromAndCallRelaxed","nameLocation":"6491:26:18","parameters":{"id":2895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2886,"mutability":"mutable","name":"token","nameLocation":"6536:5:18","nodeType":"VariableDeclaration","scope":2929,"src":"6527:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"},"typeName":{"id":2885,"nodeType":"UserDefinedTypeName","pathNode":{"id":2884,"name":"IERC1363","nameLocations":["6527:8:18"],"nodeType":"IdentifierPath","referencedDeclaration":2160,"src":"6527:8:18"},"referencedDeclaration":2160,"src":"6527:8:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":2888,"mutability":"mutable","name":"from","nameLocation":"6559:4:18","nodeType":"VariableDeclaration","scope":2929,"src":"6551:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2887,"name":"address","nodeType":"ElementaryTypeName","src":"6551:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2890,"mutability":"mutable","name":"to","nameLocation":"6581:2:18","nodeType":"VariableDeclaration","scope":2929,"src":"6573:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2889,"name":"address","nodeType":"ElementaryTypeName","src":"6573:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2892,"mutability":"mutable","name":"value","nameLocation":"6601:5:18","nodeType":"VariableDeclaration","scope":2929,"src":"6593:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2891,"name":"uint256","nodeType":"ElementaryTypeName","src":"6593:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2894,"mutability":"mutable","name":"data","nameLocation":"6629:4:18","nodeType":"VariableDeclaration","scope":2929,"src":"6616:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2893,"name":"bytes","nodeType":"ElementaryTypeName","src":"6616:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6517:122:18"},"returnParameters":{"id":2896,"nodeType":"ParameterList","parameters":[],"src":"6649:0:18"},"scope":3055,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2972,"nodeType":"FunctionDefinition","src":"7553:320:18","nodes":[],"body":{"id":2971,"nodeType":"Block","src":"7655:218:18","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2942,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2935,"src":"7669:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7672:4:18","memberName":"code","nodeType":"MemberAccess","src":"7669:7:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7677:6:18","memberName":"length","nodeType":"MemberAccess","src":"7669:14:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7687:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7669:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":2960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7755:38:18","subExpression":{"arguments":[{"id":2956,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2935,"src":"7777:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2957,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2937,"src":"7781:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2958,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2939,"src":"7788:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2954,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2933,"src":"7756:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"}},"id":2955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7762:14:18","memberName":"approveAndCall","nodeType":"MemberAccess","referencedDeclaration":2159,"src":"7756:20:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) external returns (bool)"}},"id":2959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7756:37:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2969,"nodeType":"IfStatement","src":"7751:116:18","trueBody":{"id":2968,"nodeType":"Block","src":"7795:72:18","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":2964,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2933,"src":"7849:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"}],"id":2963,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7841:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2962,"name":"address","nodeType":"ElementaryTypeName","src":"7841:7:18","typeDescriptions":{}}},"id":2965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7841:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2961,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2603,"src":"7816:24:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":2966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2967,"nodeType":"RevertStatement","src":"7809:47:18"}]}},"id":2970,"nodeType":"IfStatement","src":"7665:202:18","trueBody":{"id":2953,"nodeType":"Block","src":"7690:55:18","statements":[{"expression":{"arguments":[{"id":2948,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2933,"src":"7717:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"}},{"id":2949,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2935,"src":"7724:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2950,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2937,"src":"7728:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2947,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"7704:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":2951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7704:30:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2952,"nodeType":"ExpressionStatement","src":"7704:30:18"}]}}]},"documentation":{"id":2930,"nodeType":"StructuredDocumentation","src":"6894:654:18","text":" @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n once without retrying, and relies on the returned value to be true.\n Reverts if the returned value is other than `true`."},"implemented":true,"kind":"function","modifiers":[],"name":"approveAndCallRelaxed","nameLocation":"7562:21:18","parameters":{"id":2940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2933,"mutability":"mutable","name":"token","nameLocation":"7593:5:18","nodeType":"VariableDeclaration","scope":2972,"src":"7584:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"},"typeName":{"id":2932,"nodeType":"UserDefinedTypeName","pathNode":{"id":2931,"name":"IERC1363","nameLocations":["7584:8:18"],"nodeType":"IdentifierPath","referencedDeclaration":2160,"src":"7584:8:18"},"referencedDeclaration":2160,"src":"7584:8:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$2160","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":2935,"mutability":"mutable","name":"to","nameLocation":"7608:2:18","nodeType":"VariableDeclaration","scope":2972,"src":"7600:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2934,"name":"address","nodeType":"ElementaryTypeName","src":"7600:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2937,"mutability":"mutable","name":"value","nameLocation":"7620:5:18","nodeType":"VariableDeclaration","scope":2972,"src":"7612:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2936,"name":"uint256","nodeType":"ElementaryTypeName","src":"7612:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2939,"mutability":"mutable","name":"data","nameLocation":"7640:4:18","nodeType":"VariableDeclaration","scope":2972,"src":"7627:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2938,"name":"bytes","nodeType":"ElementaryTypeName","src":"7627:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7583:62:18"},"returnParameters":{"id":2941,"nodeType":"ParameterList","parameters":[],"src":"7655:0:18"},"scope":3055,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":3013,"nodeType":"FunctionDefinition","src":"8370:720:18","nodes":[],"body":{"id":3012,"nodeType":"Block","src":"8440:650:18","nodes":[],"statements":[{"assignments":[2982],"declarations":[{"constant":false,"id":2982,"mutability":"mutable","name":"returnSize","nameLocation":"8458:10:18","nodeType":"VariableDeclaration","scope":3012,"src":"8450:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2981,"name":"uint256","nodeType":"ElementaryTypeName","src":"8450:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2983,"nodeType":"VariableDeclarationStatement","src":"8450:18:18"},{"assignments":[2985],"declarations":[{"constant":false,"id":2985,"mutability":"mutable","name":"returnValue","nameLocation":"8486:11:18","nodeType":"VariableDeclaration","scope":3012,"src":"8478:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2984,"name":"uint256","nodeType":"ElementaryTypeName","src":"8478:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2986,"nodeType":"VariableDeclarationStatement","src":"8478:19:18"},{"AST":{"nativeSrc":"8532:396:18","nodeType":"YulBlock","src":"8532:396:18","statements":[{"nativeSrc":"8546:75:18","nodeType":"YulVariableDeclaration","src":"8546:75:18","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"8566:3:18","nodeType":"YulIdentifier","src":"8566:3:18"},"nativeSrc":"8566:5:18","nodeType":"YulFunctionCall","src":"8566:5:18"},{"name":"token","nativeSrc":"8573:5:18","nodeType":"YulIdentifier","src":"8573:5:18"},{"kind":"number","nativeSrc":"8580:1:18","nodeType":"YulLiteral","src":"8580:1:18","type":"","value":"0"},{"arguments":[{"name":"data","nativeSrc":"8587:4:18","nodeType":"YulIdentifier","src":"8587:4:18"},{"kind":"number","nativeSrc":"8593:4:18","nodeType":"YulLiteral","src":"8593:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8583:3:18","nodeType":"YulIdentifier","src":"8583:3:18"},"nativeSrc":"8583:15:18","nodeType":"YulFunctionCall","src":"8583:15:18"},{"arguments":[{"name":"data","nativeSrc":"8606:4:18","nodeType":"YulIdentifier","src":"8606:4:18"}],"functionName":{"name":"mload","nativeSrc":"8600:5:18","nodeType":"YulIdentifier","src":"8600:5:18"},"nativeSrc":"8600:11:18","nodeType":"YulFunctionCall","src":"8600:11:18"},{"kind":"number","nativeSrc":"8613:1:18","nodeType":"YulLiteral","src":"8613:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"8616:4:18","nodeType":"YulLiteral","src":"8616:4:18","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"8561:4:18","nodeType":"YulIdentifier","src":"8561:4:18"},"nativeSrc":"8561:60:18","nodeType":"YulFunctionCall","src":"8561:60:18"},"variables":[{"name":"success","nativeSrc":"8550:7:18","nodeType":"YulTypedName","src":"8550:7:18","type":""}]},{"body":{"nativeSrc":"8682:157:18","nodeType":"YulBlock","src":"8682:157:18","statements":[{"nativeSrc":"8700:22:18","nodeType":"YulVariableDeclaration","src":"8700:22:18","value":{"arguments":[{"kind":"number","nativeSrc":"8717:4:18","nodeType":"YulLiteral","src":"8717:4:18","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"8711:5:18","nodeType":"YulIdentifier","src":"8711:5:18"},"nativeSrc":"8711:11:18","nodeType":"YulFunctionCall","src":"8711:11:18"},"variables":[{"name":"ptr","nativeSrc":"8704:3:18","nodeType":"YulTypedName","src":"8704:3:18","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"8754:3:18","nodeType":"YulIdentifier","src":"8754:3:18"},{"kind":"number","nativeSrc":"8759:1:18","nodeType":"YulLiteral","src":"8759:1:18","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8762:14:18","nodeType":"YulIdentifier","src":"8762:14:18"},"nativeSrc":"8762:16:18","nodeType":"YulFunctionCall","src":"8762:16:18"}],"functionName":{"name":"returndatacopy","nativeSrc":"8739:14:18","nodeType":"YulIdentifier","src":"8739:14:18"},"nativeSrc":"8739:40:18","nodeType":"YulFunctionCall","src":"8739:40:18"},"nativeSrc":"8739:40:18","nodeType":"YulExpressionStatement","src":"8739:40:18"},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"8803:3:18","nodeType":"YulIdentifier","src":"8803:3:18"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8808:14:18","nodeType":"YulIdentifier","src":"8808:14:18"},"nativeSrc":"8808:16:18","nodeType":"YulFunctionCall","src":"8808:16:18"}],"functionName":{"name":"revert","nativeSrc":"8796:6:18","nodeType":"YulIdentifier","src":"8796:6:18"},"nativeSrc":"8796:29:18","nodeType":"YulFunctionCall","src":"8796:29:18"},"nativeSrc":"8796:29:18","nodeType":"YulExpressionStatement","src":"8796:29:18"}]},"condition":{"arguments":[{"name":"success","nativeSrc":"8673:7:18","nodeType":"YulIdentifier","src":"8673:7:18"}],"functionName":{"name":"iszero","nativeSrc":"8666:6:18","nodeType":"YulIdentifier","src":"8666:6:18"},"nativeSrc":"8666:15:18","nodeType":"YulFunctionCall","src":"8666:15:18"},"nativeSrc":"8663:176:18","nodeType":"YulIf","src":"8663:176:18"},{"nativeSrc":"8852:30:18","nodeType":"YulAssignment","src":"8852:30:18","value":{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8866:14:18","nodeType":"YulIdentifier","src":"8866:14:18"},"nativeSrc":"8866:16:18","nodeType":"YulFunctionCall","src":"8866:16:18"},"variableNames":[{"name":"returnSize","nativeSrc":"8852:10:18","nodeType":"YulIdentifier","src":"8852:10:18"}]},{"nativeSrc":"8895:23:18","nodeType":"YulAssignment","src":"8895:23:18","value":{"arguments":[{"kind":"number","nativeSrc":"8916:1:18","nodeType":"YulLiteral","src":"8916:1:18","type":"","value":"0"}],"functionName":{"name":"mload","nativeSrc":"8910:5:18","nodeType":"YulIdentifier","src":"8910:5:18"},"nativeSrc":"8910:8:18","nodeType":"YulFunctionCall","src":"8910:8:18"},"variableNames":[{"name":"returnValue","nativeSrc":"8895:11:18","nodeType":"YulIdentifier","src":"8895:11:18"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2978,"isOffset":false,"isSlot":false,"src":"8587:4:18","valueSize":1},{"declaration":2978,"isOffset":false,"isSlot":false,"src":"8606:4:18","valueSize":1},{"declaration":2982,"isOffset":false,"isSlot":false,"src":"8852:10:18","valueSize":1},{"declaration":2985,"isOffset":false,"isSlot":false,"src":"8895:11:18","valueSize":1},{"declaration":2976,"isOffset":false,"isSlot":false,"src":"8573:5:18","valueSize":1}],"flags":["memory-safe"],"id":2987,"nodeType":"InlineAssembly","src":"8507:421:18"},{"condition":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2988,"name":"returnSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"8942:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8956:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8942:15:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2999,"name":"returnValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"8994:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":3000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9009:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8994:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8942:68:18","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":2993,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2976,"src":"8968:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}],"id":2992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8960:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2991,"name":"address","nodeType":"ElementaryTypeName","src":"8960:7:18","typeDescriptions":{}}},"id":2994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8960:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8975:4:18","memberName":"code","nodeType":"MemberAccess","src":"8960:19:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8980:6:18","memberName":"length","nodeType":"MemberAccess","src":"8960:26:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8990:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8960:31:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3011,"nodeType":"IfStatement","src":"8938:146:18","trueBody":{"id":3010,"nodeType":"Block","src":"9012:72:18","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":3006,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2976,"src":"9066:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}],"id":3005,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9058:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3004,"name":"address","nodeType":"ElementaryTypeName","src":"9058:7:18","typeDescriptions":{}}},"id":3007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9058:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3003,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2603,"src":"9033:24:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9033:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3009,"nodeType":"RevertStatement","src":"9026:47:18"}]}}]},"documentation":{"id":2973,"nodeType":"StructuredDocumentation","src":"7879:486:18","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements."},"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nameLocation":"8379:19:18","parameters":{"id":2979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2976,"mutability":"mutable","name":"token","nameLocation":"8406:5:18","nodeType":"VariableDeclaration","scope":3013,"src":"8399:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":2975,"nodeType":"UserDefinedTypeName","pathNode":{"id":2974,"name":"IERC20","nameLocations":["8399:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"8399:6:18"},"referencedDeclaration":2591,"src":"8399:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2978,"mutability":"mutable","name":"data","nameLocation":"8426:4:18","nodeType":"VariableDeclaration","scope":3013,"src":"8413:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2977,"name":"bytes","nodeType":"ElementaryTypeName","src":"8413:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8398:33:18"},"returnParameters":{"id":2980,"nodeType":"ParameterList","parameters":[],"src":"8440:0:18"},"scope":3055,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":3054,"nodeType":"FunctionDefinition","src":"9592:480:18","nodes":[],"body":{"id":3053,"nodeType":"Block","src":"9681:391:18","nodes":[],"statements":[{"assignments":[3025],"declarations":[{"constant":false,"id":3025,"mutability":"mutable","name":"success","nameLocation":"9696:7:18","nodeType":"VariableDeclaration","scope":3053,"src":"9691:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3024,"name":"bool","nodeType":"ElementaryTypeName","src":"9691:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":3026,"nodeType":"VariableDeclarationStatement","src":"9691:12:18"},{"assignments":[3028],"declarations":[{"constant":false,"id":3028,"mutability":"mutable","name":"returnSize","nameLocation":"9721:10:18","nodeType":"VariableDeclaration","scope":3053,"src":"9713:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3027,"name":"uint256","nodeType":"ElementaryTypeName","src":"9713:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3029,"nodeType":"VariableDeclarationStatement","src":"9713:18:18"},{"assignments":[3031],"declarations":[{"constant":false,"id":3031,"mutability":"mutable","name":"returnValue","nameLocation":"9749:11:18","nodeType":"VariableDeclaration","scope":3053,"src":"9741:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3030,"name":"uint256","nodeType":"ElementaryTypeName","src":"9741:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3032,"nodeType":"VariableDeclarationStatement","src":"9741:19:18"},{"AST":{"nativeSrc":"9795:174:18","nodeType":"YulBlock","src":"9795:174:18","statements":[{"nativeSrc":"9809:71:18","nodeType":"YulAssignment","src":"9809:71:18","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"9825:3:18","nodeType":"YulIdentifier","src":"9825:3:18"},"nativeSrc":"9825:5:18","nodeType":"YulFunctionCall","src":"9825:5:18"},{"name":"token","nativeSrc":"9832:5:18","nodeType":"YulIdentifier","src":"9832:5:18"},{"kind":"number","nativeSrc":"9839:1:18","nodeType":"YulLiteral","src":"9839:1:18","type":"","value":"0"},{"arguments":[{"name":"data","nativeSrc":"9846:4:18","nodeType":"YulIdentifier","src":"9846:4:18"},{"kind":"number","nativeSrc":"9852:4:18","nodeType":"YulLiteral","src":"9852:4:18","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9842:3:18","nodeType":"YulIdentifier","src":"9842:3:18"},"nativeSrc":"9842:15:18","nodeType":"YulFunctionCall","src":"9842:15:18"},{"arguments":[{"name":"data","nativeSrc":"9865:4:18","nodeType":"YulIdentifier","src":"9865:4:18"}],"functionName":{"name":"mload","nativeSrc":"9859:5:18","nodeType":"YulIdentifier","src":"9859:5:18"},"nativeSrc":"9859:11:18","nodeType":"YulFunctionCall","src":"9859:11:18"},{"kind":"number","nativeSrc":"9872:1:18","nodeType":"YulLiteral","src":"9872:1:18","type":"","value":"0"},{"kind":"number","nativeSrc":"9875:4:18","nodeType":"YulLiteral","src":"9875:4:18","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"9820:4:18","nodeType":"YulIdentifier","src":"9820:4:18"},"nativeSrc":"9820:60:18","nodeType":"YulFunctionCall","src":"9820:60:18"},"variableNames":[{"name":"success","nativeSrc":"9809:7:18","nodeType":"YulIdentifier","src":"9809:7:18"}]},{"nativeSrc":"9893:30:18","nodeType":"YulAssignment","src":"9893:30:18","value":{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"9907:14:18","nodeType":"YulIdentifier","src":"9907:14:18"},"nativeSrc":"9907:16:18","nodeType":"YulFunctionCall","src":"9907:16:18"},"variableNames":[{"name":"returnSize","nativeSrc":"9893:10:18","nodeType":"YulIdentifier","src":"9893:10:18"}]},{"nativeSrc":"9936:23:18","nodeType":"YulAssignment","src":"9936:23:18","value":{"arguments":[{"kind":"number","nativeSrc":"9957:1:18","nodeType":"YulLiteral","src":"9957:1:18","type":"","value":"0"}],"functionName":{"name":"mload","nativeSrc":"9951:5:18","nodeType":"YulIdentifier","src":"9951:5:18"},"nativeSrc":"9951:8:18","nodeType":"YulFunctionCall","src":"9951:8:18"},"variableNames":[{"name":"returnValue","nativeSrc":"9936:11:18","nodeType":"YulIdentifier","src":"9936:11:18"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3019,"isOffset":false,"isSlot":false,"src":"9846:4:18","valueSize":1},{"declaration":3019,"isOffset":false,"isSlot":false,"src":"9865:4:18","valueSize":1},{"declaration":3028,"isOffset":false,"isSlot":false,"src":"9893:10:18","valueSize":1},{"declaration":3031,"isOffset":false,"isSlot":false,"src":"9936:11:18","valueSize":1},{"declaration":3025,"isOffset":false,"isSlot":false,"src":"9809:7:18","valueSize":1},{"declaration":3017,"isOffset":false,"isSlot":false,"src":"9832:5:18","valueSize":1}],"flags":["memory-safe"],"id":3033,"nodeType":"InlineAssembly","src":"9770:199:18"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3034,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3025,"src":"9985:7:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3035,"name":"returnSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3028,"src":"9997:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10011:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9997:15:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3046,"name":"returnValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"10048:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":3047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10063:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10048:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9997:67:18","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":3040,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3017,"src":"10023:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}],"id":3039,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10015:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3038,"name":"address","nodeType":"ElementaryTypeName","src":"10015:7:18","typeDescriptions":{}}},"id":3041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10015:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10030:4:18","memberName":"code","nodeType":"MemberAccess","src":"10015:19:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10035:6:18","memberName":"length","nodeType":"MemberAccess","src":"10015:26:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10044:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10015:30:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3050,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9996:69:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9985:80:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3023,"id":3052,"nodeType":"Return","src":"9978:87:18"}]},"documentation":{"id":3014,"nodeType":"StructuredDocumentation","src":"9096:491:18","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead."},"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturnBool","nameLocation":"9601:23:18","parameters":{"id":3020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3017,"mutability":"mutable","name":"token","nameLocation":"9632:5:18","nodeType":"VariableDeclaration","scope":3054,"src":"9625:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":3016,"nodeType":"UserDefinedTypeName","pathNode":{"id":3015,"name":"IERC20","nameLocations":["9625:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"9625:6:18"},"referencedDeclaration":2591,"src":"9625:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3019,"mutability":"mutable","name":"data","nameLocation":"9652:4:18","nodeType":"VariableDeclaration","scope":3054,"src":"9639:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3018,"name":"bytes","nodeType":"ElementaryTypeName","src":"9639:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9624:33:18"},"returnParameters":{"id":3023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3022,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3054,"src":"9675:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3021,"name":"bool","nodeType":"ElementaryTypeName","src":"9675:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9674:6:18"},"scope":3055,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20","contractDependencies":[],"contractKind":"library","documentation":{"id":2598,"nodeType":"StructuredDocumentation","src":"239:458:18","text":" @title SafeERC20\n @dev Wrappers around ERC-20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"linearizedBaseContracts":[3055],"name":"SafeERC20","nameLocation":"706:9:18","scope":3056,"usedErrors":[2603,2612],"usedEvents":[]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"id":19,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Address.sol","id":3316,"exportedSymbols":{"Address":[3315],"Errors":[3367]},"nodeType":"SourceUnit","src":"101:5895:19","nodes":[{"id":3057,"nodeType":"PragmaDirective","src":"101:24:19","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":3059,"nodeType":"ImportDirective","src":"127:36:19","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Errors.sol","file":"./Errors.sol","nameLocation":"-1:-1:-1","scope":3316,"sourceUnit":3368,"symbolAliases":[{"foreign":{"id":3058,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3367,"src":"135:6:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":3315,"nodeType":"ContractDefinition","src":"233:5762:19","nodes":[{"id":3065,"nodeType":"ErrorDefinition","src":"335:39:19","nodes":[],"documentation":{"id":3061,"nodeType":"StructuredDocumentation","src":"255:75:19","text":" @dev There's no code at `target` (it is not a contract)."},"errorSelector":"9996b315","name":"AddressEmptyCode","nameLocation":"341:16:19","parameters":{"id":3064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3063,"mutability":"mutable","name":"target","nameLocation":"366:6:19","nodeType":"VariableDeclaration","scope":3065,"src":"358:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3062,"name":"address","nodeType":"ElementaryTypeName","src":"358:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"357:16:19"}},{"id":3113,"nodeType":"FunctionDefinition","src":"1290:365:19","nodes":[],"body":{"id":3112,"nodeType":"Block","src":"1361:294:19","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":3075,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1383:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$3315","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$3315","typeString":"library Address"}],"id":3074,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1375:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3073,"name":"address","nodeType":"ElementaryTypeName","src":"1375:7:19","typeDescriptions":{}}},"id":3076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1375:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1389:7:19","memberName":"balance","nodeType":"MemberAccess","src":"1375:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3078,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3070,"src":"1399:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1375:30:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3092,"nodeType":"IfStatement","src":"1371:125:19","trueBody":{"id":3091,"nodeType":"Block","src":"1407:89:19","statements":[{"errorCall":{"arguments":[{"expression":{"arguments":[{"id":3085,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1463:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$3315","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$3315","typeString":"library Address"}],"id":3084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1455:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3083,"name":"address","nodeType":"ElementaryTypeName","src":"1455:7:19","typeDescriptions":{}}},"id":3086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1455:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1469:7:19","memberName":"balance","nodeType":"MemberAccess","src":"1455:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3088,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3070,"src":"1478:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3080,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3367,"src":"1428:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$3367_$","typeString":"type(library Errors)"}},"id":3082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1435:19:19","memberName":"InsufficientBalance","nodeType":"MemberAccess","referencedDeclaration":3355,"src":"1428:26:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":3089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1428:57:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3090,"nodeType":"RevertStatement","src":"1421:64:19"}]}},{"assignments":[3094,3096],"declarations":[{"constant":false,"id":3094,"mutability":"mutable","name":"success","nameLocation":"1512:7:19","nodeType":"VariableDeclaration","scope":3112,"src":"1507:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3093,"name":"bool","nodeType":"ElementaryTypeName","src":"1507:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3096,"mutability":"mutable","name":"returndata","nameLocation":"1534:10:19","nodeType":"VariableDeclaration","scope":3112,"src":"1521:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3095,"name":"bytes","nodeType":"ElementaryTypeName","src":"1521:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3103,"initialValue":{"arguments":[{"hexValue":"","id":3101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1578:2:19","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":3097,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3068,"src":"1548:9:19","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":3098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1558:4:19","memberName":"call","nodeType":"MemberAccess","src":"1548:14:19","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":3100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":3099,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3070,"src":"1570:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1548:29:19","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":3102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1548:33:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1506:75:19"},{"condition":{"id":3105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1595:8:19","subExpression":{"id":3104,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3094,"src":"1596:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3111,"nodeType":"IfStatement","src":"1591:58:19","trueBody":{"id":3110,"nodeType":"Block","src":"1605:44:19","statements":[{"expression":{"arguments":[{"id":3107,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3096,"src":"1627:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3106,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3314,"src":"1619:7:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":3108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1619:19:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3109,"nodeType":"ExpressionStatement","src":"1619:19:19"}]}}]},"documentation":{"id":3066,"nodeType":"StructuredDocumentation","src":"380:905:19","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"1299:9:19","parameters":{"id":3071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3068,"mutability":"mutable","name":"recipient","nameLocation":"1325:9:19","nodeType":"VariableDeclaration","scope":3113,"src":"1309:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":3067,"name":"address","nodeType":"ElementaryTypeName","src":"1309:15:19","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":3070,"mutability":"mutable","name":"amount","nameLocation":"1344:6:19","nodeType":"VariableDeclaration","scope":3113,"src":"1336:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3069,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1308:43:19"},"returnParameters":{"id":3072,"nodeType":"ParameterList","parameters":[],"src":"1361:0:19"},"scope":3315,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":3130,"nodeType":"FunctionDefinition","src":"2500:151:19","nodes":[],"body":{"id":3129,"nodeType":"Block","src":"2589:62:19","nodes":[],"statements":[{"expression":{"arguments":[{"id":3124,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"2628:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3125,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3118,"src":"2636:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":3126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2642:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3123,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3180,"src":"2606:21:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256) returns (bytes memory)"}},"id":3127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2606:38:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3122,"id":3128,"nodeType":"Return","src":"2599:45:19"}]},"documentation":{"id":3114,"nodeType":"StructuredDocumentation","src":"1661:834:19","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {Errors.FailedCall} error.\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert."},"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"2509:12:19","parameters":{"id":3119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3116,"mutability":"mutable","name":"target","nameLocation":"2530:6:19","nodeType":"VariableDeclaration","scope":3130,"src":"2522:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3115,"name":"address","nodeType":"ElementaryTypeName","src":"2522:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3118,"mutability":"mutable","name":"data","nameLocation":"2551:4:19","nodeType":"VariableDeclaration","scope":3130,"src":"2538:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3117,"name":"bytes","nodeType":"ElementaryTypeName","src":"2538:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2521:35:19"},"returnParameters":{"id":3122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3121,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3130,"src":"2575:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3120,"name":"bytes","nodeType":"ElementaryTypeName","src":"2575:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2574:14:19"},"scope":3315,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":3180,"nodeType":"FunctionDefinition","src":"2975:407:19","nodes":[],"body":{"id":3179,"nodeType":"Block","src":"3088:294:19","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":3144,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3110:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$3315","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$3315","typeString":"library Address"}],"id":3143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3102:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3142,"name":"address","nodeType":"ElementaryTypeName","src":"3102:7:19","typeDescriptions":{}}},"id":3145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3102:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3116:7:19","memberName":"balance","nodeType":"MemberAccess","src":"3102:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3147,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3137,"src":"3126:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3102:29:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3161,"nodeType":"IfStatement","src":"3098:123:19","trueBody":{"id":3160,"nodeType":"Block","src":"3133:88:19","statements":[{"errorCall":{"arguments":[{"expression":{"arguments":[{"id":3154,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3189:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$3315","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$3315","typeString":"library Address"}],"id":3153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3181:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3152,"name":"address","nodeType":"ElementaryTypeName","src":"3181:7:19","typeDescriptions":{}}},"id":3155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3181:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3195:7:19","memberName":"balance","nodeType":"MemberAccess","src":"3181:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3157,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3137,"src":"3204:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3149,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3367,"src":"3154:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$3367_$","typeString":"type(library Errors)"}},"id":3151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3161:19:19","memberName":"InsufficientBalance","nodeType":"MemberAccess","referencedDeclaration":3355,"src":"3154:26:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":3158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3154:56:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3159,"nodeType":"RevertStatement","src":"3147:63:19"}]}},{"assignments":[3163,3165],"declarations":[{"constant":false,"id":3163,"mutability":"mutable","name":"success","nameLocation":"3236:7:19","nodeType":"VariableDeclaration","scope":3179,"src":"3231:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3162,"name":"bool","nodeType":"ElementaryTypeName","src":"3231:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3165,"mutability":"mutable","name":"returndata","nameLocation":"3258:10:19","nodeType":"VariableDeclaration","scope":3179,"src":"3245:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3164,"name":"bytes","nodeType":"ElementaryTypeName","src":"3245:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3172,"initialValue":{"arguments":[{"id":3170,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3135,"src":"3298:4:19","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":3166,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3133,"src":"3272:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3279:4:19","memberName":"call","nodeType":"MemberAccess","src":"3272:11:19","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":3169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":3168,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3137,"src":"3291:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3272:25:19","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":3171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3272:31:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3230:73:19"},{"expression":{"arguments":[{"id":3174,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3133,"src":"3347:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3175,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3163,"src":"3355:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3176,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"3364:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3173,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3272,"src":"3320:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":3177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3320:55:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3141,"id":3178,"nodeType":"Return","src":"3313:62:19"}]},"documentation":{"id":3131,"nodeType":"StructuredDocumentation","src":"2657:313:19","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`."},"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"2984:21:19","parameters":{"id":3138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3133,"mutability":"mutable","name":"target","nameLocation":"3014:6:19","nodeType":"VariableDeclaration","scope":3180,"src":"3006:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3132,"name":"address","nodeType":"ElementaryTypeName","src":"3006:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3135,"mutability":"mutable","name":"data","nameLocation":"3035:4:19","nodeType":"VariableDeclaration","scope":3180,"src":"3022:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3134,"name":"bytes","nodeType":"ElementaryTypeName","src":"3022:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3137,"mutability":"mutable","name":"value","nameLocation":"3049:5:19","nodeType":"VariableDeclaration","scope":3180,"src":"3041:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3136,"name":"uint256","nodeType":"ElementaryTypeName","src":"3041:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3005:50:19"},"returnParameters":{"id":3141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3140,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3180,"src":"3074:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3139,"name":"bytes","nodeType":"ElementaryTypeName","src":"3074:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3073:14:19"},"scope":3315,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":3206,"nodeType":"FunctionDefinition","src":"3521:254:19","nodes":[],"body":{"id":3205,"nodeType":"Block","src":"3621:154:19","nodes":[],"statements":[{"assignments":[3191,3193],"declarations":[{"constant":false,"id":3191,"mutability":"mutable","name":"success","nameLocation":"3637:7:19","nodeType":"VariableDeclaration","scope":3205,"src":"3632:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3190,"name":"bool","nodeType":"ElementaryTypeName","src":"3632:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3193,"mutability":"mutable","name":"returndata","nameLocation":"3659:10:19","nodeType":"VariableDeclaration","scope":3205,"src":"3646:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3192,"name":"bytes","nodeType":"ElementaryTypeName","src":"3646:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3198,"initialValue":{"arguments":[{"id":3196,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3185,"src":"3691:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3194,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"3673:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3680:10:19","memberName":"staticcall","nodeType":"MemberAccess","src":"3673:17: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":3197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3673:23:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3631:65:19"},{"expression":{"arguments":[{"id":3200,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"3740:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3201,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3191,"src":"3748:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3202,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3193,"src":"3757:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3199,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3272,"src":"3713:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":3203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3713:55:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3189,"id":3204,"nodeType":"Return","src":"3706:62:19"}]},"documentation":{"id":3181,"nodeType":"StructuredDocumentation","src":"3388:128:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call."},"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"3530:18:19","parameters":{"id":3186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3183,"mutability":"mutable","name":"target","nameLocation":"3557:6:19","nodeType":"VariableDeclaration","scope":3206,"src":"3549:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3182,"name":"address","nodeType":"ElementaryTypeName","src":"3549:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3185,"mutability":"mutable","name":"data","nameLocation":"3578:4:19","nodeType":"VariableDeclaration","scope":3206,"src":"3565:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3184,"name":"bytes","nodeType":"ElementaryTypeName","src":"3565:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3548:35:19"},"returnParameters":{"id":3189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3188,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3206,"src":"3607:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3187,"name":"bytes","nodeType":"ElementaryTypeName","src":"3607:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3606:14:19"},"scope":3315,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":3232,"nodeType":"FunctionDefinition","src":"3916:253:19","nodes":[],"body":{"id":3231,"nodeType":"Block","src":"4013:156:19","nodes":[],"statements":[{"assignments":[3217,3219],"declarations":[{"constant":false,"id":3217,"mutability":"mutable","name":"success","nameLocation":"4029:7:19","nodeType":"VariableDeclaration","scope":3231,"src":"4024:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3216,"name":"bool","nodeType":"ElementaryTypeName","src":"4024:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3219,"mutability":"mutable","name":"returndata","nameLocation":"4051:10:19","nodeType":"VariableDeclaration","scope":3231,"src":"4038:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3218,"name":"bytes","nodeType":"ElementaryTypeName","src":"4038:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3224,"initialValue":{"arguments":[{"id":3222,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3211,"src":"4085:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3220,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3209,"src":"4065:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4072:12:19","memberName":"delegatecall","nodeType":"MemberAccess","src":"4065:19:19","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":3223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4065:25:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4023:67:19"},{"expression":{"arguments":[{"id":3226,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3209,"src":"4134:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3227,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3217,"src":"4142:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3228,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3219,"src":"4151:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3225,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3272,"src":"4107:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":3229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4107:55:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3215,"id":3230,"nodeType":"Return","src":"4100:62:19"}]},"documentation":{"id":3207,"nodeType":"StructuredDocumentation","src":"3781:130:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call."},"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"3925:20:19","parameters":{"id":3212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3209,"mutability":"mutable","name":"target","nameLocation":"3954:6:19","nodeType":"VariableDeclaration","scope":3232,"src":"3946:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3208,"name":"address","nodeType":"ElementaryTypeName","src":"3946:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3211,"mutability":"mutable","name":"data","nameLocation":"3975:4:19","nodeType":"VariableDeclaration","scope":3232,"src":"3962:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3210,"name":"bytes","nodeType":"ElementaryTypeName","src":"3962:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3945:35:19"},"returnParameters":{"id":3215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3214,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3232,"src":"3999:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3213,"name":"bytes","nodeType":"ElementaryTypeName","src":"3999:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3998:14:19"},"scope":3315,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":3272,"nodeType":"FunctionDefinition","src":"4437:582:19","nodes":[],"body":{"id":3271,"nodeType":"Block","src":"4595:424:19","nodes":[],"statements":[{"condition":{"id":3245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4609:8:19","subExpression":{"id":3244,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"4610:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3269,"nodeType":"Block","src":"4669:344:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3251,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3239,"src":"4857:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4868:6:19","memberName":"length","nodeType":"MemberAccess","src":"4857:17:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4878:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4857:22:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":3255,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3235,"src":"4883:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4890:4:19","memberName":"code","nodeType":"MemberAccess","src":"4883:11:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4895:6:19","memberName":"length","nodeType":"MemberAccess","src":"4883:18:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4905:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4883:23:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4857:49:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3266,"nodeType":"IfStatement","src":"4853:119:19","trueBody":{"id":3265,"nodeType":"Block","src":"4908:64:19","statements":[{"errorCall":{"arguments":[{"id":3262,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3235,"src":"4950:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3261,"name":"AddressEmptyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3065,"src":"4933:16:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4933:24:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3264,"nodeType":"RevertStatement","src":"4926:31:19"}]}},{"expression":{"id":3267,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3239,"src":"4992:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3243,"id":3268,"nodeType":"Return","src":"4985:17:19"}]},"id":3270,"nodeType":"IfStatement","src":"4605:408:19","trueBody":{"id":3250,"nodeType":"Block","src":"4619:44:19","statements":[{"expression":{"arguments":[{"id":3247,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3239,"src":"4641:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3246,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3314,"src":"4633:7:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":3248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4633:19:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3249,"nodeType":"ExpressionStatement","src":"4633:19:19"}]}}]},"documentation":{"id":3233,"nodeType":"StructuredDocumentation","src":"4175:257:19","text":" @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case\n of an unsuccessful call."},"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"4446:26:19","parameters":{"id":3240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3235,"mutability":"mutable","name":"target","nameLocation":"4490:6:19","nodeType":"VariableDeclaration","scope":3272,"src":"4482:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3234,"name":"address","nodeType":"ElementaryTypeName","src":"4482:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3237,"mutability":"mutable","name":"success","nameLocation":"4511:7:19","nodeType":"VariableDeclaration","scope":3272,"src":"4506:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3236,"name":"bool","nodeType":"ElementaryTypeName","src":"4506:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3239,"mutability":"mutable","name":"returndata","nameLocation":"4541:10:19","nodeType":"VariableDeclaration","scope":3272,"src":"4528:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3238,"name":"bytes","nodeType":"ElementaryTypeName","src":"4528:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4472:85:19"},"returnParameters":{"id":3243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3242,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3272,"src":"4581:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3241,"name":"bytes","nodeType":"ElementaryTypeName","src":"4581:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4580:14:19"},"scope":3315,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":3294,"nodeType":"FunctionDefinition","src":"5221:224:19","nodes":[],"body":{"id":3293,"nodeType":"Block","src":"5323:122:19","nodes":[],"statements":[{"condition":{"id":3283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5337:8:19","subExpression":{"id":3282,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3275,"src":"5338:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3291,"nodeType":"Block","src":"5397:42:19","statements":[{"expression":{"id":3289,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"5418:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3281,"id":3290,"nodeType":"Return","src":"5411:17:19"}]},"id":3292,"nodeType":"IfStatement","src":"5333:106:19","trueBody":{"id":3288,"nodeType":"Block","src":"5347:44:19","statements":[{"expression":{"arguments":[{"id":3285,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"5369:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3284,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3314,"src":"5361:7:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":3286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5361:19:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3287,"nodeType":"ExpressionStatement","src":"5361:19:19"}]}}]},"documentation":{"id":3273,"nodeType":"StructuredDocumentation","src":"5025:191:19","text":" @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {Errors.FailedCall} error."},"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"5230:16:19","parameters":{"id":3278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3275,"mutability":"mutable","name":"success","nameLocation":"5252:7:19","nodeType":"VariableDeclaration","scope":3294,"src":"5247:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3274,"name":"bool","nodeType":"ElementaryTypeName","src":"5247:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3277,"mutability":"mutable","name":"returndata","nameLocation":"5274:10:19","nodeType":"VariableDeclaration","scope":3294,"src":"5261:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3276,"name":"bytes","nodeType":"ElementaryTypeName","src":"5261:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5246:39:19"},"returnParameters":{"id":3281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3294,"src":"5309:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3279,"name":"bytes","nodeType":"ElementaryTypeName","src":"5309:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5308:14:19"},"scope":3315,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3314,"nodeType":"FunctionDefinition","src":"5559:434:19","nodes":[],"body":{"id":3313,"nodeType":"Block","src":"5614:379:19","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3300,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3297,"src":"5690:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5701:6:19","memberName":"length","nodeType":"MemberAccess","src":"5690:17:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5710:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5690:21:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3311,"nodeType":"Block","src":"5936:51:19","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3306,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3367,"src":"5957:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$3367_$","typeString":"type(library Errors)"}},"id":3308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5964:10:19","memberName":"FailedCall","nodeType":"MemberAccess","referencedDeclaration":3358,"src":"5957:17:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5957:19:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3310,"nodeType":"RevertStatement","src":"5950:26:19"}]},"id":3312,"nodeType":"IfStatement","src":"5686:301:19","trueBody":{"id":3305,"nodeType":"Block","src":"5713:217:19","statements":[{"AST":{"nativeSrc":"5840:80:19","nodeType":"YulBlock","src":"5840:80:19","statements":[{"expression":{"arguments":[{"arguments":[{"name":"returndata","nativeSrc":"5869:10:19","nodeType":"YulIdentifier","src":"5869:10:19"},{"kind":"number","nativeSrc":"5881:4:19","nodeType":"YulLiteral","src":"5881:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5865:3:19","nodeType":"YulIdentifier","src":"5865:3:19"},"nativeSrc":"5865:21:19","nodeType":"YulFunctionCall","src":"5865:21:19"},{"arguments":[{"name":"returndata","nativeSrc":"5894:10:19","nodeType":"YulIdentifier","src":"5894:10:19"}],"functionName":{"name":"mload","nativeSrc":"5888:5:19","nodeType":"YulIdentifier","src":"5888:5:19"},"nativeSrc":"5888:17:19","nodeType":"YulFunctionCall","src":"5888:17:19"}],"functionName":{"name":"revert","nativeSrc":"5858:6:19","nodeType":"YulIdentifier","src":"5858:6:19"},"nativeSrc":"5858:48:19","nodeType":"YulFunctionCall","src":"5858:48:19"},"nativeSrc":"5858:48:19","nodeType":"YulExpressionStatement","src":"5858:48:19"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3297,"isOffset":false,"isSlot":false,"src":"5869:10:19","valueSize":1},{"declaration":3297,"isOffset":false,"isSlot":false,"src":"5894:10:19","valueSize":1}],"flags":["memory-safe"],"id":3304,"nodeType":"InlineAssembly","src":"5815:105:19"}]}}]},"documentation":{"id":3295,"nodeType":"StructuredDocumentation","src":"5451:103:19","text":" @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}."},"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"5568:7:19","parameters":{"id":3298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3297,"mutability":"mutable","name":"returndata","nameLocation":"5589:10:19","nodeType":"VariableDeclaration","scope":3314,"src":"5576:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3296,"name":"bytes","nodeType":"ElementaryTypeName","src":"5576:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5575:25:19"},"returnParameters":{"id":3299,"nodeType":"ParameterList","parameters":[],"src":"5614:0:19"},"scope":3315,"stateMutability":"pure","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":3060,"nodeType":"StructuredDocumentation","src":"165:67:19","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"linearizedBaseContracts":[3315],"name":"Address","nameLocation":"241:7:19","scope":3316,"usedErrors":[3065],"usedEvents":[]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"id":20,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Context.sol","id":3346,"exportedSymbols":{"Context":[3345]},"nodeType":"SourceUnit","src":"101:862:20","nodes":[{"id":3317,"nodeType":"PragmaDirective","src":"101:24:20","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":3345,"nodeType":"ContractDefinition","src":"624:338:20","nodes":[{"id":3327,"nodeType":"FunctionDefinition","src":"656:96:20","nodes":[],"body":{"id":3326,"nodeType":"Block","src":"718:34:20","nodes":[],"statements":[{"expression":{"expression":{"id":3323,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:20","memberName":"sender","nodeType":"MemberAccess","src":"735:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3322,"id":3325,"nodeType":"Return","src":"728:17:20"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:20","parameters":{"id":3319,"nodeType":"ParameterList","parameters":[],"src":"675:2:20"},"returnParameters":{"id":3322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3321,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3327,"src":"709:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3320,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:20"},"scope":3345,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":3336,"nodeType":"FunctionDefinition","src":"758:99:20","nodes":[],"body":{"id":3335,"nodeType":"Block","src":"825:32:20","nodes":[],"statements":[{"expression":{"expression":{"id":3332,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:20","memberName":"data","nodeType":"MemberAccess","src":"842:8:20","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":3331,"id":3334,"nodeType":"Return","src":"835:15:20"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:20","parameters":{"id":3328,"nodeType":"ParameterList","parameters":[],"src":"775:2:20"},"returnParameters":{"id":3331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3330,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3336,"src":"809:14:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3329,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:20"},"scope":3345,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":3344,"nodeType":"FunctionDefinition","src":"863:97:20","nodes":[],"body":{"id":3343,"nodeType":"Block","src":"935:25:20","nodes":[],"statements":[{"expression":{"hexValue":"30","id":3341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":3340,"id":3342,"nodeType":"Return","src":"945:8:20"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:20","parameters":{"id":3337,"nodeType":"ParameterList","parameters":[],"src":"892:2:20"},"returnParameters":{"id":3340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3339,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3344,"src":"926:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3338,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:20"},"scope":3345,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":3318,"nodeType":"StructuredDocumentation","src":"127:496:20","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,"linearizedBaseContracts":[3345],"name":"Context","nameLocation":"642:7:20","scope":3346,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"id":21,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Errors.sol","id":3368,"exportedSymbols":{"Errors":[3367]},"nodeType":"SourceUnit","src":"100:796:21","nodes":[{"id":3347,"nodeType":"PragmaDirective","src":"100:24:21","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":3367,"nodeType":"ContractDefinition","src":"411:484:21","nodes":[{"id":3355,"nodeType":"ErrorDefinition","src":"531:59:21","nodes":[],"documentation":{"id":3349,"nodeType":"StructuredDocumentation","src":"432:94:21","text":" @dev The ETH balance of the account is not enough to perform the operation."},"errorSelector":"cf479181","name":"InsufficientBalance","nameLocation":"537:19:21","parameters":{"id":3354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3351,"mutability":"mutable","name":"balance","nameLocation":"565:7:21","nodeType":"VariableDeclaration","scope":3355,"src":"557:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3350,"name":"uint256","nodeType":"ElementaryTypeName","src":"557:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3353,"mutability":"mutable","name":"needed","nameLocation":"582:6:21","nodeType":"VariableDeclaration","scope":3355,"src":"574:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3352,"name":"uint256","nodeType":"ElementaryTypeName","src":"574:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"556:33:21"}},{"id":3358,"nodeType":"ErrorDefinition","src":"690:19:21","nodes":[],"documentation":{"id":3356,"nodeType":"StructuredDocumentation","src":"596:89:21","text":" @dev A call to an address target failed. The target may have reverted."},"errorSelector":"d6bda275","name":"FailedCall","nameLocation":"696:10:21","parameters":{"id":3357,"nodeType":"ParameterList","parameters":[],"src":"706:2:21"}},{"id":3361,"nodeType":"ErrorDefinition","src":"766:25:21","nodes":[],"documentation":{"id":3359,"nodeType":"StructuredDocumentation","src":"715:46:21","text":" @dev The deployment failed."},"errorSelector":"b06ebf3d","name":"FailedDeployment","nameLocation":"772:16:21","parameters":{"id":3360,"nodeType":"ParameterList","parameters":[],"src":"788:2:21"}},{"id":3366,"nodeType":"ErrorDefinition","src":"860:33:21","nodes":[],"documentation":{"id":3362,"nodeType":"StructuredDocumentation","src":"797:58:21","text":" @dev A necessary precompile is missing."},"errorSelector":"42b01bce","name":"MissingPrecompile","nameLocation":"866:17:21","parameters":{"id":3365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3366,"src":"884:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3363,"name":"address","nodeType":"ElementaryTypeName","src":"884:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"883:9:21"}}],"abstract":false,"baseContracts":[],"canonicalName":"Errors","contractDependencies":[],"contractKind":"library","documentation":{"id":3348,"nodeType":"StructuredDocumentation","src":"126:284:21","text":" @dev Collection of common custom errors used in multiple contracts\n IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n It is recommended to avoid relying on the error API for critical functionality.\n _Available since v5.1._"},"fullyImplemented":true,"linearizedBaseContracts":[3367],"name":"Errors","nameLocation":"419:6:21","scope":3368,"usedErrors":[3355,3358,3361,3366],"usedEvents":[]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"id":22,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Panic.sol","id":3420,"exportedSymbols":{"Panic":[3419]},"nodeType":"SourceUnit","src":"99:1874:22","nodes":[{"id":3369,"nodeType":"PragmaDirective","src":"99:24:22","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":3419,"nodeType":"ContractDefinition","src":"657:1315:22","nodes":[{"id":3374,"nodeType":"VariableDeclaration","src":"718:40:22","nodes":[],"constant":true,"documentation":{"id":3371,"nodeType":"StructuredDocumentation","src":"677:36:22","text":"@dev generic / unspecified error"},"mutability":"constant","name":"GENERIC","nameLocation":"744:7:22","scope":3419,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3372,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783030","id":3373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"754:4:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"id":3378,"nodeType":"VariableDeclaration","src":"806:39:22","nodes":[],"constant":true,"documentation":{"id":3375,"nodeType":"StructuredDocumentation","src":"764:37:22","text":"@dev used by the assert() builtin"},"mutability":"constant","name":"ASSERT","nameLocation":"832:6:22","scope":3419,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3376,"name":"uint256","nodeType":"ElementaryTypeName","src":"806:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783031","id":3377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"841:4:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"internal"},{"id":3382,"nodeType":"VariableDeclaration","src":"897:47:22","nodes":[],"constant":true,"documentation":{"id":3379,"nodeType":"StructuredDocumentation","src":"851:41:22","text":"@dev arithmetic underflow or overflow"},"mutability":"constant","name":"UNDER_OVERFLOW","nameLocation":"923:14:22","scope":3419,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3380,"name":"uint256","nodeType":"ElementaryTypeName","src":"897:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783131","id":3381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"940:4:22","typeDescriptions":{"typeIdentifier":"t_rational_17_by_1","typeString":"int_const 17"},"value":"0x11"},"visibility":"internal"},{"id":3386,"nodeType":"VariableDeclaration","src":"990:49:22","nodes":[],"constant":true,"documentation":{"id":3383,"nodeType":"StructuredDocumentation","src":"950:35:22","text":"@dev division or modulo by zero"},"mutability":"constant","name":"DIVISION_BY_ZERO","nameLocation":"1016:16:22","scope":3419,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3384,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783132","id":3385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1035:4:22","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"0x12"},"visibility":"internal"},{"id":3390,"nodeType":"VariableDeclaration","src":"1080:54:22","nodes":[],"constant":true,"documentation":{"id":3387,"nodeType":"StructuredDocumentation","src":"1045:30:22","text":"@dev enum conversion error"},"mutability":"constant","name":"ENUM_CONVERSION_ERROR","nameLocation":"1106:21:22","scope":3419,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3388,"name":"uint256","nodeType":"ElementaryTypeName","src":"1080:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783231","id":3389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1130:4:22","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},"value":"0x21"},"visibility":"internal"},{"id":3394,"nodeType":"VariableDeclaration","src":"1181:55:22","nodes":[],"constant":true,"documentation":{"id":3391,"nodeType":"StructuredDocumentation","src":"1140:36:22","text":"@dev invalid encoding in storage"},"mutability":"constant","name":"STORAGE_ENCODING_ERROR","nameLocation":"1207:22:22","scope":3419,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3392,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783232","id":3393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:4:22","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"visibility":"internal"},{"id":3398,"nodeType":"VariableDeclaration","src":"1271:48:22","nodes":[],"constant":true,"documentation":{"id":3395,"nodeType":"StructuredDocumentation","src":"1242:24:22","text":"@dev empty array pop"},"mutability":"constant","name":"EMPTY_ARRAY_POP","nameLocation":"1297:15:22","scope":3419,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3396,"name":"uint256","nodeType":"ElementaryTypeName","src":"1271:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783331","id":3397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:4:22","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"0x31"},"visibility":"internal"},{"id":3402,"nodeType":"VariableDeclaration","src":"1365:52:22","nodes":[],"constant":true,"documentation":{"id":3399,"nodeType":"StructuredDocumentation","src":"1325:35:22","text":"@dev array out of bounds access"},"mutability":"constant","name":"ARRAY_OUT_OF_BOUNDS","nameLocation":"1391:19:22","scope":3419,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3400,"name":"uint256","nodeType":"ElementaryTypeName","src":"1365:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783332","id":3401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1413:4:22","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"0x32"},"visibility":"internal"},{"id":3406,"nodeType":"VariableDeclaration","src":"1493:47:22","nodes":[],"constant":true,"documentation":{"id":3403,"nodeType":"StructuredDocumentation","src":"1423:65:22","text":"@dev resource error (too large allocation or too large array)"},"mutability":"constant","name":"RESOURCE_ERROR","nameLocation":"1519:14:22","scope":3419,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3404,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783431","id":3405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1536:4:22","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"0x41"},"visibility":"internal"},{"id":3410,"nodeType":"VariableDeclaration","src":"1593:58:22","nodes":[],"constant":true,"documentation":{"id":3407,"nodeType":"StructuredDocumentation","src":"1546:42:22","text":"@dev calling invalid internal function"},"mutability":"constant","name":"INVALID_INTERNAL_FUNCTION","nameLocation":"1619:25:22","scope":3419,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3408,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783531","id":3409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:4:22","typeDescriptions":{"typeIdentifier":"t_rational_81_by_1","typeString":"int_const 81"},"value":"0x51"},"visibility":"internal"},{"id":3418,"nodeType":"FunctionDefinition","src":"1776:194:22","nodes":[],"body":{"id":3417,"nodeType":"Block","src":"1819:151:22","nodes":[],"statements":[{"AST":{"nativeSrc":"1854:110:22","nodeType":"YulBlock","src":"1854:110:22","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1875:4:22","nodeType":"YulLiteral","src":"1875:4:22","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1881:10:22","nodeType":"YulLiteral","src":"1881:10:22","type":"","value":"0x4e487b71"}],"functionName":{"name":"mstore","nativeSrc":"1868:6:22","nodeType":"YulIdentifier","src":"1868:6:22"},"nativeSrc":"1868:24:22","nodeType":"YulFunctionCall","src":"1868:24:22"},"nativeSrc":"1868:24:22","nodeType":"YulExpressionStatement","src":"1868:24:22"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1912:4:22","nodeType":"YulLiteral","src":"1912:4:22","type":"","value":"0x20"},{"name":"code","nativeSrc":"1918:4:22","nodeType":"YulIdentifier","src":"1918:4:22"}],"functionName":{"name":"mstore","nativeSrc":"1905:6:22","nodeType":"YulIdentifier","src":"1905:6:22"},"nativeSrc":"1905:18:22","nodeType":"YulFunctionCall","src":"1905:18:22"},"nativeSrc":"1905:18:22","nodeType":"YulExpressionStatement","src":"1905:18:22"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1943:4:22","nodeType":"YulLiteral","src":"1943:4:22","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"1949:4:22","nodeType":"YulLiteral","src":"1949:4:22","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1936:6:22","nodeType":"YulIdentifier","src":"1936:6:22"},"nativeSrc":"1936:18:22","nodeType":"YulFunctionCall","src":"1936:18:22"},"nativeSrc":"1936:18:22","nodeType":"YulExpressionStatement","src":"1936:18:22"}]},"evmVersion":"cancun","externalReferences":[{"declaration":3413,"isOffset":false,"isSlot":false,"src":"1918:4:22","valueSize":1}],"flags":["memory-safe"],"id":3416,"nodeType":"InlineAssembly","src":"1829:135:22"}]},"documentation":{"id":3411,"nodeType":"StructuredDocumentation","src":"1658:113:22","text":"@dev Reverts with a panic code. Recommended to use with\n the internal constants with predefined codes."},"implemented":true,"kind":"function","modifiers":[],"name":"panic","nameLocation":"1785:5:22","parameters":{"id":3414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3413,"mutability":"mutable","name":"code","nameLocation":"1799:4:22","nodeType":"VariableDeclaration","scope":3418,"src":"1791:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3412,"name":"uint256","nodeType":"ElementaryTypeName","src":"1791:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1790:14:22"},"returnParameters":{"id":3415,"nodeType":"ParameterList","parameters":[],"src":"1819:0:22"},"scope":3419,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Panic","contractDependencies":[],"contractKind":"library","documentation":{"id":3370,"nodeType":"StructuredDocumentation","src":"125:489:22","text":" @dev Helper library for emitting standardized panic codes.\n ```solidity\n contract Example {\n using Panic for uint256;\n // Use any of the declared internal constants\n function foo() { Panic.GENERIC.panic(); }\n // Alternatively\n function foo() { Panic.panic(Panic.GENERIC); }\n }\n ```\n Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n _Available since v5.1._"},"fullyImplemented":true,"linearizedBaseContracts":[3419],"name":"Panic","nameLocation":"665:5:22","scope":3420,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"id":23,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","id":3544,"exportedSymbols":{"StorageSlot":[3543]},"nodeType":"SourceUnit","src":"193:3989:23","nodes":[{"id":3421,"nodeType":"PragmaDirective","src":"193:24:23","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":3543,"nodeType":"ContractDefinition","src":"1407:2774:23","nodes":[{"id":3425,"nodeType":"StructDefinition","src":"1433:49:23","nodes":[],"canonicalName":"StorageSlot.AddressSlot","members":[{"constant":false,"id":3424,"mutability":"mutable","name":"value","nameLocation":"1470:5:23","nodeType":"VariableDeclaration","scope":3425,"src":"1462:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3423,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1440:11:23","scope":3543,"visibility":"public"},{"id":3428,"nodeType":"StructDefinition","src":"1488:46:23","nodes":[],"canonicalName":"StorageSlot.BooleanSlot","members":[{"constant":false,"id":3427,"mutability":"mutable","name":"value","nameLocation":"1522:5:23","nodeType":"VariableDeclaration","scope":3428,"src":"1517:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3426,"name":"bool","nodeType":"ElementaryTypeName","src":"1517:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1495:11:23","scope":3543,"visibility":"public"},{"id":3431,"nodeType":"StructDefinition","src":"1540:49:23","nodes":[],"canonicalName":"StorageSlot.Bytes32Slot","members":[{"constant":false,"id":3430,"mutability":"mutable","name":"value","nameLocation":"1577:5:23","nodeType":"VariableDeclaration","scope":3431,"src":"1569:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3429,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1569:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1547:11:23","scope":3543,"visibility":"public"},{"id":3434,"nodeType":"StructDefinition","src":"1595:49:23","nodes":[],"canonicalName":"StorageSlot.Uint256Slot","members":[{"constant":false,"id":3433,"mutability":"mutable","name":"value","nameLocation":"1632:5:23","nodeType":"VariableDeclaration","scope":3434,"src":"1624:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3432,"name":"uint256","nodeType":"ElementaryTypeName","src":"1624:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1602:11:23","scope":3543,"visibility":"public"},{"id":3437,"nodeType":"StructDefinition","src":"1650:47:23","nodes":[],"canonicalName":"StorageSlot.Int256Slot","members":[{"constant":false,"id":3436,"mutability":"mutable","name":"value","nameLocation":"1685:5:23","nodeType":"VariableDeclaration","scope":3437,"src":"1678:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3435,"name":"int256","nodeType":"ElementaryTypeName","src":"1678:6:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"name":"Int256Slot","nameLocation":"1657:10:23","scope":3543,"visibility":"public"},{"id":3440,"nodeType":"StructDefinition","src":"1703:47:23","nodes":[],"canonicalName":"StorageSlot.StringSlot","members":[{"constant":false,"id":3439,"mutability":"mutable","name":"value","nameLocation":"1738:5:23","nodeType":"VariableDeclaration","scope":3440,"src":"1731:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":3438,"name":"string","nodeType":"ElementaryTypeName","src":"1731:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1710:10:23","scope":3543,"visibility":"public"},{"id":3443,"nodeType":"StructDefinition","src":"1756:45:23","nodes":[],"canonicalName":"StorageSlot.BytesSlot","members":[{"constant":false,"id":3442,"mutability":"mutable","name":"value","nameLocation":"1789:5:23","nodeType":"VariableDeclaration","scope":3443,"src":"1783:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3441,"name":"bytes","nodeType":"ElementaryTypeName","src":"1783:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1763:9:23","scope":3543,"visibility":"public"},{"id":3454,"nodeType":"FunctionDefinition","src":"1899:163:23","nodes":[],"body":{"id":3453,"nodeType":"Block","src":"1983:79:23","nodes":[],"statements":[{"AST":{"nativeSrc":"2018:38:23","nodeType":"YulBlock","src":"2018:38:23","statements":[{"nativeSrc":"2032:14:23","nodeType":"YulAssignment","src":"2032:14:23","value":{"name":"slot","nativeSrc":"2042:4:23","nodeType":"YulIdentifier","src":"2042:4:23"},"variableNames":[{"name":"r.slot","nativeSrc":"2032:6:23","nodeType":"YulIdentifier","src":"2032:6:23"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3450,"isOffset":false,"isSlot":true,"src":"2032:6:23","suffix":"slot","valueSize":1},{"declaration":3446,"isOffset":false,"isSlot":false,"src":"2042:4:23","valueSize":1}],"flags":["memory-safe"],"id":3452,"nodeType":"InlineAssembly","src":"1993:63:23"}]},"documentation":{"id":3444,"nodeType":"StructuredDocumentation","src":"1807:87:23","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1908:14:23","parameters":{"id":3447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3446,"mutability":"mutable","name":"slot","nameLocation":"1931:4:23","nodeType":"VariableDeclaration","scope":3454,"src":"1923:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3445,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1923:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1922:14:23"},"returnParameters":{"id":3451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3450,"mutability":"mutable","name":"r","nameLocation":"1980:1:23","nodeType":"VariableDeclaration","scope":3454,"src":"1960:21:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3425_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":3449,"nodeType":"UserDefinedTypeName","pathNode":{"id":3448,"name":"AddressSlot","nameLocations":["1960:11:23"],"nodeType":"IdentifierPath","referencedDeclaration":3425,"src":"1960:11:23"},"referencedDeclaration":3425,"src":"1960:11:23","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$3425_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1959:23:23"},"scope":3543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3465,"nodeType":"FunctionDefinition","src":"2159:163:23","nodes":[],"body":{"id":3464,"nodeType":"Block","src":"2243:79:23","nodes":[],"statements":[{"AST":{"nativeSrc":"2278:38:23","nodeType":"YulBlock","src":"2278:38:23","statements":[{"nativeSrc":"2292:14:23","nodeType":"YulAssignment","src":"2292:14:23","value":{"name":"slot","nativeSrc":"2302:4:23","nodeType":"YulIdentifier","src":"2302:4:23"},"variableNames":[{"name":"r.slot","nativeSrc":"2292:6:23","nodeType":"YulIdentifier","src":"2292:6:23"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3461,"isOffset":false,"isSlot":true,"src":"2292:6:23","suffix":"slot","valueSize":1},{"declaration":3457,"isOffset":false,"isSlot":false,"src":"2302:4:23","valueSize":1}],"flags":["memory-safe"],"id":3463,"nodeType":"InlineAssembly","src":"2253:63:23"}]},"documentation":{"id":3455,"nodeType":"StructuredDocumentation","src":"2068:86:23","text":" @dev Returns a `BooleanSlot` with member `value` located at `slot`."},"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2168:14:23","parameters":{"id":3458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3457,"mutability":"mutable","name":"slot","nameLocation":"2191:4:23","nodeType":"VariableDeclaration","scope":3465,"src":"2183:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3456,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2183:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2182:14:23"},"returnParameters":{"id":3462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3461,"mutability":"mutable","name":"r","nameLocation":"2240:1:23","nodeType":"VariableDeclaration","scope":3465,"src":"2220:21:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$3428_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":3460,"nodeType":"UserDefinedTypeName","pathNode":{"id":3459,"name":"BooleanSlot","nameLocations":["2220:11:23"],"nodeType":"IdentifierPath","referencedDeclaration":3428,"src":"2220:11:23"},"referencedDeclaration":3428,"src":"2220:11:23","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$3428_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2219:23:23"},"scope":3543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3476,"nodeType":"FunctionDefinition","src":"2419:163:23","nodes":[],"body":{"id":3475,"nodeType":"Block","src":"2503:79:23","nodes":[],"statements":[{"AST":{"nativeSrc":"2538:38:23","nodeType":"YulBlock","src":"2538:38:23","statements":[{"nativeSrc":"2552:14:23","nodeType":"YulAssignment","src":"2552:14:23","value":{"name":"slot","nativeSrc":"2562:4:23","nodeType":"YulIdentifier","src":"2562:4:23"},"variableNames":[{"name":"r.slot","nativeSrc":"2552:6:23","nodeType":"YulIdentifier","src":"2552:6:23"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3472,"isOffset":false,"isSlot":true,"src":"2552:6:23","suffix":"slot","valueSize":1},{"declaration":3468,"isOffset":false,"isSlot":false,"src":"2562:4:23","valueSize":1}],"flags":["memory-safe"],"id":3474,"nodeType":"InlineAssembly","src":"2513:63:23"}]},"documentation":{"id":3466,"nodeType":"StructuredDocumentation","src":"2328:86:23","text":" @dev Returns a `Bytes32Slot` with member `value` located at `slot`."},"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2428:14:23","parameters":{"id":3469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3468,"mutability":"mutable","name":"slot","nameLocation":"2451:4:23","nodeType":"VariableDeclaration","scope":3476,"src":"2443:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3467,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2443:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2442:14:23"},"returnParameters":{"id":3473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3472,"mutability":"mutable","name":"r","nameLocation":"2500:1:23","nodeType":"VariableDeclaration","scope":3476,"src":"2480:21:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$3431_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":3471,"nodeType":"UserDefinedTypeName","pathNode":{"id":3470,"name":"Bytes32Slot","nameLocations":["2480:11:23"],"nodeType":"IdentifierPath","referencedDeclaration":3431,"src":"2480:11:23"},"referencedDeclaration":3431,"src":"2480:11:23","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$3431_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2479:23:23"},"scope":3543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3487,"nodeType":"FunctionDefinition","src":"2679:163:23","nodes":[],"body":{"id":3486,"nodeType":"Block","src":"2763:79:23","nodes":[],"statements":[{"AST":{"nativeSrc":"2798:38:23","nodeType":"YulBlock","src":"2798:38:23","statements":[{"nativeSrc":"2812:14:23","nodeType":"YulAssignment","src":"2812:14:23","value":{"name":"slot","nativeSrc":"2822:4:23","nodeType":"YulIdentifier","src":"2822:4:23"},"variableNames":[{"name":"r.slot","nativeSrc":"2812:6:23","nodeType":"YulIdentifier","src":"2812:6:23"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3483,"isOffset":false,"isSlot":true,"src":"2812:6:23","suffix":"slot","valueSize":1},{"declaration":3479,"isOffset":false,"isSlot":false,"src":"2822:4:23","valueSize":1}],"flags":["memory-safe"],"id":3485,"nodeType":"InlineAssembly","src":"2773:63:23"}]},"documentation":{"id":3477,"nodeType":"StructuredDocumentation","src":"2588:86:23","text":" @dev Returns a `Uint256Slot` with member `value` located at `slot`."},"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2688:14:23","parameters":{"id":3480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3479,"mutability":"mutable","name":"slot","nameLocation":"2711:4:23","nodeType":"VariableDeclaration","scope":3487,"src":"2703:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3478,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2703:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2702:14:23"},"returnParameters":{"id":3484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3483,"mutability":"mutable","name":"r","nameLocation":"2760:1:23","nodeType":"VariableDeclaration","scope":3487,"src":"2740:21:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$3434_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":3482,"nodeType":"UserDefinedTypeName","pathNode":{"id":3481,"name":"Uint256Slot","nameLocations":["2740:11:23"],"nodeType":"IdentifierPath","referencedDeclaration":3434,"src":"2740:11:23"},"referencedDeclaration":3434,"src":"2740:11:23","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$3434_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2739:23:23"},"scope":3543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3498,"nodeType":"FunctionDefinition","src":"2938:161:23","nodes":[],"body":{"id":3497,"nodeType":"Block","src":"3020:79:23","nodes":[],"statements":[{"AST":{"nativeSrc":"3055:38:23","nodeType":"YulBlock","src":"3055:38:23","statements":[{"nativeSrc":"3069:14:23","nodeType":"YulAssignment","src":"3069:14:23","value":{"name":"slot","nativeSrc":"3079:4:23","nodeType":"YulIdentifier","src":"3079:4:23"},"variableNames":[{"name":"r.slot","nativeSrc":"3069:6:23","nodeType":"YulIdentifier","src":"3069:6:23"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3494,"isOffset":false,"isSlot":true,"src":"3069:6:23","suffix":"slot","valueSize":1},{"declaration":3490,"isOffset":false,"isSlot":false,"src":"3079:4:23","valueSize":1}],"flags":["memory-safe"],"id":3496,"nodeType":"InlineAssembly","src":"3030:63:23"}]},"documentation":{"id":3488,"nodeType":"StructuredDocumentation","src":"2848:85:23","text":" @dev Returns a `Int256Slot` with member `value` located at `slot`."},"implemented":true,"kind":"function","modifiers":[],"name":"getInt256Slot","nameLocation":"2947:13:23","parameters":{"id":3491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3490,"mutability":"mutable","name":"slot","nameLocation":"2969:4:23","nodeType":"VariableDeclaration","scope":3498,"src":"2961:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3489,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2961:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2960:14:23"},"returnParameters":{"id":3495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3494,"mutability":"mutable","name":"r","nameLocation":"3017:1:23","nodeType":"VariableDeclaration","scope":3498,"src":"2998:20:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$3437_storage_ptr","typeString":"struct StorageSlot.Int256Slot"},"typeName":{"id":3493,"nodeType":"UserDefinedTypeName","pathNode":{"id":3492,"name":"Int256Slot","nameLocations":["2998:10:23"],"nodeType":"IdentifierPath","referencedDeclaration":3437,"src":"2998:10:23"},"referencedDeclaration":3437,"src":"2998:10:23","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$3437_storage_ptr","typeString":"struct StorageSlot.Int256Slot"}},"visibility":"internal"}],"src":"2997:22:23"},"scope":3543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3509,"nodeType":"FunctionDefinition","src":"3195:161:23","nodes":[],"body":{"id":3508,"nodeType":"Block","src":"3277:79:23","nodes":[],"statements":[{"AST":{"nativeSrc":"3312:38:23","nodeType":"YulBlock","src":"3312:38:23","statements":[{"nativeSrc":"3326:14:23","nodeType":"YulAssignment","src":"3326:14:23","value":{"name":"slot","nativeSrc":"3336:4:23","nodeType":"YulIdentifier","src":"3336:4:23"},"variableNames":[{"name":"r.slot","nativeSrc":"3326:6:23","nodeType":"YulIdentifier","src":"3326:6:23"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3505,"isOffset":false,"isSlot":true,"src":"3326:6:23","suffix":"slot","valueSize":1},{"declaration":3501,"isOffset":false,"isSlot":false,"src":"3336:4:23","valueSize":1}],"flags":["memory-safe"],"id":3507,"nodeType":"InlineAssembly","src":"3287:63:23"}]},"documentation":{"id":3499,"nodeType":"StructuredDocumentation","src":"3105:85:23","text":" @dev Returns a `StringSlot` with member `value` located at `slot`."},"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3204:13:23","parameters":{"id":3502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3501,"mutability":"mutable","name":"slot","nameLocation":"3226:4:23","nodeType":"VariableDeclaration","scope":3509,"src":"3218:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3500,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3218:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3217:14:23"},"returnParameters":{"id":3506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3505,"mutability":"mutable","name":"r","nameLocation":"3274:1:23","nodeType":"VariableDeclaration","scope":3509,"src":"3255:20:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$3440_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":3504,"nodeType":"UserDefinedTypeName","pathNode":{"id":3503,"name":"StringSlot","nameLocations":["3255:10:23"],"nodeType":"IdentifierPath","referencedDeclaration":3440,"src":"3255:10:23"},"referencedDeclaration":3440,"src":"3255:10:23","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$3440_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3254:22:23"},"scope":3543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3520,"nodeType":"FunctionDefinition","src":"3468:175:23","nodes":[],"body":{"id":3519,"nodeType":"Block","src":"3558:85:23","nodes":[],"statements":[{"AST":{"nativeSrc":"3593:44:23","nodeType":"YulBlock","src":"3593:44:23","statements":[{"nativeSrc":"3607:20:23","nodeType":"YulAssignment","src":"3607:20:23","value":{"name":"store.slot","nativeSrc":"3617:10:23","nodeType":"YulIdentifier","src":"3617:10:23"},"variableNames":[{"name":"r.slot","nativeSrc":"3607:6:23","nodeType":"YulIdentifier","src":"3607:6:23"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3516,"isOffset":false,"isSlot":true,"src":"3607:6:23","suffix":"slot","valueSize":1},{"declaration":3512,"isOffset":false,"isSlot":true,"src":"3617:10:23","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":3518,"nodeType":"InlineAssembly","src":"3568:69:23"}]},"documentation":{"id":3510,"nodeType":"StructuredDocumentation","src":"3362:101:23","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3477:13:23","parameters":{"id":3513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3512,"mutability":"mutable","name":"store","nameLocation":"3506:5:23","nodeType":"VariableDeclaration","scope":3520,"src":"3491:20:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":3511,"name":"string","nodeType":"ElementaryTypeName","src":"3491:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3490:22:23"},"returnParameters":{"id":3517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3516,"mutability":"mutable","name":"r","nameLocation":"3555:1:23","nodeType":"VariableDeclaration","scope":3520,"src":"3536:20:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$3440_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":3515,"nodeType":"UserDefinedTypeName","pathNode":{"id":3514,"name":"StringSlot","nameLocations":["3536:10:23"],"nodeType":"IdentifierPath","referencedDeclaration":3440,"src":"3536:10:23"},"referencedDeclaration":3440,"src":"3536:10:23","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$3440_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3535:22:23"},"scope":3543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3531,"nodeType":"FunctionDefinition","src":"3738:159:23","nodes":[],"body":{"id":3530,"nodeType":"Block","src":"3818:79:23","nodes":[],"statements":[{"AST":{"nativeSrc":"3853:38:23","nodeType":"YulBlock","src":"3853:38:23","statements":[{"nativeSrc":"3867:14:23","nodeType":"YulAssignment","src":"3867:14:23","value":{"name":"slot","nativeSrc":"3877:4:23","nodeType":"YulIdentifier","src":"3877:4:23"},"variableNames":[{"name":"r.slot","nativeSrc":"3867:6:23","nodeType":"YulIdentifier","src":"3867:6:23"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3527,"isOffset":false,"isSlot":true,"src":"3867:6:23","suffix":"slot","valueSize":1},{"declaration":3523,"isOffset":false,"isSlot":false,"src":"3877:4:23","valueSize":1}],"flags":["memory-safe"],"id":3529,"nodeType":"InlineAssembly","src":"3828:63:23"}]},"documentation":{"id":3521,"nodeType":"StructuredDocumentation","src":"3649:84:23","text":" @dev Returns a `BytesSlot` with member `value` located at `slot`."},"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3747:12:23","parameters":{"id":3524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3523,"mutability":"mutable","name":"slot","nameLocation":"3768:4:23","nodeType":"VariableDeclaration","scope":3531,"src":"3760:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3522,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3760:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3759:14:23"},"returnParameters":{"id":3528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3527,"mutability":"mutable","name":"r","nameLocation":"3815:1:23","nodeType":"VariableDeclaration","scope":3531,"src":"3797:19:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$3443_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":3526,"nodeType":"UserDefinedTypeName","pathNode":{"id":3525,"name":"BytesSlot","nameLocations":["3797:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":3443,"src":"3797:9:23"},"referencedDeclaration":3443,"src":"3797:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$3443_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3796:21:23"},"scope":3543,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3542,"nodeType":"FunctionDefinition","src":"4007:172:23","nodes":[],"body":{"id":3541,"nodeType":"Block","src":"4094:85:23","nodes":[],"statements":[{"AST":{"nativeSrc":"4129:44:23","nodeType":"YulBlock","src":"4129:44:23","statements":[{"nativeSrc":"4143:20:23","nodeType":"YulAssignment","src":"4143:20:23","value":{"name":"store.slot","nativeSrc":"4153:10:23","nodeType":"YulIdentifier","src":"4153:10:23"},"variableNames":[{"name":"r.slot","nativeSrc":"4143:6:23","nodeType":"YulIdentifier","src":"4143:6:23"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3538,"isOffset":false,"isSlot":true,"src":"4143:6:23","suffix":"slot","valueSize":1},{"declaration":3534,"isOffset":false,"isSlot":true,"src":"4153:10:23","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":3540,"nodeType":"InlineAssembly","src":"4104:69:23"}]},"documentation":{"id":3532,"nodeType":"StructuredDocumentation","src":"3903:99:23","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"4016:12:23","parameters":{"id":3535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3534,"mutability":"mutable","name":"store","nameLocation":"4043:5:23","nodeType":"VariableDeclaration","scope":3542,"src":"4029:19:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3533,"name":"bytes","nodeType":"ElementaryTypeName","src":"4029:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4028:21:23"},"returnParameters":{"id":3539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3538,"mutability":"mutable","name":"r","nameLocation":"4091:1:23","nodeType":"VariableDeclaration","scope":3542,"src":"4073:19:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$3443_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":3537,"nodeType":"UserDefinedTypeName","pathNode":{"id":3536,"name":"BytesSlot","nameLocations":["4073:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":3443,"src":"4073:9:23"},"referencedDeclaration":3443,"src":"4073:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$3443_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"4072:21:23"},"scope":3543,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":3422,"nodeType":"StructuredDocumentation","src":"219:1187:23","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC-1967 implementation slot:\n ```solidity\n contract ERC1967 {\n // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(newImplementation.code.length > 0);\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n TIP: Consider using this library along with {SlotDerivation}."},"fullyImplemented":true,"linearizedBaseContracts":[3543],"name":"StorageSlot","nameLocation":"1415:11:23","scope":3544,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"id":24,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","id":3568,"exportedSymbols":{"ERC165":[3567],"IERC165":[3774]},"nodeType":"SourceUnit","src":"114:765:24","nodes":[{"id":3545,"nodeType":"PragmaDirective","src":"114:24:24","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":3547,"nodeType":"ImportDirective","src":"140:38:24","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","nameLocation":"-1:-1:-1","scope":3568,"sourceUnit":3775,"symbolAliases":[{"foreign":{"id":3546,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3774,"src":"148:7:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":3567,"nodeType":"ContractDefinition","src":"660:218:24","nodes":[{"id":3566,"nodeType":"FunctionDefinition","src":"730:146:24","nodes":[],"body":{"id":3565,"nodeType":"Block","src":"812:64:24","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3558,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3553,"src":"829:11:24","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":3560,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3774,"src":"849:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$3774_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$3774_$","typeString":"type(contract IERC165)"}],"id":3559,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"844:4:24","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"844:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$3774","typeString":"type(contract IERC165)"}},"id":3562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"858:11:24","memberName":"interfaceId","nodeType":"MemberAccess","src":"844:25:24","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"829:40:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3557,"id":3564,"nodeType":"Return","src":"822:47:24"}]},"baseFunctions":[3773],"documentation":{"id":3551,"nodeType":"StructuredDocumentation","src":"702:23:24","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"739:17:24","parameters":{"id":3554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3553,"mutability":"mutable","name":"interfaceId","nameLocation":"764:11:24","nodeType":"VariableDeclaration","scope":3566,"src":"757:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3552,"name":"bytes4","nodeType":"ElementaryTypeName","src":"757:6:24","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"756:20:24"},"returnParameters":{"id":3557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3556,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3566,"src":"806:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3555,"name":"bool","nodeType":"ElementaryTypeName","src":"806:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"805:6:24"},"scope":3567,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":3549,"name":"IERC165","nameLocations":["688:7:24"],"nodeType":"IdentifierPath","referencedDeclaration":3774,"src":"688:7:24"},"id":3550,"nodeType":"InheritanceSpecifier","src":"688:7:24"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":3548,"nodeType":"StructuredDocumentation","src":"180:479:24","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[3567,3774],"name":"ERC165","nameLocation":"678:6:24","scope":3568,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"id":25,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol","id":3763,"exportedSymbols":{"ERC165Checker":[3762],"IERC165":[3774]},"nodeType":"SourceUnit","src":"121:4933:25","nodes":[{"id":3569,"nodeType":"PragmaDirective","src":"121:24:25","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":3571,"nodeType":"ImportDirective","src":"147:38:25","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","nameLocation":"-1:-1:-1","scope":3763,"sourceUnit":3775,"symbolAliases":[{"foreign":{"id":3570,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3774,"src":"155:7:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":3762,"nodeType":"ContractDefinition","src":"465:4588:25","nodes":[{"id":3575,"nodeType":"VariableDeclaration","src":"567:57:25","nodes":[],"constant":true,"mutability":"constant","name":"INTERFACE_ID_INVALID","nameLocation":"591:20:25","scope":3762,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3573,"name":"bytes4","nodeType":"ElementaryTypeName","src":"567:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30786666666666666666","id":3574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"614:10:25","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"visibility":"private"},{"id":3598,"nodeType":"FunctionDefinition","src":"719:427:25","nodes":[],"body":{"id":3597,"nodeType":"Block","src":"789:357:25","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3584,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3578,"src":"1024:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":3586,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3774,"src":"1038:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$3774_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$3774_$","typeString":"type(contract IERC165)"}],"id":3585,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1033:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1033:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$3774","typeString":"type(contract IERC165)"}},"id":3588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1047:11:25","memberName":"interfaceId","nodeType":"MemberAccess","src":"1033:25:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":3583,"name":"supportsERC165InterfaceUnchecked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"991:32:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":3589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"991:68:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":3594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1075:64:25","subExpression":{"arguments":[{"id":3591,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3578,"src":"1109:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3592,"name":"INTERFACE_ID_INVALID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3575,"src":"1118:20:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":3590,"name":"supportsERC165InterfaceUnchecked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"1076:32:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":3593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1076:63:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"991:148:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3582,"id":3596,"nodeType":"Return","src":"972:167:25"}]},"documentation":{"id":3576,"nodeType":"StructuredDocumentation","src":"631:83:25","text":" @dev Returns true if `account` supports the {IERC165} interface."},"implemented":true,"kind":"function","modifiers":[],"name":"supportsERC165","nameLocation":"728:14:25","parameters":{"id":3579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3578,"mutability":"mutable","name":"account","nameLocation":"751:7:25","nodeType":"VariableDeclaration","scope":3598,"src":"743:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3577,"name":"address","nodeType":"ElementaryTypeName","src":"743:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"742:17:25"},"returnParameters":{"id":3582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3581,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3598,"src":"783:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3580,"name":"bool","nodeType":"ElementaryTypeName","src":"783:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"782:6:25"},"scope":3762,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":3618,"nodeType":"FunctionDefinition","src":"1364:283:25","nodes":[],"body":{"id":3617,"nodeType":"Block","src":"1457:190:25","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3609,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3601,"src":"1574:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3608,"name":"supportsERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3598,"src":"1559:14:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":3610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1559:23:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":3612,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3601,"src":"1619:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3613,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3603,"src":"1628:11:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":3611,"name":"supportsERC165InterfaceUnchecked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"1586:32:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":3614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1586:54:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1559:81:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3607,"id":3616,"nodeType":"Return","src":"1552:88:25"}]},"documentation":{"id":3599,"nodeType":"StructuredDocumentation","src":"1152:207:25","text":" @dev Returns true if `account` supports the interface defined by\n `interfaceId`. Support for {IERC165} itself is queried automatically.\n See {IERC165-supportsInterface}."},"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1373:17:25","parameters":{"id":3604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3601,"mutability":"mutable","name":"account","nameLocation":"1399:7:25","nodeType":"VariableDeclaration","scope":3618,"src":"1391:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3600,"name":"address","nodeType":"ElementaryTypeName","src":"1391:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3603,"mutability":"mutable","name":"interfaceId","nameLocation":"1415:11:25","nodeType":"VariableDeclaration","scope":3618,"src":"1408:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3602,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1408:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1390:37:25"},"returnParameters":{"id":3607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3606,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3618,"src":"1451:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3605,"name":"bool","nodeType":"ElementaryTypeName","src":"1451:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1450:6:25"},"scope":3762,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":3674,"nodeType":"FunctionDefinition","src":"1994:700:25","nodes":[],"body":{"id":3673,"nodeType":"Block","src":"2133:561:25","nodes":[],"statements":[{"assignments":[3634],"declarations":[{"constant":false,"id":3634,"mutability":"mutable","name":"interfaceIdsSupported","nameLocation":"2256:21:25","nodeType":"VariableDeclaration","scope":3673,"src":"2242:35:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":3632,"name":"bool","nodeType":"ElementaryTypeName","src":"2242:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3633,"nodeType":"ArrayTypeName","src":"2242:6:25","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"id":3641,"initialValue":{"arguments":[{"expression":{"id":3638,"name":"interfaceIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3624,"src":"2291:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":3639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2304:6:25","memberName":"length","nodeType":"MemberAccess","src":"2291:19:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3637,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2280:10:25","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bool[] memory)"},"typeName":{"baseType":{"id":3635,"name":"bool","nodeType":"ElementaryTypeName","src":"2284:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3636,"nodeType":"ArrayTypeName","src":"2284:6:25","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}}},"id":3640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2280:31:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2242:69:25"},{"condition":{"arguments":[{"id":3643,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"2384:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3642,"name":"supportsERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3598,"src":"2369:14:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":3644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2369:23:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3670,"nodeType":"IfStatement","src":"2365:284:25","trueBody":{"id":3669,"nodeType":"Block","src":"2394:255:25","statements":[{"body":{"id":3667,"nodeType":"Block","src":"2521:118:25","statements":[{"expression":{"id":3665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3656,"name":"interfaceIdsSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3634,"src":"2539:21:25","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":3658,"indexExpression":{"id":3657,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3646,"src":"2561:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2539:24:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3660,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"2599:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":3661,"name":"interfaceIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3624,"src":"2608:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":3663,"indexExpression":{"id":3662,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3646,"src":"2621:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2608:15:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":3659,"name":"supportsERC165InterfaceUnchecked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"2566:32:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":3664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2566:58:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2539:85:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3666,"nodeType":"ExpressionStatement","src":"2539:85:25"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3649,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3646,"src":"2491:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3650,"name":"interfaceIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3624,"src":"2495:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":3651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2508:6:25","memberName":"length","nodeType":"MemberAccess","src":"2495:19:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2491:23:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3668,"initializationExpression":{"assignments":[3646],"declarations":[{"constant":false,"id":3646,"mutability":"mutable","name":"i","nameLocation":"2484:1:25","nodeType":"VariableDeclaration","scope":3668,"src":"2476:9:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3645,"name":"uint256","nodeType":"ElementaryTypeName","src":"2476:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3648,"initialValue":{"hexValue":"30","id":3647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2488:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2476:13:25"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2516:3:25","subExpression":{"id":3653,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3646,"src":"2516:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3655,"nodeType":"ExpressionStatement","src":"2516:3:25"},"nodeType":"ForStatement","src":"2471:168:25"}]}},{"expression":{"id":3671,"name":"interfaceIdsSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3634,"src":"2666:21:25","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"functionReturnParameters":3629,"id":3672,"nodeType":"Return","src":"2659:28:25"}]},"documentation":{"id":3619,"nodeType":"StructuredDocumentation","src":"1653:336:25","text":" @dev Returns a boolean array where each value corresponds to the\n interfaces passed in and whether they're supported or not. This allows\n you to batch check interfaces for a contract where your expectation\n is that some interfaces may not be supported.\n See {IERC165-supportsInterface}."},"implemented":true,"kind":"function","modifiers":[],"name":"getSupportedInterfaces","nameLocation":"2003:22:25","parameters":{"id":3625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3621,"mutability":"mutable","name":"account","nameLocation":"2043:7:25","nodeType":"VariableDeclaration","scope":3674,"src":"2035:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3620,"name":"address","nodeType":"ElementaryTypeName","src":"2035:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3624,"mutability":"mutable","name":"interfaceIds","nameLocation":"2076:12:25","nodeType":"VariableDeclaration","scope":3674,"src":"2060:28:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":3622,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2060:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":3623,"nodeType":"ArrayTypeName","src":"2060:8:25","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"2025:69:25"},"returnParameters":{"id":3629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3628,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3674,"src":"2118:13:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":3626,"name":"bool","nodeType":"ElementaryTypeName","src":"2118:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3627,"nodeType":"ArrayTypeName","src":"2118:6:25","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"2117:15:25"},"scope":3762,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":3720,"nodeType":"FunctionDefinition","src":"3029:544:25","nodes":[],"body":{"id":3719,"nodeType":"Block","src":"3136:437:25","nodes":[],"statements":[{"condition":{"id":3688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3193:24:25","subExpression":{"arguments":[{"id":3686,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3677,"src":"3209:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3685,"name":"supportsERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3598,"src":"3194:14:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":3687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3194:23:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3692,"nodeType":"IfStatement","src":"3189:67:25","trueBody":{"id":3691,"nodeType":"Block","src":"3219:37:25","statements":[{"expression":{"hexValue":"66616c7365","id":3689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3240:5:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3684,"id":3690,"nodeType":"Return","src":"3233:12:25"}]}},{"body":{"id":3715,"nodeType":"Block","src":"3375:134:25","statements":[{"condition":{"id":3710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3393:59:25","subExpression":{"arguments":[{"id":3705,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3677,"src":"3427:7:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":3706,"name":"interfaceIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3680,"src":"3436:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":3708,"indexExpression":{"id":3707,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"3449:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3436:15:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":3704,"name":"supportsERC165InterfaceUnchecked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"3394:32:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":3709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3394:58:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3714,"nodeType":"IfStatement","src":"3389:110:25","trueBody":{"id":3713,"nodeType":"Block","src":"3454:45:25","statements":[{"expression":{"hexValue":"66616c7365","id":3711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3479:5:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3684,"id":3712,"nodeType":"Return","src":"3472:12:25"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3697,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"3345:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3698,"name":"interfaceIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3680,"src":"3349:12:25","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":3699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3362:6:25","memberName":"length","nodeType":"MemberAccess","src":"3349:19:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3345:23:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3716,"initializationExpression":{"assignments":[3694],"declarations":[{"constant":false,"id":3694,"mutability":"mutable","name":"i","nameLocation":"3338:1:25","nodeType":"VariableDeclaration","scope":3716,"src":"3330:9:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3693,"name":"uint256","nodeType":"ElementaryTypeName","src":"3330:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3696,"initialValue":{"hexValue":"30","id":3695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3342:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3330:13:25"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3370:3:25","subExpression":{"id":3701,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"3370:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3703,"nodeType":"ExpressionStatement","src":"3370:3:25"},"nodeType":"ForStatement","src":"3325:184:25"},{"expression":{"hexValue":"74727565","id":3717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3562:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3684,"id":3718,"nodeType":"Return","src":"3555:11:25"}]},"documentation":{"id":3675,"nodeType":"StructuredDocumentation","src":"2700:324:25","text":" @dev Returns true if `account` supports all the interfaces defined in\n `interfaceIds`. Support for {IERC165} itself is queried automatically.\n Batch-querying can lead to gas savings by skipping repeated checks for\n {IERC165} support.\n See {IERC165-supportsInterface}."},"implemented":true,"kind":"function","modifiers":[],"name":"supportsAllInterfaces","nameLocation":"3038:21:25","parameters":{"id":3681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3677,"mutability":"mutable","name":"account","nameLocation":"3068:7:25","nodeType":"VariableDeclaration","scope":3720,"src":"3060:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3676,"name":"address","nodeType":"ElementaryTypeName","src":"3060:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3680,"mutability":"mutable","name":"interfaceIds","nameLocation":"3093:12:25","nodeType":"VariableDeclaration","scope":3720,"src":"3077:28:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":3678,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3077:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":3679,"nodeType":"ArrayTypeName","src":"3077:8:25","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"3059:47:25"},"returnParameters":{"id":3684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3683,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3720,"src":"3130:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3682,"name":"bool","nodeType":"ElementaryTypeName","src":"3130:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3129:6:25"},"scope":3762,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":3761,"nodeType":"FunctionDefinition","src":"4403:648:25","nodes":[],"body":{"id":3760,"nodeType":"Block","src":"4511:540:25","nodes":[],"statements":[{"assignments":[3731],"declarations":[{"constant":false,"id":3731,"mutability":"mutable","name":"encodedParams","nameLocation":"4558:13:25","nodeType":"VariableDeclaration","scope":3760,"src":"4545:26:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3730,"name":"bytes","nodeType":"ElementaryTypeName","src":"4545:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3739,"initialValue":{"arguments":[{"expression":{"id":3734,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3774,"src":"4589:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$3774_$","typeString":"type(contract IERC165)"}},"id":3735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4597:17:25","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":3773,"src":"4589:25:25","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_bytes4_$returns$_t_bool_$","typeString":"function IERC165.supportsInterface(bytes4) view returns (bool)"}},{"components":[{"id":3736,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3725,"src":"4617:11:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"id":3737,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4616:13:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$_t_bytes4_$returns$_t_bool_$","typeString":"function IERC165.supportsInterface(bytes4) view returns (bool)"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":3732,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4574:3:25","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3733,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4578:10:25","memberName":"encodeCall","nodeType":"MemberAccess","src":"4574:14:25","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4574:56:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4545:85:25"},{"assignments":[3741],"declarations":[{"constant":false,"id":3741,"mutability":"mutable","name":"success","nameLocation":"4677:7:25","nodeType":"VariableDeclaration","scope":3760,"src":"4672:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3740,"name":"bool","nodeType":"ElementaryTypeName","src":"4672:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":3742,"nodeType":"VariableDeclarationStatement","src":"4672:12:25"},{"assignments":[3744],"declarations":[{"constant":false,"id":3744,"mutability":"mutable","name":"returnSize","nameLocation":"4702:10:25","nodeType":"VariableDeclaration","scope":3760,"src":"4694:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3743,"name":"uint256","nodeType":"ElementaryTypeName","src":"4694:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3745,"nodeType":"VariableDeclarationStatement","src":"4694:18:25"},{"assignments":[3747],"declarations":[{"constant":false,"id":3747,"mutability":"mutable","name":"returnValue","nameLocation":"4730:11:25","nodeType":"VariableDeclaration","scope":3760,"src":"4722:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3746,"name":"uint256","nodeType":"ElementaryTypeName","src":"4722:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3748,"nodeType":"VariableDeclarationStatement","src":"4722:19:25"},{"AST":{"nativeSrc":"4776:203:25","nodeType":"YulBlock","src":"4776:203:25","statements":[{"nativeSrc":"4790:97:25","nodeType":"YulAssignment","src":"4790:97:25","value":{"arguments":[{"kind":"number","nativeSrc":"4812:5:25","nodeType":"YulLiteral","src":"4812:5:25","type":"","value":"30000"},{"name":"account","nativeSrc":"4819:7:25","nodeType":"YulIdentifier","src":"4819:7:25"},{"arguments":[{"name":"encodedParams","nativeSrc":"4832:13:25","nodeType":"YulIdentifier","src":"4832:13:25"},{"kind":"number","nativeSrc":"4847:4:25","nodeType":"YulLiteral","src":"4847:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4828:3:25","nodeType":"YulIdentifier","src":"4828:3:25"},"nativeSrc":"4828:24:25","nodeType":"YulFunctionCall","src":"4828:24:25"},{"arguments":[{"name":"encodedParams","nativeSrc":"4860:13:25","nodeType":"YulIdentifier","src":"4860:13:25"}],"functionName":{"name":"mload","nativeSrc":"4854:5:25","nodeType":"YulIdentifier","src":"4854:5:25"},"nativeSrc":"4854:20:25","nodeType":"YulFunctionCall","src":"4854:20:25"},{"kind":"number","nativeSrc":"4876:4:25","nodeType":"YulLiteral","src":"4876:4:25","type":"","value":"0x00"},{"kind":"number","nativeSrc":"4882:4:25","nodeType":"YulLiteral","src":"4882:4:25","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"4801:10:25","nodeType":"YulIdentifier","src":"4801:10:25"},"nativeSrc":"4801:86:25","nodeType":"YulFunctionCall","src":"4801:86:25"},"variableNames":[{"name":"success","nativeSrc":"4790:7:25","nodeType":"YulIdentifier","src":"4790:7:25"}]},{"nativeSrc":"4900:30:25","nodeType":"YulAssignment","src":"4900:30:25","value":{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"4914:14:25","nodeType":"YulIdentifier","src":"4914:14:25"},"nativeSrc":"4914:16:25","nodeType":"YulFunctionCall","src":"4914:16:25"},"variableNames":[{"name":"returnSize","nativeSrc":"4900:10:25","nodeType":"YulIdentifier","src":"4900:10:25"}]},{"nativeSrc":"4943:26:25","nodeType":"YulAssignment","src":"4943:26:25","value":{"arguments":[{"kind":"number","nativeSrc":"4964:4:25","nodeType":"YulLiteral","src":"4964:4:25","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"4958:5:25","nodeType":"YulIdentifier","src":"4958:5:25"},"nativeSrc":"4958:11:25","nodeType":"YulFunctionCall","src":"4958:11:25"},"variableNames":[{"name":"returnValue","nativeSrc":"4943:11:25","nodeType":"YulIdentifier","src":"4943:11:25"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3723,"isOffset":false,"isSlot":false,"src":"4819:7:25","valueSize":1},{"declaration":3731,"isOffset":false,"isSlot":false,"src":"4832:13:25","valueSize":1},{"declaration":3731,"isOffset":false,"isSlot":false,"src":"4860:13:25","valueSize":1},{"declaration":3744,"isOffset":false,"isSlot":false,"src":"4900:10:25","valueSize":1},{"declaration":3747,"isOffset":false,"isSlot":false,"src":"4943:11:25","valueSize":1},{"declaration":3741,"isOffset":false,"isSlot":false,"src":"4790:7:25","valueSize":1}],"flags":["memory-safe"],"id":3749,"nodeType":"InlineAssembly","src":"4751:228:25"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3750,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3741,"src":"4996:7:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3751,"name":"returnSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3744,"src":"5007:10:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30783230","id":3752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5021:4:25","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"5007:18:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4996:29:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3755,"name":"returnValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3747,"src":"5029:11:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5043:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5029:15:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4996:48:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3729,"id":3759,"nodeType":"Return","src":"4989:55:25"}]},"documentation":{"id":3721,"nodeType":"StructuredDocumentation","src":"3579:819:25","text":" @notice Query if a contract implements an interface, does not check ERC-165 support\n @param account The address of the contract to query for support of an interface\n @param interfaceId The interface identifier, as specified in ERC-165\n @return true if the contract at account indicates support of the interface with\n identifier interfaceId, false otherwise\n @dev Assumes that account contains a contract that supports ERC-165, otherwise\n the behavior of this method is undefined. This precondition can be checked\n with {supportsERC165}.\n Some precompiled contracts will falsely indicate support for a given interface, so caution\n should be exercised when using this function.\n Interface identification is specified in ERC-165."},"implemented":true,"kind":"function","modifiers":[],"name":"supportsERC165InterfaceUnchecked","nameLocation":"4412:32:25","parameters":{"id":3726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3723,"mutability":"mutable","name":"account","nameLocation":"4453:7:25","nodeType":"VariableDeclaration","scope":3761,"src":"4445:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3722,"name":"address","nodeType":"ElementaryTypeName","src":"4445:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3725,"mutability":"mutable","name":"interfaceId","nameLocation":"4469:11:25","nodeType":"VariableDeclaration","scope":3761,"src":"4462:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3724,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4462:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"4444:37:25"},"returnParameters":{"id":3729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3728,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3761,"src":"4505:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3727,"name":"bool","nodeType":"ElementaryTypeName","src":"4505:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4504:6:25"},"scope":3762,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"ERC165Checker","contractDependencies":[],"contractKind":"library","documentation":{"id":3572,"nodeType":"StructuredDocumentation","src":"187:277:25","text":" @dev Library used to query support of an interface declared via {IERC165}.\n Note that these functions return the actual result of the query: they do not\n `revert` if an interface is not supported. It is up to the caller to decide\n what to do in these cases."},"fullyImplemented":true,"linearizedBaseContracts":[3762],"name":"ERC165Checker","nameLocation":"473:13:25","scope":3763,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"id":26,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","id":3775,"exportedSymbols":{"IERC165":[3774]},"nodeType":"SourceUnit","src":"115:756:26","nodes":[{"id":3764,"nodeType":"PragmaDirective","src":"115:25:26","nodes":[],"literals":["solidity",">=","0.4",".16"]},{"id":3774,"nodeType":"ContractDefinition","src":"423:447:26","nodes":[{"id":3773,"nodeType":"FunctionDefinition","src":"792:76:26","nodes":[],"documentation":{"id":3766,"nodeType":"StructuredDocumentation","src":"447:340:26","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"801:17:26","parameters":{"id":3769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3768,"mutability":"mutable","name":"interfaceId","nameLocation":"826:11:26","nodeType":"VariableDeclaration","scope":3773,"src":"819:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3767,"name":"bytes4","nodeType":"ElementaryTypeName","src":"819:6:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"818:20:26"},"returnParameters":{"id":3772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3773,"src":"862:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3770,"name":"bool","nodeType":"ElementaryTypeName","src":"862:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"861:6:26"},"scope":3774,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":3765,"nodeType":"StructuredDocumentation","src":"142:280:26","text":" @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[3774],"name":"IERC165","nameLocation":"433:7:26","scope":3775,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"id":27,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","id":5396,"exportedSymbols":{"Math":[5395],"Panic":[3419],"SafeCast":[7160]},"nodeType":"SourceUnit","src":"103:32042:27","nodes":[{"id":3776,"nodeType":"PragmaDirective","src":"103:24:27","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":3778,"nodeType":"ImportDirective","src":"129:35:27","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Panic.sol","file":"../Panic.sol","nameLocation":"-1:-1:-1","scope":5396,"sourceUnit":3420,"symbolAliases":[{"foreign":{"id":3777,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3419,"src":"137:5:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":3780,"nodeType":"ImportDirective","src":"165:40:27","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol","file":"./SafeCast.sol","nameLocation":"-1:-1:-1","scope":5396,"sourceUnit":7161,"symbolAliases":[{"foreign":{"id":3779,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"173:8:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":5395,"nodeType":"ContractDefinition","src":"281:31863:27","nodes":[{"id":3786,"nodeType":"EnumDefinition","src":"300:169:27","nodes":[],"canonicalName":"Math.Rounding","members":[{"id":3782,"name":"Floor","nameLocation":"324:5:27","nodeType":"EnumValue","src":"324:5:27"},{"id":3783,"name":"Ceil","nameLocation":"367:4:27","nodeType":"EnumValue","src":"367:4:27"},{"id":3784,"name":"Trunc","nameLocation":"409:5:27","nodeType":"EnumValue","src":"409:5:27"},{"id":3785,"name":"Expand","nameLocation":"439:6:27","nodeType":"EnumValue","src":"439:6:27"}],"name":"Rounding","nameLocation":"305:8:27"},{"id":3800,"nodeType":"FunctionDefinition","src":"643:200:27","nodes":[],"body":{"id":3799,"nodeType":"Block","src":"731:112:27","nodes":[],"statements":[{"AST":{"nativeSrc":"766:71:27","nodeType":"YulBlock","src":"766:71:27","statements":[{"nativeSrc":"780:16:27","nodeType":"YulAssignment","src":"780:16:27","value":{"arguments":[{"name":"a","nativeSrc":"791:1:27","nodeType":"YulIdentifier","src":"791:1:27"},{"name":"b","nativeSrc":"794:1:27","nodeType":"YulIdentifier","src":"794:1:27"}],"functionName":{"name":"add","nativeSrc":"787:3:27","nodeType":"YulIdentifier","src":"787:3:27"},"nativeSrc":"787:9:27","nodeType":"YulFunctionCall","src":"787:9:27"},"variableNames":[{"name":"low","nativeSrc":"780:3:27","nodeType":"YulIdentifier","src":"780:3:27"}]},{"nativeSrc":"809:18:27","nodeType":"YulAssignment","src":"809:18:27","value":{"arguments":[{"name":"low","nativeSrc":"820:3:27","nodeType":"YulIdentifier","src":"820:3:27"},{"name":"a","nativeSrc":"825:1:27","nodeType":"YulIdentifier","src":"825:1:27"}],"functionName":{"name":"lt","nativeSrc":"817:2:27","nodeType":"YulIdentifier","src":"817:2:27"},"nativeSrc":"817:10:27","nodeType":"YulFunctionCall","src":"817:10:27"},"variableNames":[{"name":"high","nativeSrc":"809:4:27","nodeType":"YulIdentifier","src":"809:4:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3789,"isOffset":false,"isSlot":false,"src":"791:1:27","valueSize":1},{"declaration":3789,"isOffset":false,"isSlot":false,"src":"825:1:27","valueSize":1},{"declaration":3791,"isOffset":false,"isSlot":false,"src":"794:1:27","valueSize":1},{"declaration":3794,"isOffset":false,"isSlot":false,"src":"809:4:27","valueSize":1},{"declaration":3796,"isOffset":false,"isSlot":false,"src":"780:3:27","valueSize":1},{"declaration":3796,"isOffset":false,"isSlot":false,"src":"820:3:27","valueSize":1}],"flags":["memory-safe"],"id":3798,"nodeType":"InlineAssembly","src":"741:96:27"}]},"documentation":{"id":3787,"nodeType":"StructuredDocumentation","src":"475:163:27","text":" @dev Return the 512-bit addition of two uint256.\n The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low."},"implemented":true,"kind":"function","modifiers":[],"name":"add512","nameLocation":"652:6:27","parameters":{"id":3792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3789,"mutability":"mutable","name":"a","nameLocation":"667:1:27","nodeType":"VariableDeclaration","scope":3800,"src":"659:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3788,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3791,"mutability":"mutable","name":"b","nameLocation":"678:1:27","nodeType":"VariableDeclaration","scope":3800,"src":"670:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3790,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"658:22:27"},"returnParameters":{"id":3797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3794,"mutability":"mutable","name":"high","nameLocation":"712:4:27","nodeType":"VariableDeclaration","scope":3800,"src":"704:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3793,"name":"uint256","nodeType":"ElementaryTypeName","src":"704:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3796,"mutability":"mutable","name":"low","nameLocation":"726:3:27","nodeType":"VariableDeclaration","scope":3800,"src":"718:11:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3795,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"703:27:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3814,"nodeType":"FunctionDefinition","src":"1027:550:27","nodes":[],"body":{"id":3813,"nodeType":"Block","src":"1115:462:27","nodes":[],"statements":[{"AST":{"nativeSrc":"1437:134:27","nodeType":"YulBlock","src":"1437:134:27","statements":[{"nativeSrc":"1451:30:27","nodeType":"YulVariableDeclaration","src":"1451:30:27","value":{"arguments":[{"name":"a","nativeSrc":"1468:1:27","nodeType":"YulIdentifier","src":"1468:1:27"},{"name":"b","nativeSrc":"1471:1:27","nodeType":"YulIdentifier","src":"1471:1:27"},{"arguments":[{"kind":"number","nativeSrc":"1478:1:27","nodeType":"YulLiteral","src":"1478:1:27","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"1474:3:27","nodeType":"YulIdentifier","src":"1474:3:27"},"nativeSrc":"1474:6:27","nodeType":"YulFunctionCall","src":"1474:6:27"}],"functionName":{"name":"mulmod","nativeSrc":"1461:6:27","nodeType":"YulIdentifier","src":"1461:6:27"},"nativeSrc":"1461:20:27","nodeType":"YulFunctionCall","src":"1461:20:27"},"variables":[{"name":"mm","nativeSrc":"1455:2:27","nodeType":"YulTypedName","src":"1455:2:27","type":""}]},{"nativeSrc":"1494:16:27","nodeType":"YulAssignment","src":"1494:16:27","value":{"arguments":[{"name":"a","nativeSrc":"1505:1:27","nodeType":"YulIdentifier","src":"1505:1:27"},{"name":"b","nativeSrc":"1508:1:27","nodeType":"YulIdentifier","src":"1508:1:27"}],"functionName":{"name":"mul","nativeSrc":"1501:3:27","nodeType":"YulIdentifier","src":"1501:3:27"},"nativeSrc":"1501:9:27","nodeType":"YulFunctionCall","src":"1501:9:27"},"variableNames":[{"name":"low","nativeSrc":"1494:3:27","nodeType":"YulIdentifier","src":"1494:3:27"}]},{"nativeSrc":"1523:38:27","nodeType":"YulAssignment","src":"1523:38:27","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"1539:2:27","nodeType":"YulIdentifier","src":"1539:2:27"},{"name":"low","nativeSrc":"1543:3:27","nodeType":"YulIdentifier","src":"1543:3:27"}],"functionName":{"name":"sub","nativeSrc":"1535:3:27","nodeType":"YulIdentifier","src":"1535:3:27"},"nativeSrc":"1535:12:27","nodeType":"YulFunctionCall","src":"1535:12:27"},{"arguments":[{"name":"mm","nativeSrc":"1552:2:27","nodeType":"YulIdentifier","src":"1552:2:27"},{"name":"low","nativeSrc":"1556:3:27","nodeType":"YulIdentifier","src":"1556:3:27"}],"functionName":{"name":"lt","nativeSrc":"1549:2:27","nodeType":"YulIdentifier","src":"1549:2:27"},"nativeSrc":"1549:11:27","nodeType":"YulFunctionCall","src":"1549:11:27"}],"functionName":{"name":"sub","nativeSrc":"1531:3:27","nodeType":"YulIdentifier","src":"1531:3:27"},"nativeSrc":"1531:30:27","nodeType":"YulFunctionCall","src":"1531:30:27"},"variableNames":[{"name":"high","nativeSrc":"1523:4:27","nodeType":"YulIdentifier","src":"1523:4:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3803,"isOffset":false,"isSlot":false,"src":"1468:1:27","valueSize":1},{"declaration":3803,"isOffset":false,"isSlot":false,"src":"1505:1:27","valueSize":1},{"declaration":3805,"isOffset":false,"isSlot":false,"src":"1471:1:27","valueSize":1},{"declaration":3805,"isOffset":false,"isSlot":false,"src":"1508:1:27","valueSize":1},{"declaration":3808,"isOffset":false,"isSlot":false,"src":"1523:4:27","valueSize":1},{"declaration":3810,"isOffset":false,"isSlot":false,"src":"1494:3:27","valueSize":1},{"declaration":3810,"isOffset":false,"isSlot":false,"src":"1543:3:27","valueSize":1},{"declaration":3810,"isOffset":false,"isSlot":false,"src":"1556:3:27","valueSize":1}],"flags":["memory-safe"],"id":3812,"nodeType":"InlineAssembly","src":"1412:159:27"}]},"documentation":{"id":3801,"nodeType":"StructuredDocumentation","src":"849:173:27","text":" @dev Return the 512-bit multiplication of two uint256.\n The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low."},"implemented":true,"kind":"function","modifiers":[],"name":"mul512","nameLocation":"1036:6:27","parameters":{"id":3806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3803,"mutability":"mutable","name":"a","nameLocation":"1051:1:27","nodeType":"VariableDeclaration","scope":3814,"src":"1043:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3802,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3805,"mutability":"mutable","name":"b","nameLocation":"1062:1:27","nodeType":"VariableDeclaration","scope":3814,"src":"1054:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3804,"name":"uint256","nodeType":"ElementaryTypeName","src":"1054:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1042:22:27"},"returnParameters":{"id":3811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3808,"mutability":"mutable","name":"high","nameLocation":"1096:4:27","nodeType":"VariableDeclaration","scope":3814,"src":"1088:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3807,"name":"uint256","nodeType":"ElementaryTypeName","src":"1088:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3810,"mutability":"mutable","name":"low","nameLocation":"1110:3:27","nodeType":"VariableDeclaration","scope":3814,"src":"1102:11:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3809,"name":"uint256","nodeType":"ElementaryTypeName","src":"1102:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1087:27:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3849,"nodeType":"FunctionDefinition","src":"1693:240:27","nodes":[],"body":{"id":3848,"nodeType":"Block","src":"1784:149:27","nodes":[],"statements":[{"id":3847,"nodeType":"UncheckedBlock","src":"1794:133:27","statements":[{"assignments":[3827],"declarations":[{"constant":false,"id":3827,"mutability":"mutable","name":"c","nameLocation":"1826:1:27","nodeType":"VariableDeclaration","scope":3847,"src":"1818:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3826,"name":"uint256","nodeType":"ElementaryTypeName","src":"1818:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3831,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3828,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3817,"src":"1830:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3829,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3819,"src":"1834:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1830:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1818:17:27"},{"expression":{"id":3836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3832,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3822,"src":"1849:7:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3833,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3827,"src":"1859:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3834,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3817,"src":"1864:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1859:6:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1849:16:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3837,"nodeType":"ExpressionStatement","src":"1849:16:27"},{"expression":{"id":3845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3824,"src":"1879:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3839,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3827,"src":"1888:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3842,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3822,"src":"1908:7:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3840,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"1892:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":3841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1901:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"1892:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1892:24:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1888:28:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1879:37:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3846,"nodeType":"ExpressionStatement","src":"1879:37:27"}]}]},"documentation":{"id":3815,"nodeType":"StructuredDocumentation","src":"1583:105:27","text":" @dev Returns the addition of two unsigned integers, with a success flag (no overflow)."},"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"1702:6:27","parameters":{"id":3820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3817,"mutability":"mutable","name":"a","nameLocation":"1717:1:27","nodeType":"VariableDeclaration","scope":3849,"src":"1709:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3816,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3819,"mutability":"mutable","name":"b","nameLocation":"1728:1:27","nodeType":"VariableDeclaration","scope":3849,"src":"1720:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3818,"name":"uint256","nodeType":"ElementaryTypeName","src":"1720:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1708:22:27"},"returnParameters":{"id":3825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3822,"mutability":"mutable","name":"success","nameLocation":"1759:7:27","nodeType":"VariableDeclaration","scope":3849,"src":"1754:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3821,"name":"bool","nodeType":"ElementaryTypeName","src":"1754:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3824,"mutability":"mutable","name":"result","nameLocation":"1776:6:27","nodeType":"VariableDeclaration","scope":3849,"src":"1768:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3823,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1753:30:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3884,"nodeType":"FunctionDefinition","src":"2052:240:27","nodes":[],"body":{"id":3883,"nodeType":"Block","src":"2143:149:27","nodes":[],"statements":[{"id":3882,"nodeType":"UncheckedBlock","src":"2153:133:27","statements":[{"assignments":[3862],"declarations":[{"constant":false,"id":3862,"mutability":"mutable","name":"c","nameLocation":"2185:1:27","nodeType":"VariableDeclaration","scope":3882,"src":"2177:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3861,"name":"uint256","nodeType":"ElementaryTypeName","src":"2177:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3866,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3863,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3852,"src":"2189:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3864,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3854,"src":"2193:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2189:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2177:17:27"},{"expression":{"id":3871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3867,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3857,"src":"2208:7:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3868,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3862,"src":"2218:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3869,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3852,"src":"2223:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2218:6:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2208:16:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3872,"nodeType":"ExpressionStatement","src":"2208:16:27"},{"expression":{"id":3880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3873,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3859,"src":"2238:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3874,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3862,"src":"2247:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3877,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3857,"src":"2267:7:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3875,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"2251:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":3876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2260:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"2251:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2251:24:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2247:28:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2238:37:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3881,"nodeType":"ExpressionStatement","src":"2238:37:27"}]}]},"documentation":{"id":3850,"nodeType":"StructuredDocumentation","src":"1939:108:27","text":" @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow)."},"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"2061:6:27","parameters":{"id":3855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3852,"mutability":"mutable","name":"a","nameLocation":"2076:1:27","nodeType":"VariableDeclaration","scope":3884,"src":"2068:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3851,"name":"uint256","nodeType":"ElementaryTypeName","src":"2068:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3854,"mutability":"mutable","name":"b","nameLocation":"2087:1:27","nodeType":"VariableDeclaration","scope":3884,"src":"2079:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3853,"name":"uint256","nodeType":"ElementaryTypeName","src":"2079:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2067:22:27"},"returnParameters":{"id":3860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3857,"mutability":"mutable","name":"success","nameLocation":"2118:7:27","nodeType":"VariableDeclaration","scope":3884,"src":"2113:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3856,"name":"bool","nodeType":"ElementaryTypeName","src":"2113:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3859,"mutability":"mutable","name":"result","nameLocation":"2135:6:27","nodeType":"VariableDeclaration","scope":3884,"src":"2127:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3858,"name":"uint256","nodeType":"ElementaryTypeName","src":"2127:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2112:30:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3914,"nodeType":"FunctionDefinition","src":"2414:482:27","nodes":[],"body":{"id":3913,"nodeType":"Block","src":"2505:391:27","nodes":[],"statements":[{"id":3912,"nodeType":"UncheckedBlock","src":"2515:375:27","statements":[{"assignments":[3897],"declarations":[{"constant":false,"id":3897,"mutability":"mutable","name":"c","nameLocation":"2547:1:27","nodeType":"VariableDeclaration","scope":3912,"src":"2539:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3896,"name":"uint256","nodeType":"ElementaryTypeName","src":"2539:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3901,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3898,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3887,"src":"2551:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3899,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"2555:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2551:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2539:17:27"},{"AST":{"nativeSrc":"2595:188:27","nodeType":"YulBlock","src":"2595:188:27","statements":[{"nativeSrc":"2727:42:27","nodeType":"YulAssignment","src":"2727:42:27","value":{"arguments":[{"arguments":[{"arguments":[{"name":"c","nativeSrc":"2748:1:27","nodeType":"YulIdentifier","src":"2748:1:27"},{"name":"a","nativeSrc":"2751:1:27","nodeType":"YulIdentifier","src":"2751:1:27"}],"functionName":{"name":"div","nativeSrc":"2744:3:27","nodeType":"YulIdentifier","src":"2744:3:27"},"nativeSrc":"2744:9:27","nodeType":"YulFunctionCall","src":"2744:9:27"},{"name":"b","nativeSrc":"2755:1:27","nodeType":"YulIdentifier","src":"2755:1:27"}],"functionName":{"name":"eq","nativeSrc":"2741:2:27","nodeType":"YulIdentifier","src":"2741:2:27"},"nativeSrc":"2741:16:27","nodeType":"YulFunctionCall","src":"2741:16:27"},{"arguments":[{"name":"a","nativeSrc":"2766:1:27","nodeType":"YulIdentifier","src":"2766:1:27"}],"functionName":{"name":"iszero","nativeSrc":"2759:6:27","nodeType":"YulIdentifier","src":"2759:6:27"},"nativeSrc":"2759:9:27","nodeType":"YulFunctionCall","src":"2759:9:27"}],"functionName":{"name":"or","nativeSrc":"2738:2:27","nodeType":"YulIdentifier","src":"2738:2:27"},"nativeSrc":"2738:31:27","nodeType":"YulFunctionCall","src":"2738:31:27"},"variableNames":[{"name":"success","nativeSrc":"2727:7:27","nodeType":"YulIdentifier","src":"2727:7:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3887,"isOffset":false,"isSlot":false,"src":"2751:1:27","valueSize":1},{"declaration":3887,"isOffset":false,"isSlot":false,"src":"2766:1:27","valueSize":1},{"declaration":3889,"isOffset":false,"isSlot":false,"src":"2755:1:27","valueSize":1},{"declaration":3897,"isOffset":false,"isSlot":false,"src":"2748:1:27","valueSize":1},{"declaration":3892,"isOffset":false,"isSlot":false,"src":"2727:7:27","valueSize":1}],"flags":["memory-safe"],"id":3902,"nodeType":"InlineAssembly","src":"2570:213:27"},{"expression":{"id":3910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3903,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3894,"src":"2842:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3904,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3897,"src":"2851:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3907,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3892,"src":"2871:7:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3905,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"2855:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":3906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2864:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"2855:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:24:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2851:28:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2842:37:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3911,"nodeType":"ExpressionStatement","src":"2842:37:27"}]}]},"documentation":{"id":3885,"nodeType":"StructuredDocumentation","src":"2298:111:27","text":" @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow)."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"2423:6:27","parameters":{"id":3890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3887,"mutability":"mutable","name":"a","nameLocation":"2438:1:27","nodeType":"VariableDeclaration","scope":3914,"src":"2430:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3886,"name":"uint256","nodeType":"ElementaryTypeName","src":"2430:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3889,"mutability":"mutable","name":"b","nameLocation":"2449:1:27","nodeType":"VariableDeclaration","scope":3914,"src":"2441:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3888,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2429:22:27"},"returnParameters":{"id":3895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3892,"mutability":"mutable","name":"success","nameLocation":"2480:7:27","nodeType":"VariableDeclaration","scope":3914,"src":"2475:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3891,"name":"bool","nodeType":"ElementaryTypeName","src":"2475:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3894,"mutability":"mutable","name":"result","nameLocation":"2497:6:27","nodeType":"VariableDeclaration","scope":3914,"src":"2489:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3893,"name":"uint256","nodeType":"ElementaryTypeName","src":"2489:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2474:30:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3935,"nodeType":"FunctionDefinition","src":"3020:322:27","nodes":[],"body":{"id":3934,"nodeType":"Block","src":"3111:231:27","nodes":[],"statements":[{"id":3933,"nodeType":"UncheckedBlock","src":"3121:215:27","statements":[{"expression":{"id":3930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3926,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3922,"src":"3145:7:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3927,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3919,"src":"3155:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3159:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3155:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3145:15:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3931,"nodeType":"ExpressionStatement","src":"3145:15:27"},{"AST":{"nativeSrc":"3199:127:27","nodeType":"YulBlock","src":"3199:127:27","statements":[{"nativeSrc":"3293:19:27","nodeType":"YulAssignment","src":"3293:19:27","value":{"arguments":[{"name":"a","nativeSrc":"3307:1:27","nodeType":"YulIdentifier","src":"3307:1:27"},{"name":"b","nativeSrc":"3310:1:27","nodeType":"YulIdentifier","src":"3310:1:27"}],"functionName":{"name":"div","nativeSrc":"3303:3:27","nodeType":"YulIdentifier","src":"3303:3:27"},"nativeSrc":"3303:9:27","nodeType":"YulFunctionCall","src":"3303:9:27"},"variableNames":[{"name":"result","nativeSrc":"3293:6:27","nodeType":"YulIdentifier","src":"3293:6:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3917,"isOffset":false,"isSlot":false,"src":"3307:1:27","valueSize":1},{"declaration":3919,"isOffset":false,"isSlot":false,"src":"3310:1:27","valueSize":1},{"declaration":3924,"isOffset":false,"isSlot":false,"src":"3293:6:27","valueSize":1}],"flags":["memory-safe"],"id":3932,"nodeType":"InlineAssembly","src":"3174:152:27"}]}]},"documentation":{"id":3915,"nodeType":"StructuredDocumentation","src":"2902:113:27","text":" @dev Returns the division of two unsigned integers, with a success flag (no division by zero)."},"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"3029:6:27","parameters":{"id":3920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3917,"mutability":"mutable","name":"a","nameLocation":"3044:1:27","nodeType":"VariableDeclaration","scope":3935,"src":"3036:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3916,"name":"uint256","nodeType":"ElementaryTypeName","src":"3036:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3919,"mutability":"mutable","name":"b","nameLocation":"3055:1:27","nodeType":"VariableDeclaration","scope":3935,"src":"3047:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3918,"name":"uint256","nodeType":"ElementaryTypeName","src":"3047:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3035:22:27"},"returnParameters":{"id":3925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3922,"mutability":"mutable","name":"success","nameLocation":"3086:7:27","nodeType":"VariableDeclaration","scope":3935,"src":"3081:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3921,"name":"bool","nodeType":"ElementaryTypeName","src":"3081:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3924,"mutability":"mutable","name":"result","nameLocation":"3103:6:27","nodeType":"VariableDeclaration","scope":3935,"src":"3095:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3923,"name":"uint256","nodeType":"ElementaryTypeName","src":"3095:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3080:30:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3956,"nodeType":"FunctionDefinition","src":"3476:322:27","nodes":[],"body":{"id":3955,"nodeType":"Block","src":"3567:231:27","nodes":[],"statements":[{"id":3954,"nodeType":"UncheckedBlock","src":"3577:215:27","statements":[{"expression":{"id":3951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3947,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3943,"src":"3601:7:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3948,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3940,"src":"3611:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3615:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3611:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3601:15:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3952,"nodeType":"ExpressionStatement","src":"3601:15:27"},{"AST":{"nativeSrc":"3655:127:27","nodeType":"YulBlock","src":"3655:127:27","statements":[{"nativeSrc":"3749:19:27","nodeType":"YulAssignment","src":"3749:19:27","value":{"arguments":[{"name":"a","nativeSrc":"3763:1:27","nodeType":"YulIdentifier","src":"3763:1:27"},{"name":"b","nativeSrc":"3766:1:27","nodeType":"YulIdentifier","src":"3766:1:27"}],"functionName":{"name":"mod","nativeSrc":"3759:3:27","nodeType":"YulIdentifier","src":"3759:3:27"},"nativeSrc":"3759:9:27","nodeType":"YulFunctionCall","src":"3759:9:27"},"variableNames":[{"name":"result","nativeSrc":"3749:6:27","nodeType":"YulIdentifier","src":"3749:6:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3938,"isOffset":false,"isSlot":false,"src":"3763:1:27","valueSize":1},{"declaration":3940,"isOffset":false,"isSlot":false,"src":"3766:1:27","valueSize":1},{"declaration":3945,"isOffset":false,"isSlot":false,"src":"3749:6:27","valueSize":1}],"flags":["memory-safe"],"id":3953,"nodeType":"InlineAssembly","src":"3630:152:27"}]}]},"documentation":{"id":3936,"nodeType":"StructuredDocumentation","src":"3348:123:27","text":" @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero)."},"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"3485:6:27","parameters":{"id":3941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3938,"mutability":"mutable","name":"a","nameLocation":"3500:1:27","nodeType":"VariableDeclaration","scope":3956,"src":"3492:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3937,"name":"uint256","nodeType":"ElementaryTypeName","src":"3492:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3940,"mutability":"mutable","name":"b","nameLocation":"3511:1:27","nodeType":"VariableDeclaration","scope":3956,"src":"3503:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3939,"name":"uint256","nodeType":"ElementaryTypeName","src":"3503:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3491:22:27"},"returnParameters":{"id":3946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3943,"mutability":"mutable","name":"success","nameLocation":"3542:7:27","nodeType":"VariableDeclaration","scope":3956,"src":"3537:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3942,"name":"bool","nodeType":"ElementaryTypeName","src":"3537:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3945,"mutability":"mutable","name":"result","nameLocation":"3559:6:27","nodeType":"VariableDeclaration","scope":3956,"src":"3551:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3944,"name":"uint256","nodeType":"ElementaryTypeName","src":"3551:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3536:30:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3986,"nodeType":"FunctionDefinition","src":"3912:199:27","nodes":[],"body":{"id":3985,"nodeType":"Block","src":"3989:122:27","nodes":[],"statements":[{"assignments":[3967,3969],"declarations":[{"constant":false,"id":3967,"mutability":"mutable","name":"success","nameLocation":"4005:7:27","nodeType":"VariableDeclaration","scope":3985,"src":"4000:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3966,"name":"bool","nodeType":"ElementaryTypeName","src":"4000:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3969,"mutability":"mutable","name":"result","nameLocation":"4022:6:27","nodeType":"VariableDeclaration","scope":3985,"src":"4014:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3968,"name":"uint256","nodeType":"ElementaryTypeName","src":"4014:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3974,"initialValue":{"arguments":[{"id":3971,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3959,"src":"4039:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3972,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3961,"src":"4042:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3970,"name":"tryAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3849,"src":"4032:6:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":3973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4032:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3999:45:27"},{"expression":{"arguments":[{"id":3976,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3967,"src":"4069:7:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3977,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3969,"src":"4078:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":3980,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4091:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3979,"name":"uint256","nodeType":"ElementaryTypeName","src":"4091:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3978,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4086:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4086:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4100:3:27","memberName":"max","nodeType":"MemberAccess","src":"4086:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3975,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4063,"src":"4061:7:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4061:43:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3965,"id":3984,"nodeType":"Return","src":"4054:50:27"}]},"documentation":{"id":3957,"nodeType":"StructuredDocumentation","src":"3804:103:27","text":" @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing."},"implemented":true,"kind":"function","modifiers":[],"name":"saturatingAdd","nameLocation":"3921:13:27","parameters":{"id":3962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3959,"mutability":"mutable","name":"a","nameLocation":"3943:1:27","nodeType":"VariableDeclaration","scope":3986,"src":"3935:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3958,"name":"uint256","nodeType":"ElementaryTypeName","src":"3935:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3961,"mutability":"mutable","name":"b","nameLocation":"3954:1:27","nodeType":"VariableDeclaration","scope":3986,"src":"3946:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3960,"name":"uint256","nodeType":"ElementaryTypeName","src":"3946:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3934:22:27"},"returnParameters":{"id":3965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3964,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3986,"src":"3980:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3963,"name":"uint256","nodeType":"ElementaryTypeName","src":"3980:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3979:9:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4006,"nodeType":"FunctionDefinition","src":"4217:150:27","nodes":[],"body":{"id":4005,"nodeType":"Block","src":"4294:73:27","nodes":[],"statements":[{"assignments":[null,3997],"declarations":[null,{"constant":false,"id":3997,"mutability":"mutable","name":"result","nameLocation":"4315:6:27","nodeType":"VariableDeclaration","scope":4005,"src":"4307:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3996,"name":"uint256","nodeType":"ElementaryTypeName","src":"4307:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4002,"initialValue":{"arguments":[{"id":3999,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3989,"src":"4332:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4000,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3991,"src":"4335:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3998,"name":"trySub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3884,"src":"4325:6:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":4001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4325:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4304:33:27"},{"expression":{"id":4003,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3997,"src":"4354:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3995,"id":4004,"nodeType":"Return","src":"4347:13:27"}]},"documentation":{"id":3987,"nodeType":"StructuredDocumentation","src":"4117:95:27","text":" @dev Unsigned saturating subtraction, bounds to zero instead of overflowing."},"implemented":true,"kind":"function","modifiers":[],"name":"saturatingSub","nameLocation":"4226:13:27","parameters":{"id":3992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3989,"mutability":"mutable","name":"a","nameLocation":"4248:1:27","nodeType":"VariableDeclaration","scope":4006,"src":"4240:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3988,"name":"uint256","nodeType":"ElementaryTypeName","src":"4240:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3991,"mutability":"mutable","name":"b","nameLocation":"4259:1:27","nodeType":"VariableDeclaration","scope":4006,"src":"4251:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3990,"name":"uint256","nodeType":"ElementaryTypeName","src":"4251:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4239:22:27"},"returnParameters":{"id":3995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3994,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4006,"src":"4285:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3993,"name":"uint256","nodeType":"ElementaryTypeName","src":"4285:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4284:9:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4036,"nodeType":"FunctionDefinition","src":"4487:199:27","nodes":[],"body":{"id":4035,"nodeType":"Block","src":"4564:122:27","nodes":[],"statements":[{"assignments":[4017,4019],"declarations":[{"constant":false,"id":4017,"mutability":"mutable","name":"success","nameLocation":"4580:7:27","nodeType":"VariableDeclaration","scope":4035,"src":"4575:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4016,"name":"bool","nodeType":"ElementaryTypeName","src":"4575:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4019,"mutability":"mutable","name":"result","nameLocation":"4597:6:27","nodeType":"VariableDeclaration","scope":4035,"src":"4589:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4018,"name":"uint256","nodeType":"ElementaryTypeName","src":"4589:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4024,"initialValue":{"arguments":[{"id":4021,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4009,"src":"4614:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4022,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4011,"src":"4617:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4020,"name":"tryMul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3914,"src":"4607:6:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":4023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4607:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4574:45:27"},{"expression":{"arguments":[{"id":4026,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4017,"src":"4644:7:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":4027,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4019,"src":"4653:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":4030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4666:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4029,"name":"uint256","nodeType":"ElementaryTypeName","src":"4666:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":4028,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4661:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4661:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":4032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4675:3:27","memberName":"max","nodeType":"MemberAccess","src":"4661:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4025,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4063,"src":"4636:7:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":4033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4636:43:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4015,"id":4034,"nodeType":"Return","src":"4629:50:27"}]},"documentation":{"id":4007,"nodeType":"StructuredDocumentation","src":"4373:109:27","text":" @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing."},"implemented":true,"kind":"function","modifiers":[],"name":"saturatingMul","nameLocation":"4496:13:27","parameters":{"id":4012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4009,"mutability":"mutable","name":"a","nameLocation":"4518:1:27","nodeType":"VariableDeclaration","scope":4036,"src":"4510:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4008,"name":"uint256","nodeType":"ElementaryTypeName","src":"4510:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4011,"mutability":"mutable","name":"b","nameLocation":"4529:1:27","nodeType":"VariableDeclaration","scope":4036,"src":"4521:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4010,"name":"uint256","nodeType":"ElementaryTypeName","src":"4521:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4509:22:27"},"returnParameters":{"id":4015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4014,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4036,"src":"4555:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4013,"name":"uint256","nodeType":"ElementaryTypeName","src":"4555:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4554:9:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4063,"nodeType":"FunctionDefinition","src":"5071:294:27","nodes":[],"body":{"id":4062,"nodeType":"Block","src":"5158:207:27","nodes":[],"statements":[{"id":4061,"nodeType":"UncheckedBlock","src":"5168:191:27","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4048,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"5306:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4049,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4041,"src":"5312:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":4050,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"5316:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5312:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4052,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5311:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":4055,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"5337:9:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4053,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"5321:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":4054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5330:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"5321:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5321:26:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5311:36:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4058,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5310:38:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5306:42:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4047,"id":4060,"nodeType":"Return","src":"5299:49:27"}]}]},"documentation":{"id":4037,"nodeType":"StructuredDocumentation","src":"4692:374:27","text":" @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n one branch when needed, making this function more expensive."},"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"5080:7:27","parameters":{"id":4044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4039,"mutability":"mutable","name":"condition","nameLocation":"5093:9:27","nodeType":"VariableDeclaration","scope":4063,"src":"5088:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4038,"name":"bool","nodeType":"ElementaryTypeName","src":"5088:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4041,"mutability":"mutable","name":"a","nameLocation":"5112:1:27","nodeType":"VariableDeclaration","scope":4063,"src":"5104:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4040,"name":"uint256","nodeType":"ElementaryTypeName","src":"5104:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4043,"mutability":"mutable","name":"b","nameLocation":"5123:1:27","nodeType":"VariableDeclaration","scope":4063,"src":"5115:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4042,"name":"uint256","nodeType":"ElementaryTypeName","src":"5115:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5087:38:27"},"returnParameters":{"id":4047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4046,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4063,"src":"5149:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4045,"name":"uint256","nodeType":"ElementaryTypeName","src":"5149:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5148:9:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4082,"nodeType":"FunctionDefinition","src":"5435:111:27","nodes":[],"body":{"id":4081,"nodeType":"Block","src":"5502:44:27","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4074,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"5527:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4075,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4068,"src":"5531:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5527:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":4077,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"5534:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4078,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4068,"src":"5537:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4073,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4063,"src":"5519:7:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":4079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5519:20:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4072,"id":4080,"nodeType":"Return","src":"5512:27:27"}]},"documentation":{"id":4064,"nodeType":"StructuredDocumentation","src":"5371:59:27","text":" @dev Returns the largest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"5444:3:27","parameters":{"id":4069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4066,"mutability":"mutable","name":"a","nameLocation":"5456:1:27","nodeType":"VariableDeclaration","scope":4082,"src":"5448:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4065,"name":"uint256","nodeType":"ElementaryTypeName","src":"5448:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4068,"mutability":"mutable","name":"b","nameLocation":"5467:1:27","nodeType":"VariableDeclaration","scope":4082,"src":"5459:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4067,"name":"uint256","nodeType":"ElementaryTypeName","src":"5459:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5447:22:27"},"returnParameters":{"id":4072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4071,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4082,"src":"5493:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4070,"name":"uint256","nodeType":"ElementaryTypeName","src":"5493:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5492:9:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4101,"nodeType":"FunctionDefinition","src":"5617:111:27","nodes":[],"body":{"id":4100,"nodeType":"Block","src":"5684:44:27","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4093,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"5709:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4094,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4087,"src":"5713:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5709:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":4096,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"5716:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4097,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4087,"src":"5719:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4092,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4063,"src":"5701:7:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":4098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5701:20:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4091,"id":4099,"nodeType":"Return","src":"5694:27:27"}]},"documentation":{"id":4083,"nodeType":"StructuredDocumentation","src":"5552:60:27","text":" @dev Returns the smallest of two numbers."},"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"5626:3:27","parameters":{"id":4088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4085,"mutability":"mutable","name":"a","nameLocation":"5638:1:27","nodeType":"VariableDeclaration","scope":4101,"src":"5630:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4084,"name":"uint256","nodeType":"ElementaryTypeName","src":"5630:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4087,"mutability":"mutable","name":"b","nameLocation":"5649:1:27","nodeType":"VariableDeclaration","scope":4101,"src":"5641:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4086,"name":"uint256","nodeType":"ElementaryTypeName","src":"5641:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5629:22:27"},"returnParameters":{"id":4091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4090,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4101,"src":"5675:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4089,"name":"uint256","nodeType":"ElementaryTypeName","src":"5675:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5674:9:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4124,"nodeType":"FunctionDefinition","src":"5841:153:27","nodes":[],"body":{"id":4123,"nodeType":"Block","src":"5912:82:27","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4111,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4104,"src":"5967:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":4112,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4106,"src":"5971:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5967:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4114,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5966:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4115,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4104,"src":"5977:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":4116,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4106,"src":"5981:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5977:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4118,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5976:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":4119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5986:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5976:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5966:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4110,"id":4122,"nodeType":"Return","src":"5959:28:27"}]},"documentation":{"id":4102,"nodeType":"StructuredDocumentation","src":"5734:102:27","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"5850:7:27","parameters":{"id":4107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4104,"mutability":"mutable","name":"a","nameLocation":"5866:1:27","nodeType":"VariableDeclaration","scope":4124,"src":"5858:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4103,"name":"uint256","nodeType":"ElementaryTypeName","src":"5858:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4106,"mutability":"mutable","name":"b","nameLocation":"5877:1:27","nodeType":"VariableDeclaration","scope":4124,"src":"5869:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4105,"name":"uint256","nodeType":"ElementaryTypeName","src":"5869:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5857:22:27"},"returnParameters":{"id":4110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4109,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4124,"src":"5903:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4108,"name":"uint256","nodeType":"ElementaryTypeName","src":"5903:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5902:9:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4165,"nodeType":"FunctionDefinition","src":"6215:704:27","nodes":[],"body":{"id":4164,"nodeType":"Block","src":"6286:633:27","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4134,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4129,"src":"6300:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6305:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6300:6:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4145,"nodeType":"IfStatement","src":"6296:150:27","trueBody":{"id":4144,"nodeType":"Block","src":"6308:138:27","statements":[{"expression":{"arguments":[{"expression":{"id":4140,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3419,"src":"6412:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3419_$","typeString":"type(library Panic)"}},"id":4141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6418:16:27","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":3386,"src":"6412:22:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4137,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3419,"src":"6400:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3419_$","typeString":"type(library Panic)"}},"id":4139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6406:5:27","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":3418,"src":"6400:11:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":4142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6400:35:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4143,"nodeType":"ExpressionStatement","src":"6400:35:27"}]}},{"id":4163,"nodeType":"UncheckedBlock","src":"6829:84:27","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"6876:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6880:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6876:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4146,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"6860:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":4147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6869:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"6860:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6860:22:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4152,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4127,"src":"6887:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6891:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6887:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4155,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6886:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4156,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4129,"src":"6896:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6886:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6900:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6886:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4160,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6885:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6860:42:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4133,"id":4162,"nodeType":"Return","src":"6853:49:27"}]}]},"documentation":{"id":4125,"nodeType":"StructuredDocumentation","src":"6000:210:27","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"6224:7:27","parameters":{"id":4130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4127,"mutability":"mutable","name":"a","nameLocation":"6240:1:27","nodeType":"VariableDeclaration","scope":4165,"src":"6232:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4126,"name":"uint256","nodeType":"ElementaryTypeName","src":"6232:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4129,"mutability":"mutable","name":"b","nameLocation":"6251:1:27","nodeType":"VariableDeclaration","scope":4165,"src":"6243:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4128,"name":"uint256","nodeType":"ElementaryTypeName","src":"6243:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6231:22:27"},"returnParameters":{"id":4133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4132,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4165,"src":"6277:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4131,"name":"uint256","nodeType":"ElementaryTypeName","src":"6277:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6276:9:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4301,"nodeType":"FunctionDefinition","src":"7242:3683:27","nodes":[],"body":{"id":4300,"nodeType":"Block","src":"7340:3585:27","nodes":[],"statements":[{"id":4299,"nodeType":"UncheckedBlock","src":"7350:3569:27","statements":[{"assignments":[4178,4180],"declarations":[{"constant":false,"id":4178,"mutability":"mutable","name":"high","nameLocation":"7383:4:27","nodeType":"VariableDeclaration","scope":4299,"src":"7375:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4177,"name":"uint256","nodeType":"ElementaryTypeName","src":"7375:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4180,"mutability":"mutable","name":"low","nameLocation":"7397:3:27","nodeType":"VariableDeclaration","scope":4299,"src":"7389:11:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4179,"name":"uint256","nodeType":"ElementaryTypeName","src":"7389:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4185,"initialValue":{"arguments":[{"id":4182,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4168,"src":"7411:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4183,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4170,"src":"7414:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4181,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"7404:6:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":4184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7404:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7374:42:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4186,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"7498:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7506:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7498:9:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4194,"nodeType":"IfStatement","src":"7494:365:27","trueBody":{"id":4193,"nodeType":"Block","src":"7509:350:27","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4189,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4180,"src":"7827:3:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4190,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"7833:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7827:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4176,"id":4192,"nodeType":"Return","src":"7820:24:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4195,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"7969:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4196,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"7984:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7969:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4213,"nodeType":"IfStatement","src":"7965:142:27","trueBody":{"id":4212,"nodeType":"Block","src":"7990:117:27","statements":[{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4202,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"8028:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8043:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8028:16:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4205,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3419,"src":"8046:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3419_$","typeString":"type(library Panic)"}},"id":4206,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8052:16:27","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":3386,"src":"8046:22:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4207,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3419,"src":"8070:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3419_$","typeString":"type(library Panic)"}},"id":4208,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8076:14:27","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":3382,"src":"8070:20:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4201,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4063,"src":"8020:7:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":4209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8020:71:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4198,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3419,"src":"8008:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3419_$","typeString":"type(library Panic)"}},"id":4200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8014:5:27","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":3418,"src":"8008:11:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":4210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8008:84:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4211,"nodeType":"ExpressionStatement","src":"8008:84:27"}]}},{"assignments":[4215],"declarations":[{"constant":false,"id":4215,"mutability":"mutable","name":"remainder","nameLocation":"8367:9:27","nodeType":"VariableDeclaration","scope":4299,"src":"8359:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4214,"name":"uint256","nodeType":"ElementaryTypeName","src":"8359:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4216,"nodeType":"VariableDeclarationStatement","src":"8359:17:27"},{"AST":{"nativeSrc":"8415:283:27","nodeType":"YulBlock","src":"8415:283:27","statements":[{"nativeSrc":"8484:38:27","nodeType":"YulAssignment","src":"8484:38:27","value":{"arguments":[{"name":"x","nativeSrc":"8504:1:27","nodeType":"YulIdentifier","src":"8504:1:27"},{"name":"y","nativeSrc":"8507:1:27","nodeType":"YulIdentifier","src":"8507:1:27"},{"name":"denominator","nativeSrc":"8510:11:27","nodeType":"YulIdentifier","src":"8510:11:27"}],"functionName":{"name":"mulmod","nativeSrc":"8497:6:27","nodeType":"YulIdentifier","src":"8497:6:27"},"nativeSrc":"8497:25:27","nodeType":"YulFunctionCall","src":"8497:25:27"},"variableNames":[{"name":"remainder","nativeSrc":"8484:9:27","nodeType":"YulIdentifier","src":"8484:9:27"}]},{"nativeSrc":"8604:37:27","nodeType":"YulAssignment","src":"8604:37:27","value":{"arguments":[{"name":"high","nativeSrc":"8616:4:27","nodeType":"YulIdentifier","src":"8616:4:27"},{"arguments":[{"name":"remainder","nativeSrc":"8625:9:27","nodeType":"YulIdentifier","src":"8625:9:27"},{"name":"low","nativeSrc":"8636:3:27","nodeType":"YulIdentifier","src":"8636:3:27"}],"functionName":{"name":"gt","nativeSrc":"8622:2:27","nodeType":"YulIdentifier","src":"8622:2:27"},"nativeSrc":"8622:18:27","nodeType":"YulFunctionCall","src":"8622:18:27"}],"functionName":{"name":"sub","nativeSrc":"8612:3:27","nodeType":"YulIdentifier","src":"8612:3:27"},"nativeSrc":"8612:29:27","nodeType":"YulFunctionCall","src":"8612:29:27"},"variableNames":[{"name":"high","nativeSrc":"8604:4:27","nodeType":"YulIdentifier","src":"8604:4:27"}]},{"nativeSrc":"8658:26:27","nodeType":"YulAssignment","src":"8658:26:27","value":{"arguments":[{"name":"low","nativeSrc":"8669:3:27","nodeType":"YulIdentifier","src":"8669:3:27"},{"name":"remainder","nativeSrc":"8674:9:27","nodeType":"YulIdentifier","src":"8674:9:27"}],"functionName":{"name":"sub","nativeSrc":"8665:3:27","nodeType":"YulIdentifier","src":"8665:3:27"},"nativeSrc":"8665:19:27","nodeType":"YulFunctionCall","src":"8665:19:27"},"variableNames":[{"name":"low","nativeSrc":"8658:3:27","nodeType":"YulIdentifier","src":"8658:3:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4172,"isOffset":false,"isSlot":false,"src":"8510:11:27","valueSize":1},{"declaration":4178,"isOffset":false,"isSlot":false,"src":"8604:4:27","valueSize":1},{"declaration":4178,"isOffset":false,"isSlot":false,"src":"8616:4:27","valueSize":1},{"declaration":4180,"isOffset":false,"isSlot":false,"src":"8636:3:27","valueSize":1},{"declaration":4180,"isOffset":false,"isSlot":false,"src":"8658:3:27","valueSize":1},{"declaration":4180,"isOffset":false,"isSlot":false,"src":"8669:3:27","valueSize":1},{"declaration":4215,"isOffset":false,"isSlot":false,"src":"8484:9:27","valueSize":1},{"declaration":4215,"isOffset":false,"isSlot":false,"src":"8625:9:27","valueSize":1},{"declaration":4215,"isOffset":false,"isSlot":false,"src":"8674:9:27","valueSize":1},{"declaration":4168,"isOffset":false,"isSlot":false,"src":"8504:1:27","valueSize":1},{"declaration":4170,"isOffset":false,"isSlot":false,"src":"8507:1:27","valueSize":1}],"flags":["memory-safe"],"id":4217,"nodeType":"InlineAssembly","src":"8390:308:27"},{"assignments":[4219],"declarations":[{"constant":false,"id":4219,"mutability":"mutable","name":"twos","nameLocation":"8910:4:27","nodeType":"VariableDeclaration","scope":4299,"src":"8902:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4218,"name":"uint256","nodeType":"ElementaryTypeName","src":"8902:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4226,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4220,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"8917:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":4221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8932:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4222,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"8936:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8932:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4224,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8931:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8917:31:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8902:46:27"},{"AST":{"nativeSrc":"8987:359:27","nodeType":"YulBlock","src":"8987:359:27","statements":[{"nativeSrc":"9052:37:27","nodeType":"YulAssignment","src":"9052:37:27","value":{"arguments":[{"name":"denominator","nativeSrc":"9071:11:27","nodeType":"YulIdentifier","src":"9071:11:27"},{"name":"twos","nativeSrc":"9084:4:27","nodeType":"YulIdentifier","src":"9084:4:27"}],"functionName":{"name":"div","nativeSrc":"9067:3:27","nodeType":"YulIdentifier","src":"9067:3:27"},"nativeSrc":"9067:22:27","nodeType":"YulFunctionCall","src":"9067:22:27"},"variableNames":[{"name":"denominator","nativeSrc":"9052:11:27","nodeType":"YulIdentifier","src":"9052:11:27"}]},{"nativeSrc":"9153:21:27","nodeType":"YulAssignment","src":"9153:21:27","value":{"arguments":[{"name":"low","nativeSrc":"9164:3:27","nodeType":"YulIdentifier","src":"9164:3:27"},{"name":"twos","nativeSrc":"9169:4:27","nodeType":"YulIdentifier","src":"9169:4:27"}],"functionName":{"name":"div","nativeSrc":"9160:3:27","nodeType":"YulIdentifier","src":"9160:3:27"},"nativeSrc":"9160:14:27","nodeType":"YulFunctionCall","src":"9160:14:27"},"variableNames":[{"name":"low","nativeSrc":"9153:3:27","nodeType":"YulIdentifier","src":"9153:3:27"}]},{"nativeSrc":"9293:39:27","nodeType":"YulAssignment","src":"9293:39:27","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9313:1:27","nodeType":"YulLiteral","src":"9313:1:27","type":"","value":"0"},{"name":"twos","nativeSrc":"9316:4:27","nodeType":"YulIdentifier","src":"9316:4:27"}],"functionName":{"name":"sub","nativeSrc":"9309:3:27","nodeType":"YulIdentifier","src":"9309:3:27"},"nativeSrc":"9309:12:27","nodeType":"YulFunctionCall","src":"9309:12:27"},{"name":"twos","nativeSrc":"9323:4:27","nodeType":"YulIdentifier","src":"9323:4:27"}],"functionName":{"name":"div","nativeSrc":"9305:3:27","nodeType":"YulIdentifier","src":"9305:3:27"},"nativeSrc":"9305:23:27","nodeType":"YulFunctionCall","src":"9305:23:27"},{"kind":"number","nativeSrc":"9330:1:27","nodeType":"YulLiteral","src":"9330:1:27","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9301:3:27","nodeType":"YulIdentifier","src":"9301:3:27"},"nativeSrc":"9301:31:27","nodeType":"YulFunctionCall","src":"9301:31:27"},"variableNames":[{"name":"twos","nativeSrc":"9293:4:27","nodeType":"YulIdentifier","src":"9293:4:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4172,"isOffset":false,"isSlot":false,"src":"9052:11:27","valueSize":1},{"declaration":4172,"isOffset":false,"isSlot":false,"src":"9071:11:27","valueSize":1},{"declaration":4180,"isOffset":false,"isSlot":false,"src":"9153:3:27","valueSize":1},{"declaration":4180,"isOffset":false,"isSlot":false,"src":"9164:3:27","valueSize":1},{"declaration":4219,"isOffset":false,"isSlot":false,"src":"9084:4:27","valueSize":1},{"declaration":4219,"isOffset":false,"isSlot":false,"src":"9169:4:27","valueSize":1},{"declaration":4219,"isOffset":false,"isSlot":false,"src":"9293:4:27","valueSize":1},{"declaration":4219,"isOffset":false,"isSlot":false,"src":"9316:4:27","valueSize":1},{"declaration":4219,"isOffset":false,"isSlot":false,"src":"9323:4:27","valueSize":1}],"flags":["memory-safe"],"id":4227,"nodeType":"InlineAssembly","src":"8962:384:27"},{"expression":{"id":4232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4228,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4180,"src":"9409:3:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4229,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"9416:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4230,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4219,"src":"9423:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9416:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9409:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4233,"nodeType":"ExpressionStatement","src":"9409:18:27"},{"assignments":[4235],"declarations":[{"constant":false,"id":4235,"mutability":"mutable","name":"inverse","nameLocation":"9770:7:27","nodeType":"VariableDeclaration","scope":4299,"src":"9762:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4234,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4242,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":4236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9781:1:27","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4237,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"9785:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9781:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4239,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9780:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":4240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9800:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9780:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9762:39:27"},{"expression":{"id":4249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4243,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"10018:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10029:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4245,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"10033:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4246,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"10047:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10033:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10029:25:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10018:36:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4250,"nodeType":"ExpressionStatement","src":"10018:36:27"},{"expression":{"id":4257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4251,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"10088:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10099:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4253,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"10103:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4254,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"10117:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10103:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10099:25:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10088:36:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4258,"nodeType":"ExpressionStatement","src":"10088:36:27"},{"expression":{"id":4265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4259,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"10160:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10171:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4261,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"10175:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4262,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"10189:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10175:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10171:25:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10160:36:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4266,"nodeType":"ExpressionStatement","src":"10160:36:27"},{"expression":{"id":4273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4267,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"10231:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10242:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4269,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"10246:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4270,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"10260:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10246:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10242:25:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10231:36:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4274,"nodeType":"ExpressionStatement","src":"10231:36:27"},{"expression":{"id":4281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4275,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"10304:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10315:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4277,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"10319:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4278,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"10333:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10319:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10315:25:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10304:36:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4282,"nodeType":"ExpressionStatement","src":"10304:36:27"},{"expression":{"id":4289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4283,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"10378:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10389:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4285,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"10393:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4286,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"10407:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10393:21:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10389:25:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10378:36:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4290,"nodeType":"ExpressionStatement","src":"10378:36:27"},{"expression":{"id":4295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4291,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4175,"src":"10859:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4292,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4180,"src":"10868:3:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4293,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"10874:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10868:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10859:22:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4296,"nodeType":"ExpressionStatement","src":"10859:22:27"},{"expression":{"id":4297,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4175,"src":"10902:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4176,"id":4298,"nodeType":"Return","src":"10895:13:27"}]}]},"documentation":{"id":4166,"nodeType":"StructuredDocumentation","src":"6925:312:27","text":" @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"7251:6:27","parameters":{"id":4173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4168,"mutability":"mutable","name":"x","nameLocation":"7266:1:27","nodeType":"VariableDeclaration","scope":4301,"src":"7258:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4167,"name":"uint256","nodeType":"ElementaryTypeName","src":"7258:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4170,"mutability":"mutable","name":"y","nameLocation":"7277:1:27","nodeType":"VariableDeclaration","scope":4301,"src":"7269:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4169,"name":"uint256","nodeType":"ElementaryTypeName","src":"7269:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4172,"mutability":"mutable","name":"denominator","nameLocation":"7288:11:27","nodeType":"VariableDeclaration","scope":4301,"src":"7280:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4171,"name":"uint256","nodeType":"ElementaryTypeName","src":"7280:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7257:43:27"},"returnParameters":{"id":4176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4175,"mutability":"mutable","name":"result","nameLocation":"7332:6:27","nodeType":"VariableDeclaration","scope":4301,"src":"7324:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4174,"name":"uint256","nodeType":"ElementaryTypeName","src":"7324:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7323:16:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4338,"nodeType":"FunctionDefinition","src":"11054:238:27","nodes":[],"body":{"id":4337,"nodeType":"Block","src":"11164:128:27","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4317,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4304,"src":"11188:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4318,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4306,"src":"11191:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4319,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4308,"src":"11194:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4316,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[4301,4338],"referencedDeclaration":4301,"src":"11181:6:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11181:25:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4324,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4311,"src":"11242:8:27","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}],"id":4323,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5394,"src":"11225:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3786_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11225:26:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4327,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4304,"src":"11262:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4328,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4306,"src":"11265:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4329,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4308,"src":"11268:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4326,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"11255:6:27","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11255:25:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11283:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11255:29:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11225:59:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4321,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"11209:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":4322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11218:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"11209:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11209:76:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11181:104:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4315,"id":4336,"nodeType":"Return","src":"11174:111:27"}]},"documentation":{"id":4302,"nodeType":"StructuredDocumentation","src":"10931:118:27","text":" @dev Calculates x * y / denominator with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11063:6:27","parameters":{"id":4312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4304,"mutability":"mutable","name":"x","nameLocation":"11078:1:27","nodeType":"VariableDeclaration","scope":4338,"src":"11070:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4303,"name":"uint256","nodeType":"ElementaryTypeName","src":"11070:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4306,"mutability":"mutable","name":"y","nameLocation":"11089:1:27","nodeType":"VariableDeclaration","scope":4338,"src":"11081:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4305,"name":"uint256","nodeType":"ElementaryTypeName","src":"11081:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4308,"mutability":"mutable","name":"denominator","nameLocation":"11100:11:27","nodeType":"VariableDeclaration","scope":4338,"src":"11092:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4307,"name":"uint256","nodeType":"ElementaryTypeName","src":"11092:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4311,"mutability":"mutable","name":"rounding","nameLocation":"11122:8:27","nodeType":"VariableDeclaration","scope":4338,"src":"11113:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"},"typeName":{"id":4310,"nodeType":"UserDefinedTypeName","pathNode":{"id":4309,"name":"Rounding","nameLocations":["11113:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":3786,"src":"11113:8:27"},"referencedDeclaration":3786,"src":"11113:8:27","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11069:62:27"},"returnParameters":{"id":4315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4338,"src":"11155:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4313,"name":"uint256","nodeType":"ElementaryTypeName","src":"11155:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11154:9:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4388,"nodeType":"FunctionDefinition","src":"11414:331:27","nodes":[],"body":{"id":4387,"nodeType":"Block","src":"11500:245:27","nodes":[],"statements":[{"id":4386,"nodeType":"UncheckedBlock","src":"11510:229:27","statements":[{"assignments":[4351,4353],"declarations":[{"constant":false,"id":4351,"mutability":"mutable","name":"high","nameLocation":"11543:4:27","nodeType":"VariableDeclaration","scope":4386,"src":"11535:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4350,"name":"uint256","nodeType":"ElementaryTypeName","src":"11535:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4353,"mutability":"mutable","name":"low","nameLocation":"11557:3:27","nodeType":"VariableDeclaration","scope":4386,"src":"11549:11:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4352,"name":"uint256","nodeType":"ElementaryTypeName","src":"11549:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4358,"initialValue":{"arguments":[{"id":4355,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4341,"src":"11571:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4356,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4343,"src":"11574:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4354,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"11564:6:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":4357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11564:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11534:42:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4359,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4351,"src":"11594:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11602:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":4361,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4345,"src":"11607:1:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11602:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11594:14:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4372,"nodeType":"IfStatement","src":"11590:86:27","trueBody":{"id":4371,"nodeType":"Block","src":"11610:66:27","statements":[{"expression":{"arguments":[{"expression":{"id":4367,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3419,"src":"11640:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3419_$","typeString":"type(library Panic)"}},"id":4368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11646:14:27","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":3382,"src":"11640:20:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4364,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3419,"src":"11628:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3419_$","typeString":"type(library Panic)"}},"id":4366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11634:5:27","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":3418,"src":"11628:11:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":4369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11628:33:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4370,"nodeType":"ExpressionStatement","src":"11628:33:27"}]}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4373,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4351,"src":"11697:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":4376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":4374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11706:3:27","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4375,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4345,"src":"11712:1:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11706:7:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":4377,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11705:9:27","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"11697:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4379,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11696:19:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4380,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4353,"src":"11719:3:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4381,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4345,"src":"11726:1:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11719:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4383,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11718:10:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11696:32:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4349,"id":4385,"nodeType":"Return","src":"11689:39:27"}]}]},"documentation":{"id":4339,"nodeType":"StructuredDocumentation","src":"11298:111:27","text":" @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256."},"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11423:6:27","parameters":{"id":4346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4341,"mutability":"mutable","name":"x","nameLocation":"11438:1:27","nodeType":"VariableDeclaration","scope":4388,"src":"11430:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4340,"name":"uint256","nodeType":"ElementaryTypeName","src":"11430:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4343,"mutability":"mutable","name":"y","nameLocation":"11449:1:27","nodeType":"VariableDeclaration","scope":4388,"src":"11441:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4342,"name":"uint256","nodeType":"ElementaryTypeName","src":"11441:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4345,"mutability":"mutable","name":"n","nameLocation":"11458:1:27","nodeType":"VariableDeclaration","scope":4388,"src":"11452:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4344,"name":"uint8","nodeType":"ElementaryTypeName","src":"11452:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"11429:31:27"},"returnParameters":{"id":4349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4348,"mutability":"mutable","name":"result","nameLocation":"11492:6:27","nodeType":"VariableDeclaration","scope":4388,"src":"11484:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4347,"name":"uint256","nodeType":"ElementaryTypeName","src":"11484:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11483:16:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4427,"nodeType":"FunctionDefinition","src":"11865:211:27","nodes":[],"body":{"id":4426,"nodeType":"Block","src":"11963:113:27","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4404,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4391,"src":"11987:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4405,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"11990:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4406,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4395,"src":"11993:1:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":4403,"name":"mulShr","nodeType":"Identifier","overloadedDeclarations":[4388,4427],"referencedDeclaration":4388,"src":"11980:6:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint8) pure returns (uint256)"}},"id":4407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11980:15:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4411,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4398,"src":"12031:8:27","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}],"id":4410,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5394,"src":"12014:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3786_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12014:26:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4414,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4391,"src":"12051:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4415,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"12054:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12057:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":4417,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4395,"src":"12062:1:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12057:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4413,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"12044:6:27","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12044:20:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12067:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12044:24:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12014:54:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4408,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"11998:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":4409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12007:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"11998:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11998:71:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11980:89:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4402,"id":4425,"nodeType":"Return","src":"11973:96:27"}]},"documentation":{"id":4389,"nodeType":"StructuredDocumentation","src":"11751:109:27","text":" @dev Calculates x * y >> n with full precision, following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11874:6:27","parameters":{"id":4399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4391,"mutability":"mutable","name":"x","nameLocation":"11889:1:27","nodeType":"VariableDeclaration","scope":4427,"src":"11881:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4390,"name":"uint256","nodeType":"ElementaryTypeName","src":"11881:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4393,"mutability":"mutable","name":"y","nameLocation":"11900:1:27","nodeType":"VariableDeclaration","scope":4427,"src":"11892:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4392,"name":"uint256","nodeType":"ElementaryTypeName","src":"11892:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4395,"mutability":"mutable","name":"n","nameLocation":"11909:1:27","nodeType":"VariableDeclaration","scope":4427,"src":"11903:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4394,"name":"uint8","nodeType":"ElementaryTypeName","src":"11903:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4398,"mutability":"mutable","name":"rounding","nameLocation":"11921:8:27","nodeType":"VariableDeclaration","scope":4427,"src":"11912:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"},"typeName":{"id":4397,"nodeType":"UserDefinedTypeName","pathNode":{"id":4396,"name":"Rounding","nameLocations":["11912:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":3786,"src":"11912:8:27"},"referencedDeclaration":3786,"src":"11912:8:27","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11880:50:27"},"returnParameters":{"id":4402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4401,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4427,"src":"11954:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4400,"name":"uint256","nodeType":"ElementaryTypeName","src":"11954:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11953:9:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4524,"nodeType":"FunctionDefinition","src":"12640:1919:27","nodes":[],"body":{"id":4523,"nodeType":"Block","src":"12710:1849:27","nodes":[],"statements":[{"id":4522,"nodeType":"UncheckedBlock","src":"12720:1833:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4437,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4432,"src":"12748:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12753:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12748:6:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4442,"nodeType":"IfStatement","src":"12744:20:27","trueBody":{"expression":{"hexValue":"30","id":4440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12763:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4436,"id":4441,"nodeType":"Return","src":"12756:8:27"}},{"assignments":[4444],"declarations":[{"constant":false,"id":4444,"mutability":"mutable","name":"remainder","nameLocation":"13243:9:27","nodeType":"VariableDeclaration","scope":4522,"src":"13235:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4443,"name":"uint256","nodeType":"ElementaryTypeName","src":"13235:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4448,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4445,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4430,"src":"13255:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":4446,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4432,"src":"13259:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13255:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13235:25:27"},{"assignments":[4450],"declarations":[{"constant":false,"id":4450,"mutability":"mutable","name":"gcd","nameLocation":"13282:3:27","nodeType":"VariableDeclaration","scope":4522,"src":"13274:11:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4449,"name":"uint256","nodeType":"ElementaryTypeName","src":"13274:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4452,"initialValue":{"id":4451,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4432,"src":"13288:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13274:15:27"},{"assignments":[4454],"declarations":[{"constant":false,"id":4454,"mutability":"mutable","name":"x","nameLocation":"13432:1:27","nodeType":"VariableDeclaration","scope":4522,"src":"13425:8:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4453,"name":"int256","nodeType":"ElementaryTypeName","src":"13425:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4456,"initialValue":{"hexValue":"30","id":4455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13436:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13425:12:27"},{"assignments":[4458],"declarations":[{"constant":false,"id":4458,"mutability":"mutable","name":"y","nameLocation":"13458:1:27","nodeType":"VariableDeclaration","scope":4522,"src":"13451:8:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4457,"name":"int256","nodeType":"ElementaryTypeName","src":"13451:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4460,"initialValue":{"hexValue":"31","id":4459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13462:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"13451:12:27"},{"body":{"id":4497,"nodeType":"Block","src":"13501:882:27","statements":[{"assignments":[4465],"declarations":[{"constant":false,"id":4465,"mutability":"mutable","name":"quotient","nameLocation":"13527:8:27","nodeType":"VariableDeclaration","scope":4497,"src":"13519:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4464,"name":"uint256","nodeType":"ElementaryTypeName","src":"13519:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4469,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4466,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4450,"src":"13538:3:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4467,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4444,"src":"13544:9:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13538:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13519:34:27"},{"expression":{"id":4480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4470,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4450,"src":"13573:3:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4471,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4444,"src":"13578:9:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4472,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13572:16:27","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":4473,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4444,"src":"13678:9:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4474,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4450,"src":"13923:3:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4475,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4444,"src":"13929:9:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4476,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4465,"src":"13941:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13929:20:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13923:26:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4479,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13591:376:27","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"13572:395:27","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4481,"nodeType":"ExpressionStatement","src":"13572:395:27"},{"expression":{"id":4495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4482,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4454,"src":"13987:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":4483,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4458,"src":"13990:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4484,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13986:6:27","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":4485,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4458,"src":"14072:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4486,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4454,"src":"14326:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4487,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4458,"src":"14330:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":4490,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4465,"src":"14341:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4489,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14334:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4488,"name":"int256","nodeType":"ElementaryTypeName","src":"14334:6:27","typeDescriptions":{}}},"id":4491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14334:16:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14330:20:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14326:24:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4494,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13995:373:27","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"src":"13986:382:27","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4496,"nodeType":"ExpressionStatement","src":"13986:382:27"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4461,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4444,"src":"13485:9:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13498:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13485:14:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4498,"nodeType":"WhileStatement","src":"13478:905:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4499,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4450,"src":"14401:3:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":4500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14408:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14401:8:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4504,"nodeType":"IfStatement","src":"14397:22:27","trueBody":{"expression":{"hexValue":"30","id":4502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14418:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4436,"id":4503,"nodeType":"Return","src":"14411:8:27"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4506,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4454,"src":"14470:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":4507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14474:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14470:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4509,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4432,"src":"14477:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":4513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14489:2:27","subExpression":{"id":4512,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4454,"src":"14490:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4511,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14481:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4510,"name":"uint256","nodeType":"ElementaryTypeName","src":"14481:7:27","typeDescriptions":{}}},"id":4514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14481:11:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14477:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":4518,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4454,"src":"14502:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14494:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4516,"name":"uint256","nodeType":"ElementaryTypeName","src":"14494:7:27","typeDescriptions":{}}},"id":4519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14494:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4505,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4063,"src":"14462:7:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":4520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14462:43:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4436,"id":4521,"nodeType":"Return","src":"14455:50:27"}]}]},"documentation":{"id":4428,"nodeType":"StructuredDocumentation","src":"12082:553:27","text":" @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n If the input value is not inversible, 0 is returned.\n NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}."},"implemented":true,"kind":"function","modifiers":[],"name":"invMod","nameLocation":"12649:6:27","parameters":{"id":4433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4430,"mutability":"mutable","name":"a","nameLocation":"12664:1:27","nodeType":"VariableDeclaration","scope":4524,"src":"12656:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4429,"name":"uint256","nodeType":"ElementaryTypeName","src":"12656:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4432,"mutability":"mutable","name":"n","nameLocation":"12675:1:27","nodeType":"VariableDeclaration","scope":4524,"src":"12667:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4431,"name":"uint256","nodeType":"ElementaryTypeName","src":"12667:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12655:22:27"},"returnParameters":{"id":4436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4435,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4524,"src":"12701:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4434,"name":"uint256","nodeType":"ElementaryTypeName","src":"12701:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12700:9:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4545,"nodeType":"FunctionDefinition","src":"15084:157:27","nodes":[],"body":{"id":4544,"nodeType":"Block","src":"15159:82:27","nodes":[],"statements":[{"id":4543,"nodeType":"UncheckedBlock","src":"15169:66:27","statements":[{"expression":{"arguments":[{"id":4536,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4527,"src":"15212:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4537,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4529,"src":"15215:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"32","id":4538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15219:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15215:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4540,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4529,"src":"15222:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4534,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5395,"src":"15200:4:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$5395_$","typeString":"type(library Math)"}},"id":4535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15205:6:27","memberName":"modExp","nodeType":"MemberAccess","referencedDeclaration":4581,"src":"15200:11:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":4541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15200:24:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4533,"id":4542,"nodeType":"Return","src":"15193:31:27"}]}]},"documentation":{"id":4525,"nodeType":"StructuredDocumentation","src":"14565:514:27","text":" @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n NOTE: this function does NOT check that `p` is a prime greater than `2`."},"implemented":true,"kind":"function","modifiers":[],"name":"invModPrime","nameLocation":"15093:11:27","parameters":{"id":4530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4527,"mutability":"mutable","name":"a","nameLocation":"15113:1:27","nodeType":"VariableDeclaration","scope":4545,"src":"15105:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4526,"name":"uint256","nodeType":"ElementaryTypeName","src":"15105:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4529,"mutability":"mutable","name":"p","nameLocation":"15124:1:27","nodeType":"VariableDeclaration","scope":4545,"src":"15116:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4528,"name":"uint256","nodeType":"ElementaryTypeName","src":"15116:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15104:22:27"},"returnParameters":{"id":4533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4532,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4545,"src":"15150:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4531,"name":"uint256","nodeType":"ElementaryTypeName","src":"15150:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15149:9:27"},"scope":5395,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":4581,"nodeType":"FunctionDefinition","src":"15930:255:27","nodes":[],"body":{"id":4580,"nodeType":"Block","src":"16011:174:27","nodes":[],"statements":[{"assignments":[4558,4560],"declarations":[{"constant":false,"id":4558,"mutability":"mutable","name":"success","nameLocation":"16027:7:27","nodeType":"VariableDeclaration","scope":4580,"src":"16022:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4557,"name":"bool","nodeType":"ElementaryTypeName","src":"16022:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4560,"mutability":"mutable","name":"result","nameLocation":"16044:6:27","nodeType":"VariableDeclaration","scope":4580,"src":"16036:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4559,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4566,"initialValue":{"arguments":[{"id":4562,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4548,"src":"16064:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4563,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4550,"src":"16067:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4564,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4552,"src":"16070:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4561,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[4605,4687],"referencedDeclaration":4605,"src":"16054:9:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (bool,uint256)"}},"id":4565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16054:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"16021:51:27"},{"condition":{"id":4568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16086:8:27","subExpression":{"id":4567,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4558,"src":"16087:7:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4577,"nodeType":"IfStatement","src":"16082:74:27","trueBody":{"id":4576,"nodeType":"Block","src":"16096:60:27","statements":[{"expression":{"arguments":[{"expression":{"id":4572,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3419,"src":"16122:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3419_$","typeString":"type(library Panic)"}},"id":4573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16128:16:27","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":3386,"src":"16122:22:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4569,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3419,"src":"16110:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3419_$","typeString":"type(library Panic)"}},"id":4571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16116:5:27","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":3418,"src":"16110:11:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":4574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16110:35:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4575,"nodeType":"ExpressionStatement","src":"16110:35:27"}]}},{"expression":{"id":4578,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4560,"src":"16172:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4556,"id":4579,"nodeType":"Return","src":"16165:13:27"}]},"documentation":{"id":4546,"nodeType":"StructuredDocumentation","src":"15247:678:27","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n Requirements:\n - modulus can't be zero\n - underlying staticcall to precompile must succeed\n IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n sure the chain you're using it on supports the precompiled contract for modular exponentiation\n at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n interpreted as 0."},"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"15939:6:27","parameters":{"id":4553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4548,"mutability":"mutable","name":"b","nameLocation":"15954:1:27","nodeType":"VariableDeclaration","scope":4581,"src":"15946:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4547,"name":"uint256","nodeType":"ElementaryTypeName","src":"15946:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4550,"mutability":"mutable","name":"e","nameLocation":"15965:1:27","nodeType":"VariableDeclaration","scope":4581,"src":"15957:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4549,"name":"uint256","nodeType":"ElementaryTypeName","src":"15957:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4552,"mutability":"mutable","name":"m","nameLocation":"15976:1:27","nodeType":"VariableDeclaration","scope":4581,"src":"15968:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4551,"name":"uint256","nodeType":"ElementaryTypeName","src":"15968:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15945:33:27"},"returnParameters":{"id":4556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4555,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4581,"src":"16002:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4554,"name":"uint256","nodeType":"ElementaryTypeName","src":"16002:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16001:9:27"},"scope":5395,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":4605,"nodeType":"FunctionDefinition","src":"16934:1598:27","nodes":[],"body":{"id":4604,"nodeType":"Block","src":"17039:1493:27","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4595,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4588,"src":"17053:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17058:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17053:6:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4602,"nodeType":"IfStatement","src":"17049:29:27","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":4598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17069:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":4599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17076:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4600,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17068:10:27","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":4594,"id":4601,"nodeType":"Return","src":"17061:17:27"}},{"AST":{"nativeSrc":"17113:1413:27","nodeType":"YulBlock","src":"17113:1413:27","statements":[{"nativeSrc":"17127:22:27","nodeType":"YulVariableDeclaration","src":"17127:22:27","value":{"arguments":[{"kind":"number","nativeSrc":"17144:4:27","nodeType":"YulLiteral","src":"17144:4:27","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"17138:5:27","nodeType":"YulIdentifier","src":"17138:5:27"},"nativeSrc":"17138:11:27","nodeType":"YulFunctionCall","src":"17138:11:27"},"variables":[{"name":"ptr","nativeSrc":"17131:3:27","nodeType":"YulTypedName","src":"17131:3:27","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"18057:3:27","nodeType":"YulIdentifier","src":"18057:3:27"},{"kind":"number","nativeSrc":"18062:4:27","nodeType":"YulLiteral","src":"18062:4:27","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18050:6:27","nodeType":"YulIdentifier","src":"18050:6:27"},"nativeSrc":"18050:17:27","nodeType":"YulFunctionCall","src":"18050:17:27"},"nativeSrc":"18050:17:27","nodeType":"YulExpressionStatement","src":"18050:17:27"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18091:3:27","nodeType":"YulIdentifier","src":"18091:3:27"},{"kind":"number","nativeSrc":"18096:4:27","nodeType":"YulLiteral","src":"18096:4:27","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18087:3:27","nodeType":"YulIdentifier","src":"18087:3:27"},"nativeSrc":"18087:14:27","nodeType":"YulFunctionCall","src":"18087:14:27"},{"kind":"number","nativeSrc":"18103:4:27","nodeType":"YulLiteral","src":"18103:4:27","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18080:6:27","nodeType":"YulIdentifier","src":"18080:6:27"},"nativeSrc":"18080:28:27","nodeType":"YulFunctionCall","src":"18080:28:27"},"nativeSrc":"18080:28:27","nodeType":"YulExpressionStatement","src":"18080:28:27"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18132:3:27","nodeType":"YulIdentifier","src":"18132:3:27"},{"kind":"number","nativeSrc":"18137:4:27","nodeType":"YulLiteral","src":"18137:4:27","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"18128:3:27","nodeType":"YulIdentifier","src":"18128:3:27"},"nativeSrc":"18128:14:27","nodeType":"YulFunctionCall","src":"18128:14:27"},{"kind":"number","nativeSrc":"18144:4:27","nodeType":"YulLiteral","src":"18144:4:27","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18121:6:27","nodeType":"YulIdentifier","src":"18121:6:27"},"nativeSrc":"18121:28:27","nodeType":"YulFunctionCall","src":"18121:28:27"},"nativeSrc":"18121:28:27","nodeType":"YulExpressionStatement","src":"18121:28:27"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18173:3:27","nodeType":"YulIdentifier","src":"18173:3:27"},{"kind":"number","nativeSrc":"18178:4:27","nodeType":"YulLiteral","src":"18178:4:27","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"18169:3:27","nodeType":"YulIdentifier","src":"18169:3:27"},"nativeSrc":"18169:14:27","nodeType":"YulFunctionCall","src":"18169:14:27"},{"name":"b","nativeSrc":"18185:1:27","nodeType":"YulIdentifier","src":"18185:1:27"}],"functionName":{"name":"mstore","nativeSrc":"18162:6:27","nodeType":"YulIdentifier","src":"18162:6:27"},"nativeSrc":"18162:25:27","nodeType":"YulFunctionCall","src":"18162:25:27"},"nativeSrc":"18162:25:27","nodeType":"YulExpressionStatement","src":"18162:25:27"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18211:3:27","nodeType":"YulIdentifier","src":"18211:3:27"},{"kind":"number","nativeSrc":"18216:4:27","nodeType":"YulLiteral","src":"18216:4:27","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"18207:3:27","nodeType":"YulIdentifier","src":"18207:3:27"},"nativeSrc":"18207:14:27","nodeType":"YulFunctionCall","src":"18207:14:27"},{"name":"e","nativeSrc":"18223:1:27","nodeType":"YulIdentifier","src":"18223:1:27"}],"functionName":{"name":"mstore","nativeSrc":"18200:6:27","nodeType":"YulIdentifier","src":"18200:6:27"},"nativeSrc":"18200:25:27","nodeType":"YulFunctionCall","src":"18200:25:27"},"nativeSrc":"18200:25:27","nodeType":"YulExpressionStatement","src":"18200:25:27"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18249:3:27","nodeType":"YulIdentifier","src":"18249:3:27"},{"kind":"number","nativeSrc":"18254:4:27","nodeType":"YulLiteral","src":"18254:4:27","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"18245:3:27","nodeType":"YulIdentifier","src":"18245:3:27"},"nativeSrc":"18245:14:27","nodeType":"YulFunctionCall","src":"18245:14:27"},{"name":"m","nativeSrc":"18261:1:27","nodeType":"YulIdentifier","src":"18261:1:27"}],"functionName":{"name":"mstore","nativeSrc":"18238:6:27","nodeType":"YulIdentifier","src":"18238:6:27"},"nativeSrc":"18238:25:27","nodeType":"YulFunctionCall","src":"18238:25:27"},"nativeSrc":"18238:25:27","nodeType":"YulExpressionStatement","src":"18238:25:27"},{"nativeSrc":"18425:57:27","nodeType":"YulAssignment","src":"18425:57:27","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"18447:3:27","nodeType":"YulIdentifier","src":"18447:3:27"},"nativeSrc":"18447:5:27","nodeType":"YulFunctionCall","src":"18447:5:27"},{"kind":"number","nativeSrc":"18454:4:27","nodeType":"YulLiteral","src":"18454:4:27","type":"","value":"0x05"},{"name":"ptr","nativeSrc":"18460:3:27","nodeType":"YulIdentifier","src":"18460:3:27"},{"kind":"number","nativeSrc":"18465:4:27","nodeType":"YulLiteral","src":"18465:4:27","type":"","value":"0xc0"},{"kind":"number","nativeSrc":"18471:4:27","nodeType":"YulLiteral","src":"18471:4:27","type":"","value":"0x00"},{"kind":"number","nativeSrc":"18477:4:27","nodeType":"YulLiteral","src":"18477:4:27","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"18436:10:27","nodeType":"YulIdentifier","src":"18436:10:27"},"nativeSrc":"18436:46:27","nodeType":"YulFunctionCall","src":"18436:46:27"},"variableNames":[{"name":"success","nativeSrc":"18425:7:27","nodeType":"YulIdentifier","src":"18425:7:27"}]},{"nativeSrc":"18495:21:27","nodeType":"YulAssignment","src":"18495:21:27","value":{"arguments":[{"kind":"number","nativeSrc":"18511:4:27","nodeType":"YulLiteral","src":"18511:4:27","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"18505:5:27","nodeType":"YulIdentifier","src":"18505:5:27"},"nativeSrc":"18505:11:27","nodeType":"YulFunctionCall","src":"18505:11:27"},"variableNames":[{"name":"result","nativeSrc":"18495:6:27","nodeType":"YulIdentifier","src":"18495:6:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4584,"isOffset":false,"isSlot":false,"src":"18185:1:27","valueSize":1},{"declaration":4586,"isOffset":false,"isSlot":false,"src":"18223:1:27","valueSize":1},{"declaration":4588,"isOffset":false,"isSlot":false,"src":"18261:1:27","valueSize":1},{"declaration":4593,"isOffset":false,"isSlot":false,"src":"18495:6:27","valueSize":1},{"declaration":4591,"isOffset":false,"isSlot":false,"src":"18425:7:27","valueSize":1}],"flags":["memory-safe"],"id":4603,"nodeType":"InlineAssembly","src":"17088:1438:27"}]},"documentation":{"id":4582,"nodeType":"StructuredDocumentation","src":"16191:738:27","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n to operate modulo 0 or if the underlying precompile reverted.\n IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n of a revert, but the result may be incorrectly interpreted as 0."},"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"16943:9:27","parameters":{"id":4589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4584,"mutability":"mutable","name":"b","nameLocation":"16961:1:27","nodeType":"VariableDeclaration","scope":4605,"src":"16953:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4583,"name":"uint256","nodeType":"ElementaryTypeName","src":"16953:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4586,"mutability":"mutable","name":"e","nameLocation":"16972:1:27","nodeType":"VariableDeclaration","scope":4605,"src":"16964:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4585,"name":"uint256","nodeType":"ElementaryTypeName","src":"16964:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4588,"mutability":"mutable","name":"m","nameLocation":"16983:1:27","nodeType":"VariableDeclaration","scope":4605,"src":"16975:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4587,"name":"uint256","nodeType":"ElementaryTypeName","src":"16975:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16952:33:27"},"returnParameters":{"id":4594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4591,"mutability":"mutable","name":"success","nameLocation":"17014:7:27","nodeType":"VariableDeclaration","scope":4605,"src":"17009:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4590,"name":"bool","nodeType":"ElementaryTypeName","src":"17009:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4593,"mutability":"mutable","name":"result","nameLocation":"17031:6:27","nodeType":"VariableDeclaration","scope":4605,"src":"17023:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4592,"name":"uint256","nodeType":"ElementaryTypeName","src":"17023:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17008:30:27"},"scope":5395,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":4641,"nodeType":"FunctionDefinition","src":"18628:280:27","nodes":[],"body":{"id":4640,"nodeType":"Block","src":"18729:179:27","nodes":[],"statements":[{"assignments":[4618,4620],"declarations":[{"constant":false,"id":4618,"mutability":"mutable","name":"success","nameLocation":"18745:7:27","nodeType":"VariableDeclaration","scope":4640,"src":"18740:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4617,"name":"bool","nodeType":"ElementaryTypeName","src":"18740:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4620,"mutability":"mutable","name":"result","nameLocation":"18767:6:27","nodeType":"VariableDeclaration","scope":4640,"src":"18754:19:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4619,"name":"bytes","nodeType":"ElementaryTypeName","src":"18754:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4626,"initialValue":{"arguments":[{"id":4622,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4608,"src":"18787:1:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4623,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"18790:1:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4624,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4612,"src":"18793:1:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4621,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[4605,4687],"referencedDeclaration":4687,"src":"18777:9:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,bytes memory,bytes memory) view returns (bool,bytes memory)"}},"id":4625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18777:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"18739:56:27"},{"condition":{"id":4628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18809:8:27","subExpression":{"id":4627,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"18810:7:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4637,"nodeType":"IfStatement","src":"18805:74:27","trueBody":{"id":4636,"nodeType":"Block","src":"18819:60:27","statements":[{"expression":{"arguments":[{"expression":{"id":4632,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3419,"src":"18845:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3419_$","typeString":"type(library Panic)"}},"id":4633,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18851:16:27","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":3386,"src":"18845:22:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4629,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3419,"src":"18833:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$3419_$","typeString":"type(library Panic)"}},"id":4631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18839:5:27","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":3418,"src":"18833:11:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":4634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18833:35:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4635,"nodeType":"ExpressionStatement","src":"18833:35:27"}]}},{"expression":{"id":4638,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4620,"src":"18895:6:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":4616,"id":4639,"nodeType":"Return","src":"18888:13:27"}]},"documentation":{"id":4606,"nodeType":"StructuredDocumentation","src":"18538:85:27","text":" @dev Variant of {modExp} that supports inputs of arbitrary length."},"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"18637:6:27","parameters":{"id":4613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4608,"mutability":"mutable","name":"b","nameLocation":"18657:1:27","nodeType":"VariableDeclaration","scope":4641,"src":"18644:14:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4607,"name":"bytes","nodeType":"ElementaryTypeName","src":"18644:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4610,"mutability":"mutable","name":"e","nameLocation":"18673:1:27","nodeType":"VariableDeclaration","scope":4641,"src":"18660:14:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4609,"name":"bytes","nodeType":"ElementaryTypeName","src":"18660:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4612,"mutability":"mutable","name":"m","nameLocation":"18689:1:27","nodeType":"VariableDeclaration","scope":4641,"src":"18676:14:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4611,"name":"bytes","nodeType":"ElementaryTypeName","src":"18676:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18643:48:27"},"returnParameters":{"id":4616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4615,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4641,"src":"18715:12:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4614,"name":"bytes","nodeType":"ElementaryTypeName","src":"18715:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18714:14:27"},"scope":5395,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":4687,"nodeType":"FunctionDefinition","src":"19007:926:27","nodes":[],"body":{"id":4686,"nodeType":"Block","src":"19162:771:27","nodes":[],"statements":[{"condition":{"arguments":[{"id":4656,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4648,"src":"19187:1:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4655,"name":"_zeroBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"19176:10:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":4657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19176:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4665,"nodeType":"IfStatement","src":"19172:47:27","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":4658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19199:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":4661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19216: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":4660,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"19206:9:27","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4659,"name":"bytes","nodeType":"ElementaryTypeName","src":"19210:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19206:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4663,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19198:21:27","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"functionReturnParameters":4654,"id":4664,"nodeType":"Return","src":"19191:28:27"}},{"assignments":[4667],"declarations":[{"constant":false,"id":4667,"mutability":"mutable","name":"mLen","nameLocation":"19238:4:27","nodeType":"VariableDeclaration","scope":4686,"src":"19230:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4666,"name":"uint256","nodeType":"ElementaryTypeName","src":"19230:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4670,"initialValue":{"expression":{"id":4668,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4648,"src":"19245:1:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19247:6:27","memberName":"length","nodeType":"MemberAccess","src":"19245:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19230:23:27"},{"expression":{"id":4683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4671,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4653,"src":"19335:6:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":4674,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"19361:1:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19363:6:27","memberName":"length","nodeType":"MemberAccess","src":"19361:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4676,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4646,"src":"19371:1:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19373:6:27","memberName":"length","nodeType":"MemberAccess","src":"19371:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4678,"name":"mLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4667,"src":"19381:4:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4679,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"19387:1:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4680,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4646,"src":"19390:1:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4681,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4648,"src":"19393:1:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4672,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19344:3:27","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19348:12:27","memberName":"encodePacked","nodeType":"MemberAccess","src":"19344:16:27","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19344:51:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"19335:60:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4684,"nodeType":"ExpressionStatement","src":"19335:60:27"},{"AST":{"nativeSrc":"19431:496:27","nodeType":"YulBlock","src":"19431:496:27","statements":[{"nativeSrc":"19445:32:27","nodeType":"YulVariableDeclaration","src":"19445:32:27","value":{"arguments":[{"name":"result","nativeSrc":"19464:6:27","nodeType":"YulIdentifier","src":"19464:6:27"},{"kind":"number","nativeSrc":"19472:4:27","nodeType":"YulLiteral","src":"19472:4:27","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19460:3:27","nodeType":"YulIdentifier","src":"19460:3:27"},"nativeSrc":"19460:17:27","nodeType":"YulFunctionCall","src":"19460:17:27"},"variables":[{"name":"dataPtr","nativeSrc":"19449:7:27","nodeType":"YulTypedName","src":"19449:7:27","type":""}]},{"nativeSrc":"19567:73:27","nodeType":"YulAssignment","src":"19567:73:27","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"19589:3:27","nodeType":"YulIdentifier","src":"19589:3:27"},"nativeSrc":"19589:5:27","nodeType":"YulFunctionCall","src":"19589:5:27"},{"kind":"number","nativeSrc":"19596:4:27","nodeType":"YulLiteral","src":"19596:4:27","type":"","value":"0x05"},{"name":"dataPtr","nativeSrc":"19602:7:27","nodeType":"YulIdentifier","src":"19602:7:27"},{"arguments":[{"name":"result","nativeSrc":"19617:6:27","nodeType":"YulIdentifier","src":"19617:6:27"}],"functionName":{"name":"mload","nativeSrc":"19611:5:27","nodeType":"YulIdentifier","src":"19611:5:27"},"nativeSrc":"19611:13:27","nodeType":"YulFunctionCall","src":"19611:13:27"},{"name":"dataPtr","nativeSrc":"19626:7:27","nodeType":"YulIdentifier","src":"19626:7:27"},{"name":"mLen","nativeSrc":"19635:4:27","nodeType":"YulIdentifier","src":"19635:4:27"}],"functionName":{"name":"staticcall","nativeSrc":"19578:10:27","nodeType":"YulIdentifier","src":"19578:10:27"},"nativeSrc":"19578:62:27","nodeType":"YulFunctionCall","src":"19578:62:27"},"variableNames":[{"name":"success","nativeSrc":"19567:7:27","nodeType":"YulIdentifier","src":"19567:7:27"}]},{"expression":{"arguments":[{"name":"result","nativeSrc":"19796:6:27","nodeType":"YulIdentifier","src":"19796:6:27"},{"name":"mLen","nativeSrc":"19804:4:27","nodeType":"YulIdentifier","src":"19804:4:27"}],"functionName":{"name":"mstore","nativeSrc":"19789:6:27","nodeType":"YulIdentifier","src":"19789:6:27"},"nativeSrc":"19789:20:27","nodeType":"YulFunctionCall","src":"19789:20:27"},"nativeSrc":"19789:20:27","nodeType":"YulExpressionStatement","src":"19789:20:27"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19892:4:27","nodeType":"YulLiteral","src":"19892:4:27","type":"","value":"0x40"},{"arguments":[{"name":"dataPtr","nativeSrc":"19902:7:27","nodeType":"YulIdentifier","src":"19902:7:27"},{"name":"mLen","nativeSrc":"19911:4:27","nodeType":"YulIdentifier","src":"19911:4:27"}],"functionName":{"name":"add","nativeSrc":"19898:3:27","nodeType":"YulIdentifier","src":"19898:3:27"},"nativeSrc":"19898:18:27","nodeType":"YulFunctionCall","src":"19898:18:27"}],"functionName":{"name":"mstore","nativeSrc":"19885:6:27","nodeType":"YulIdentifier","src":"19885:6:27"},"nativeSrc":"19885:32:27","nodeType":"YulFunctionCall","src":"19885:32:27"},"nativeSrc":"19885:32:27","nodeType":"YulExpressionStatement","src":"19885:32:27"}]},"evmVersion":"cancun","externalReferences":[{"declaration":4667,"isOffset":false,"isSlot":false,"src":"19635:4:27","valueSize":1},{"declaration":4667,"isOffset":false,"isSlot":false,"src":"19804:4:27","valueSize":1},{"declaration":4667,"isOffset":false,"isSlot":false,"src":"19911:4:27","valueSize":1},{"declaration":4653,"isOffset":false,"isSlot":false,"src":"19464:6:27","valueSize":1},{"declaration":4653,"isOffset":false,"isSlot":false,"src":"19617:6:27","valueSize":1},{"declaration":4653,"isOffset":false,"isSlot":false,"src":"19796:6:27","valueSize":1},{"declaration":4651,"isOffset":false,"isSlot":false,"src":"19567:7:27","valueSize":1}],"flags":["memory-safe"],"id":4685,"nodeType":"InlineAssembly","src":"19406:521:27"}]},"documentation":{"id":4642,"nodeType":"StructuredDocumentation","src":"18914:88:27","text":" @dev Variant of {tryModExp} that supports inputs of arbitrary length."},"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"19016:9:27","parameters":{"id":4649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4644,"mutability":"mutable","name":"b","nameLocation":"19048:1:27","nodeType":"VariableDeclaration","scope":4687,"src":"19035:14:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4643,"name":"bytes","nodeType":"ElementaryTypeName","src":"19035:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4646,"mutability":"mutable","name":"e","nameLocation":"19072:1:27","nodeType":"VariableDeclaration","scope":4687,"src":"19059:14:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4645,"name":"bytes","nodeType":"ElementaryTypeName","src":"19059:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4648,"mutability":"mutable","name":"m","nameLocation":"19096:1:27","nodeType":"VariableDeclaration","scope":4687,"src":"19083:14:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4647,"name":"bytes","nodeType":"ElementaryTypeName","src":"19083:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19025:78:27"},"returnParameters":{"id":4654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4651,"mutability":"mutable","name":"success","nameLocation":"19132:7:27","nodeType":"VariableDeclaration","scope":4687,"src":"19127:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4650,"name":"bool","nodeType":"ElementaryTypeName","src":"19127:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4653,"mutability":"mutable","name":"result","nameLocation":"19154:6:27","nodeType":"VariableDeclaration","scope":4687,"src":"19141:19:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4652,"name":"bytes","nodeType":"ElementaryTypeName","src":"19141:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19126:35:27"},"scope":5395,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":4720,"nodeType":"FunctionDefinition","src":"20016:248:27","nodes":[],"body":{"id":4719,"nodeType":"Block","src":"20088:176:27","nodes":[],"statements":[{"body":{"id":4715,"nodeType":"Block","src":"20145:92:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":4710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":4706,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4690,"src":"20163:9:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4708,"indexExpression":{"id":4707,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4696,"src":"20173:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20163:12:27","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20179:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20163:17:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4714,"nodeType":"IfStatement","src":"20159:68:27","trueBody":{"id":4713,"nodeType":"Block","src":"20182:45:27","statements":[{"expression":{"hexValue":"66616c7365","id":4711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20207:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":4694,"id":4712,"nodeType":"Return","src":"20200:12:27"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4699,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4696,"src":"20118:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":4700,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4690,"src":"20122:9:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20132:6:27","memberName":"length","nodeType":"MemberAccess","src":"20122:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20118:20:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4716,"initializationExpression":{"assignments":[4696],"declarations":[{"constant":false,"id":4696,"mutability":"mutable","name":"i","nameLocation":"20111:1:27","nodeType":"VariableDeclaration","scope":4716,"src":"20103:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4695,"name":"uint256","nodeType":"ElementaryTypeName","src":"20103:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4698,"initialValue":{"hexValue":"30","id":4697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20115:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20103:13:27"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":4704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"20140:3:27","subExpression":{"id":4703,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4696,"src":"20142:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4705,"nodeType":"ExpressionStatement","src":"20140:3:27"},"nodeType":"ForStatement","src":"20098:139:27"},{"expression":{"hexValue":"74727565","id":4717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20253:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4694,"id":4718,"nodeType":"Return","src":"20246:11:27"}]},"documentation":{"id":4688,"nodeType":"StructuredDocumentation","src":"19939:72:27","text":" @dev Returns whether the provided byte array is zero."},"implemented":true,"kind":"function","modifiers":[],"name":"_zeroBytes","nameLocation":"20025:10:27","parameters":{"id":4691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4690,"mutability":"mutable","name":"byteArray","nameLocation":"20049:9:27","nodeType":"VariableDeclaration","scope":4720,"src":"20036:22:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4689,"name":"bytes","nodeType":"ElementaryTypeName","src":"20036:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20035:24:27"},"returnParameters":{"id":4694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4693,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4720,"src":"20082:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4692,"name":"bool","nodeType":"ElementaryTypeName","src":"20082:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20081:6:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":4939,"nodeType":"FunctionDefinition","src":"20567:5181:27","nodes":[],"body":{"id":4938,"nodeType":"Block","src":"20624:5124:27","nodes":[],"statements":[{"id":4937,"nodeType":"UncheckedBlock","src":"20634:5108:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4728,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4723,"src":"20728:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":4729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20733:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20728:6:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4734,"nodeType":"IfStatement","src":"20724:53:27","trueBody":{"id":4733,"nodeType":"Block","src":"20736:41:27","statements":[{"expression":{"id":4731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4723,"src":"20761:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4727,"id":4732,"nodeType":"Return","src":"20754:8:27"}]}},{"assignments":[4736],"declarations":[{"constant":false,"id":4736,"mutability":"mutable","name":"aa","nameLocation":"21712:2:27","nodeType":"VariableDeclaration","scope":4937,"src":"21704:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4735,"name":"uint256","nodeType":"ElementaryTypeName","src":"21704:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4738,"initialValue":{"id":4737,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4723,"src":"21717:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21704:14:27"},{"assignments":[4740],"declarations":[{"constant":false,"id":4740,"mutability":"mutable","name":"xn","nameLocation":"21740:2:27","nodeType":"VariableDeclaration","scope":4937,"src":"21732:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4739,"name":"uint256","nodeType":"ElementaryTypeName","src":"21732:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4742,"initialValue":{"hexValue":"31","id":4741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21745:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"21732:14:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4743,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"21765:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"id":4746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21772:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":4745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21777:3:27","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21772:8:27","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}}],"id":4747,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21771:10:27","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},"src":"21765:16:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4758,"nodeType":"IfStatement","src":"21761:92:27","trueBody":{"id":4757,"nodeType":"Block","src":"21783:70:27","statements":[{"expression":{"id":4751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4749,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"21801:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":4750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21808:3:27","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21801:10:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4752,"nodeType":"ExpressionStatement","src":"21801:10:27"},{"expression":{"id":4755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4753,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"21829:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3634","id":4754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21836:2:27","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21829:9:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4756,"nodeType":"ExpressionStatement","src":"21829:9:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4759,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"21870:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":4762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21877:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":4761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:27","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21877:7:27","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}}],"id":4763,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21876:9:27","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}},"src":"21870:15:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4774,"nodeType":"IfStatement","src":"21866:90:27","trueBody":{"id":4773,"nodeType":"Block","src":"21887:69:27","statements":[{"expression":{"id":4767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4765,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"21905:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":4766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21912:2:27","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21905:9:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4768,"nodeType":"ExpressionStatement","src":"21905:9:27"},{"expression":{"id":4771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4769,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"21932:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3332","id":4770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21939:2:27","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"21932:9:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4772,"nodeType":"ExpressionStatement","src":"21932:9:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4775,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"21973:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":4778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21980:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":4777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21985:2:27","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"21980:7:27","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":4779,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21979:9:27","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"21973:15:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4790,"nodeType":"IfStatement","src":"21969:90:27","trueBody":{"id":4789,"nodeType":"Block","src":"21990:69:27","statements":[{"expression":{"id":4783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4781,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"22008:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":4782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22015:2:27","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22008:9:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4784,"nodeType":"ExpressionStatement","src":"22008:9:27"},{"expression":{"id":4787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4785,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"22035:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3136","id":4786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22042:2:27","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22035:9:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4788,"nodeType":"ExpressionStatement","src":"22035:9:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4791,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"22076:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"id":4794,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22083:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":4793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22088:2:27","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22083:7:27","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}}],"id":4795,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22082:9:27","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}},"src":"22076:15:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4806,"nodeType":"IfStatement","src":"22072:89:27","trueBody":{"id":4805,"nodeType":"Block","src":"22093:68:27","statements":[{"expression":{"id":4799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4797,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"22111:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":4798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22118:2:27","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22111:9:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4800,"nodeType":"ExpressionStatement","src":"22111:9:27"},{"expression":{"id":4803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4801,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"22138:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"38","id":4802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22145:1:27","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22138:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4804,"nodeType":"ExpressionStatement","src":"22138:8:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4807,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"22178:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":4810,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22185:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":4809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22190:1:27","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22185:6:27","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":4811,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22184:8:27","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"src":"22178:14:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4822,"nodeType":"IfStatement","src":"22174:87:27","trueBody":{"id":4821,"nodeType":"Block","src":"22194:67:27","statements":[{"expression":{"id":4815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4813,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"22212:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":4814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22219:1:27","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22212:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4816,"nodeType":"ExpressionStatement","src":"22212:8:27"},{"expression":{"id":4819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4817,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"22238:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"34","id":4818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22245:1:27","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22238:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4820,"nodeType":"ExpressionStatement","src":"22238:8:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4823,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"22278:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"id":4826,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22285:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":4825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22290:1:27","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22285:6:27","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}}],"id":4827,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22284:8:27","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}},"src":"22278:14:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4838,"nodeType":"IfStatement","src":"22274:87:27","trueBody":{"id":4837,"nodeType":"Block","src":"22294:67:27","statements":[{"expression":{"id":4831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4829,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"22312:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":4830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22319:1:27","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22312:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4832,"nodeType":"ExpressionStatement","src":"22312:8:27"},{"expression":{"id":4835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4833,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"22338:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"32","id":4834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22345:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22338:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4836,"nodeType":"ExpressionStatement","src":"22338:8:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4839,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"22378:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"id":4842,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22385:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":4841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22390:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22385:6:27","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}}],"id":4843,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22384:8:27","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}},"src":"22378:14:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4850,"nodeType":"IfStatement","src":"22374:61:27","trueBody":{"id":4849,"nodeType":"Block","src":"22394:41:27","statements":[{"expression":{"id":4847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4845,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"22412:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"31","id":4846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22419:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22412:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4848,"nodeType":"ExpressionStatement","src":"22412:8:27"}]}},{"expression":{"id":4858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4851,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"22855:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":4852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22861:1:27","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4853,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"22865:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22861:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4855,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22860:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22872:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22860:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22855:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4859,"nodeType":"ExpressionStatement","src":"22855:18:27"},{"expression":{"id":4869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4860,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"24760:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4861,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"24766:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4862,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4723,"src":"24771:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4863,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"24775:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24771:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24766:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4866,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24765:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24782:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24765:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24760:23:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4870,"nodeType":"ExpressionStatement","src":"24760:23:27"},{"expression":{"id":4880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4871,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"24869:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4872,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"24875:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4873,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4723,"src":"24880:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4874,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"24884:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24880:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24875:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4877,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24874:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24891:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24874:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24869:23:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4881,"nodeType":"ExpressionStatement","src":"24869:23:27"},{"expression":{"id":4891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4882,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"24980:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4883,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"24986:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4884,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4723,"src":"24991:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4885,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"24995:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24991:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24986:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4888,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24985:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25002:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24985:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24980:23:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4892,"nodeType":"ExpressionStatement","src":"24980:23:27"},{"expression":{"id":4902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4893,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"25089:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4894,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"25095:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4895,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4723,"src":"25100:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4896,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"25104:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25100:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25095:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4899,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25094:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25111:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25094:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25089:23:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4903,"nodeType":"ExpressionStatement","src":"25089:23:27"},{"expression":{"id":4913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4904,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"25199:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4905,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"25205:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4906,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4723,"src":"25210:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4907,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"25214:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25210:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25205:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4910,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25204:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25221:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25204:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25199:23:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4914,"nodeType":"ExpressionStatement","src":"25199:23:27"},{"expression":{"id":4924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4915,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"25309:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4916,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"25315:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4917,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4723,"src":"25320:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4918,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"25324:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25320:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25315:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4921,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25314:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25331:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25314:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25309:23:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4925,"nodeType":"ExpressionStatement","src":"25309:23:27"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4926,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"25698:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4929,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"25719:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4930,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4723,"src":"25724:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4931,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"25728:2:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25724:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25719:11:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4927,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"25703:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":4928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25712:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"25703:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25703:28:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25698:33:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4727,"id":4936,"nodeType":"Return","src":"25691:40:27"}]}]},"documentation":{"id":4721,"nodeType":"StructuredDocumentation","src":"20270:292:27","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n using integer operations."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"20576:4:27","parameters":{"id":4724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4723,"mutability":"mutable","name":"a","nameLocation":"20589:1:27","nodeType":"VariableDeclaration","scope":4939,"src":"20581:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4722,"name":"uint256","nodeType":"ElementaryTypeName","src":"20581:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20580:11:27"},"returnParameters":{"id":4727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4726,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4939,"src":"20615:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4725,"name":"uint256","nodeType":"ElementaryTypeName","src":"20615:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20614:9:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4973,"nodeType":"FunctionDefinition","src":"25845:247:27","nodes":[],"body":{"id":4972,"nodeType":"Block","src":"25921:171:27","nodes":[],"statements":[{"id":4971,"nodeType":"UncheckedBlock","src":"25931:155:27","statements":[{"assignments":[4951],"declarations":[{"constant":false,"id":4951,"mutability":"mutable","name":"result","nameLocation":"25963:6:27","nodeType":"VariableDeclaration","scope":4971,"src":"25955:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4950,"name":"uint256","nodeType":"ElementaryTypeName","src":"25955:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4955,"initialValue":{"arguments":[{"id":4953,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4942,"src":"25977:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4952,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[4939,4973],"referencedDeclaration":4939,"src":"25972:4:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25972:7:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25955:24:27"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4956,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4951,"src":"26000:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4960,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4945,"src":"26042:8:27","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}],"id":4959,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5394,"src":"26025:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3786_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26025:26:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4962,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4951,"src":"26055:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4963,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4951,"src":"26064:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26055:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4965,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4942,"src":"26073:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26055:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26025:49:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4957,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"26009:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":4958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26018:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"26009:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26009:66:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26000:75:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4949,"id":4970,"nodeType":"Return","src":"25993:82:27"}]}]},"documentation":{"id":4940,"nodeType":"StructuredDocumentation","src":"25754:86:27","text":" @dev Calculates sqrt(a), following the selected rounding direction."},"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"25854:4:27","parameters":{"id":4946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4942,"mutability":"mutable","name":"a","nameLocation":"25867:1:27","nodeType":"VariableDeclaration","scope":4973,"src":"25859:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4941,"name":"uint256","nodeType":"ElementaryTypeName","src":"25859:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4945,"mutability":"mutable","name":"rounding","nameLocation":"25879:8:27","nodeType":"VariableDeclaration","scope":4973,"src":"25870:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"},"typeName":{"id":4944,"nodeType":"UserDefinedTypeName","pathNode":{"id":4943,"name":"Rounding","nameLocations":["25870:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":3786,"src":"25870:8:27"},"referencedDeclaration":3786,"src":"25870:8:27","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"25858:30:27"},"returnParameters":{"id":4949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4948,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4973,"src":"25912:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4947,"name":"uint256","nodeType":"ElementaryTypeName","src":"25912:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25911:9:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5064,"nodeType":"FunctionDefinition","src":"26222:2393:27","nodes":[],"body":{"id":5063,"nodeType":"Block","src":"26281:2334:27","nodes":[],"statements":[{"expression":{"id":4990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4981,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"26363:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4984,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4976,"src":"26383:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":4985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26387:34:27","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"26383:38:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4982,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"26367:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":4983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26376:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"26367:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26367:55:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":4988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26426:1:27","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"26367:60:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26363:64:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4991,"nodeType":"ExpressionStatement","src":"26363:64:27"},{"expression":{"id":5004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4992,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"26503:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4995,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4976,"src":"26525:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4996,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"26530:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26525:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4998,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26524:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":4999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26535:18:27","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"26524:29:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4993,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"26508:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":4994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26517:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"26508:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26508:46:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":5002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26558:1:27","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"26508:51:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26503:56:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5005,"nodeType":"ExpressionStatement","src":"26503:56:27"},{"expression":{"id":5018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5006,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"26634:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5009,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4976,"src":"26656:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":5010,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"26661:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26656:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5012,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26655:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":5013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26666:10:27","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"26655:21:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5007,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"26639:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":5008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26648:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"26639:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26639:38:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":5016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26681:1:27","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"26639:43:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26634:48:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5019,"nodeType":"ExpressionStatement","src":"26634:48:27"},{"expression":{"id":5032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5020,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"26757:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5023,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4976,"src":"26779:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":5024,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"26784:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26779:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5026,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26778:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":5027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26789:6:27","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"26778:17:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5021,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"26762:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":5022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26771:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"26762:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26762:34:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":5030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26800:1:27","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"26762:39:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26757:44:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5033,"nodeType":"ExpressionStatement","src":"26757:44:27"},{"expression":{"id":5046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5034,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"26874:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5037,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4976,"src":"26896:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":5038,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"26901:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26896:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5040,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26895:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":5041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26906:4:27","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"26895:15:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5035,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"26879:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":5036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26888:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"26879:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26879:32:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":5044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26915:1:27","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"26879:37:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26874:42:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5047,"nodeType":"ExpressionStatement","src":"26874:42:27"},{"expression":{"id":5060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5048,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"26988:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5051,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4976,"src":"27010:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":5052,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"27015:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27010:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5054,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27009:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866","id":5055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27020:3:27","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"27009:14:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5049,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"26993:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":5050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27002:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"26993:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26993:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":5058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27028:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"26993:36:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26988:41:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5061,"nodeType":"ExpressionStatement","src":"26988:41:27"},{"AST":{"nativeSrc":"28490:119:27","nodeType":"YulBlock","src":"28490:119:27","statements":[{"nativeSrc":"28504:95:27","nodeType":"YulAssignment","src":"28504:95:27","value":{"arguments":[{"name":"r","nativeSrc":"28512:1:27","nodeType":"YulIdentifier","src":"28512:1:27"},{"arguments":[{"arguments":[{"name":"r","nativeSrc":"28524:1:27","nodeType":"YulIdentifier","src":"28524:1:27"},{"name":"x","nativeSrc":"28527:1:27","nodeType":"YulIdentifier","src":"28527:1:27"}],"functionName":{"name":"shr","nativeSrc":"28520:3:27","nodeType":"YulIdentifier","src":"28520:3:27"},"nativeSrc":"28520:9:27","nodeType":"YulFunctionCall","src":"28520:9:27"},{"kind":"number","nativeSrc":"28531:66:27","nodeType":"YulLiteral","src":"28531:66:27","type":"","value":"0x0000010102020202030303030303030300000000000000000000000000000000"}],"functionName":{"name":"byte","nativeSrc":"28515:4:27","nodeType":"YulIdentifier","src":"28515:4:27"},"nativeSrc":"28515:83:27","nodeType":"YulFunctionCall","src":"28515:83:27"}],"functionName":{"name":"or","nativeSrc":"28509:2:27","nodeType":"YulIdentifier","src":"28509:2:27"},"nativeSrc":"28509:90:27","nodeType":"YulFunctionCall","src":"28509:90:27"},"variableNames":[{"name":"r","nativeSrc":"28504:1:27","nodeType":"YulIdentifier","src":"28504:1:27"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":4979,"isOffset":false,"isSlot":false,"src":"28504:1:27","valueSize":1},{"declaration":4979,"isOffset":false,"isSlot":false,"src":"28512:1:27","valueSize":1},{"declaration":4979,"isOffset":false,"isSlot":false,"src":"28524:1:27","valueSize":1},{"declaration":4976,"isOffset":false,"isSlot":false,"src":"28527:1:27","valueSize":1}],"flags":["memory-safe"],"id":5062,"nodeType":"InlineAssembly","src":"28465:144:27"}]},"documentation":{"id":4974,"nodeType":"StructuredDocumentation","src":"26098:119:27","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"26231:4:27","parameters":{"id":4977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4976,"mutability":"mutable","name":"x","nameLocation":"26244:1:27","nodeType":"VariableDeclaration","scope":5064,"src":"26236:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4975,"name":"uint256","nodeType":"ElementaryTypeName","src":"26236:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26235:11:27"},"returnParameters":{"id":4980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4979,"mutability":"mutable","name":"r","nameLocation":"26278:1:27","nodeType":"VariableDeclaration","scope":5064,"src":"26270:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4978,"name":"uint256","nodeType":"ElementaryTypeName","src":"26270:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26269:11:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5098,"nodeType":"FunctionDefinition","src":"28768:255:27","nodes":[],"body":{"id":5097,"nodeType":"Block","src":"28848:175:27","nodes":[],"statements":[{"id":5096,"nodeType":"UncheckedBlock","src":"28858:159:27","statements":[{"assignments":[5076],"declarations":[{"constant":false,"id":5076,"mutability":"mutable","name":"result","nameLocation":"28890:6:27","nodeType":"VariableDeclaration","scope":5096,"src":"28882:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5075,"name":"uint256","nodeType":"ElementaryTypeName","src":"28882:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5080,"initialValue":{"arguments":[{"id":5078,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5067,"src":"28904:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5077,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[5064,5098],"referencedDeclaration":5064,"src":"28899:4:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":5079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28899:11:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28882:28:27"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5081,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5076,"src":"28931:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5085,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5070,"src":"28973:8:27","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}],"id":5084,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5394,"src":"28956:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3786_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":5086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28956:26:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":5087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28986:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":5088,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5076,"src":"28991:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28986:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5090,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5067,"src":"29000:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28986:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28956:49:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5082,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"28940:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":5083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28949:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"28940:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28940:66:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28931:75:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5074,"id":5095,"nodeType":"Return","src":"28924:82:27"}]}]},"documentation":{"id":5065,"nodeType":"StructuredDocumentation","src":"28621:142:27","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"28777:4:27","parameters":{"id":5071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5067,"mutability":"mutable","name":"value","nameLocation":"28790:5:27","nodeType":"VariableDeclaration","scope":5098,"src":"28782:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5066,"name":"uint256","nodeType":"ElementaryTypeName","src":"28782:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5070,"mutability":"mutable","name":"rounding","nameLocation":"28806:8:27","nodeType":"VariableDeclaration","scope":5098,"src":"28797:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"},"typeName":{"id":5069,"nodeType":"UserDefinedTypeName","pathNode":{"id":5068,"name":"Rounding","nameLocations":["28797:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":3786,"src":"28797:8:27"},"referencedDeclaration":3786,"src":"28797:8:27","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"28781:34:27"},"returnParameters":{"id":5074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5073,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5098,"src":"28839:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5072,"name":"uint256","nodeType":"ElementaryTypeName","src":"28839:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28838:9:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5227,"nodeType":"FunctionDefinition","src":"29154:916:27","nodes":[],"body":{"id":5226,"nodeType":"Block","src":"29216:854:27","nodes":[],"statements":[{"assignments":[5107],"declarations":[{"constant":false,"id":5107,"mutability":"mutable","name":"result","nameLocation":"29234:6:27","nodeType":"VariableDeclaration","scope":5226,"src":"29226:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5106,"name":"uint256","nodeType":"ElementaryTypeName","src":"29226:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5109,"initialValue":{"hexValue":"30","id":5108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29243:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"29226:18:27"},{"id":5223,"nodeType":"UncheckedBlock","src":"29254:787:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5110,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"29282:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":5113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29291:2:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":5112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29297:2:27","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29291:8:27","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29282:17:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5126,"nodeType":"IfStatement","src":"29278:103:27","trueBody":{"id":5125,"nodeType":"Block","src":"29301:80:27","statements":[{"expression":{"id":5119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5115,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"29319:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":5118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29328:2:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":5117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29334:2:27","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29328:8:27","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29319:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5120,"nodeType":"ExpressionStatement","src":"29319:17:27"},{"expression":{"id":5123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5121,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5107,"src":"29354:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":5122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29364:2:27","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29354:12:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5124,"nodeType":"ExpressionStatement","src":"29354:12:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"29398:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":5130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29407:2:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":5129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29413:2:27","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29407:8:27","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29398:17:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5143,"nodeType":"IfStatement","src":"29394:103:27","trueBody":{"id":5142,"nodeType":"Block","src":"29417:80:27","statements":[{"expression":{"id":5136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5132,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"29435:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":5135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29444:2:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":5134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29450:2:27","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29444:8:27","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29435:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5137,"nodeType":"ExpressionStatement","src":"29435:17:27"},{"expression":{"id":5140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5138,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5107,"src":"29470:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":5139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29480:2:27","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29470:12:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5141,"nodeType":"ExpressionStatement","src":"29470:12:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5144,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"29514:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":5147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29523:2:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":5146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29529:2:27","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29523:8:27","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29514:17:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5160,"nodeType":"IfStatement","src":"29510:103:27","trueBody":{"id":5159,"nodeType":"Block","src":"29533:80:27","statements":[{"expression":{"id":5153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5149,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"29551:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":5152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29560:2:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":5151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29566:2:27","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29560:8:27","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29551:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5154,"nodeType":"ExpressionStatement","src":"29551:17:27"},{"expression":{"id":5157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5155,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5107,"src":"29586:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":5156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29596:2:27","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29586:12:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5158,"nodeType":"ExpressionStatement","src":"29586:12:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5161,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"29630:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":5164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29639:2:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":5163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29645:1:27","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29639:7:27","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29630:16:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5177,"nodeType":"IfStatement","src":"29626:100:27","trueBody":{"id":5176,"nodeType":"Block","src":"29648:78:27","statements":[{"expression":{"id":5170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5166,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"29666:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":5169,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29675:2:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":5168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29681:1:27","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29675:7:27","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29666:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5171,"nodeType":"ExpressionStatement","src":"29666:16:27"},{"expression":{"id":5174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5172,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5107,"src":"29700:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":5173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29710:1:27","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29700:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5175,"nodeType":"ExpressionStatement","src":"29700:11:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5178,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"29743:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":5181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29752:2:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":5180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29758:1:27","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29752:7:27","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"29743:16:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5194,"nodeType":"IfStatement","src":"29739:100:27","trueBody":{"id":5193,"nodeType":"Block","src":"29761:78:27","statements":[{"expression":{"id":5187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5183,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"29779:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":5186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29788:2:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":5185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29794:1:27","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29788:7:27","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"29779:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5188,"nodeType":"ExpressionStatement","src":"29779:16:27"},{"expression":{"id":5191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5189,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5107,"src":"29813:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":5190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29823:1:27","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29813:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5192,"nodeType":"ExpressionStatement","src":"29813:11:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"29856:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":5198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29865:2:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":5197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29871:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29865:7:27","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"29856:16:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5211,"nodeType":"IfStatement","src":"29852:100:27","trueBody":{"id":5210,"nodeType":"Block","src":"29874:78:27","statements":[{"expression":{"id":5204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5200,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"29892:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":5203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29901:2:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":5202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29907:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29901:7:27","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"29892:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5205,"nodeType":"ExpressionStatement","src":"29892:16:27"},{"expression":{"id":5208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5206,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5107,"src":"29926:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":5207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29936:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29926:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5209,"nodeType":"ExpressionStatement","src":"29926:11:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5212,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"29969:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":5215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29978:2:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":5214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29984:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"29978:7:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"29969:16:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5222,"nodeType":"IfStatement","src":"29965:66:27","trueBody":{"id":5221,"nodeType":"Block","src":"29987:44:27","statements":[{"expression":{"id":5219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5217,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5107,"src":"30005:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":5218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30015:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30005:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5220,"nodeType":"ExpressionStatement","src":"30005:11:27"}]}}]},{"expression":{"id":5224,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5107,"src":"30057:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5105,"id":5225,"nodeType":"Return","src":"30050:13:27"}]},"documentation":{"id":5099,"nodeType":"StructuredDocumentation","src":"29029:120:27","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"29163:5:27","parameters":{"id":5102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5101,"mutability":"mutable","name":"value","nameLocation":"29177:5:27","nodeType":"VariableDeclaration","scope":5227,"src":"29169:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5100,"name":"uint256","nodeType":"ElementaryTypeName","src":"29169:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29168:15:27"},"returnParameters":{"id":5105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5227,"src":"29207:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5103,"name":"uint256","nodeType":"ElementaryTypeName","src":"29207:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29206:9:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5261,"nodeType":"FunctionDefinition","src":"30224:258:27","nodes":[],"body":{"id":5260,"nodeType":"Block","src":"30305:177:27","nodes":[],"statements":[{"id":5259,"nodeType":"UncheckedBlock","src":"30315:161:27","statements":[{"assignments":[5239],"declarations":[{"constant":false,"id":5239,"mutability":"mutable","name":"result","nameLocation":"30347:6:27","nodeType":"VariableDeclaration","scope":5259,"src":"30339:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5238,"name":"uint256","nodeType":"ElementaryTypeName","src":"30339:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5243,"initialValue":{"arguments":[{"id":5241,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5230,"src":"30362:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5240,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[5227,5261],"referencedDeclaration":5227,"src":"30356:5:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":5242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30356:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30339:29:27"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5244,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5239,"src":"30389:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5248,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5233,"src":"30431:8:27","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}],"id":5247,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5394,"src":"30414:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3786_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":5249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30414:26:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30444:2:27","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":5251,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5239,"src":"30450:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30444:12:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5253,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5230,"src":"30459:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30444:20:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30414:50:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5245,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"30398:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":5246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30407:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"30398:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30398:67:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30389:76:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5237,"id":5258,"nodeType":"Return","src":"30382:83:27"}]}]},"documentation":{"id":5228,"nodeType":"StructuredDocumentation","src":"30076:143:27","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"30233:5:27","parameters":{"id":5234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5230,"mutability":"mutable","name":"value","nameLocation":"30247:5:27","nodeType":"VariableDeclaration","scope":5261,"src":"30239:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5229,"name":"uint256","nodeType":"ElementaryTypeName","src":"30239:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5233,"mutability":"mutable","name":"rounding","nameLocation":"30263:8:27","nodeType":"VariableDeclaration","scope":5261,"src":"30254:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"},"typeName":{"id":5232,"nodeType":"UserDefinedTypeName","pathNode":{"id":5231,"name":"Rounding","nameLocations":["30254:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":3786,"src":"30254:8:27"},"referencedDeclaration":3786,"src":"30254:8:27","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"30238:34:27"},"returnParameters":{"id":5237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5236,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5261,"src":"30296:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5235,"name":"uint256","nodeType":"ElementaryTypeName","src":"30296:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30295:9:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5338,"nodeType":"FunctionDefinition","src":"30739:736:27","nodes":[],"body":{"id":5337,"nodeType":"Block","src":"30800:675:27","nodes":[],"statements":[{"expression":{"id":5278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5269,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5267,"src":"30882:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5272,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5264,"src":"30902:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":5273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30906:34:27","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"30902:38:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5270,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"30886:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":5271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30895:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"30886:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30886:55:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":5276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30945:1:27","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"30886:60:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30882:64:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5279,"nodeType":"ExpressionStatement","src":"30882:64:27"},{"expression":{"id":5292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5280,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5267,"src":"31022:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5283,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5264,"src":"31044:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":5284,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5267,"src":"31049:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31044:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5286,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31043:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":5287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31054:18:27","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"31043:29:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5281,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"31027:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":5282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31036:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"31027:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31027:46:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":5290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31077:1:27","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"31027:51:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31022:56:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5293,"nodeType":"ExpressionStatement","src":"31022:56:27"},{"expression":{"id":5306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5294,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5267,"src":"31153:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5297,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5264,"src":"31175:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":5298,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5267,"src":"31180:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31175:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5300,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31174:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":5301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31185:10:27","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"31174:21:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5295,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"31158:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":5296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31167:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"31158:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31158:38:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":5304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31200:1:27","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"31158:43:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31153:48:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5307,"nodeType":"ExpressionStatement","src":"31153:48:27"},{"expression":{"id":5320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5308,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5267,"src":"31276:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5311,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5264,"src":"31298:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":5312,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5267,"src":"31303:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31298:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5314,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31297:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":5315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31308:6:27","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"31297:17:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5309,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"31281:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":5310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31290:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"31281:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31281:34:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":5318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31319:1:27","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"31281:39:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31276:44:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5321,"nodeType":"ExpressionStatement","src":"31276:44:27"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5322,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5267,"src":"31426:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"33","id":5323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31431:1:27","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31426:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5325,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31425:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5328,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5264,"src":"31453:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":5329,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5267,"src":"31458:1:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31453:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5331,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31452:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":5332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31463:4:27","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"31452:15:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5326,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"31436:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":5327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31445:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"31436:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31436:32:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31425:43:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5268,"id":5336,"nodeType":"Return","src":"31418:50:27"}]},"documentation":{"id":5262,"nodeType":"StructuredDocumentation","src":"30488:246:27","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"30748:6:27","parameters":{"id":5265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5264,"mutability":"mutable","name":"x","nameLocation":"30763:1:27","nodeType":"VariableDeclaration","scope":5338,"src":"30755:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5263,"name":"uint256","nodeType":"ElementaryTypeName","src":"30755:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30754:11:27"},"returnParameters":{"id":5268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5267,"mutability":"mutable","name":"r","nameLocation":"30797:1:27","nodeType":"VariableDeclaration","scope":5338,"src":"30789:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5266,"name":"uint256","nodeType":"ElementaryTypeName","src":"30789:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30788:11:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5375,"nodeType":"FunctionDefinition","src":"31630:266:27","nodes":[],"body":{"id":5374,"nodeType":"Block","src":"31712:184:27","nodes":[],"statements":[{"id":5373,"nodeType":"UncheckedBlock","src":"31722:168:27","statements":[{"assignments":[5350],"declarations":[{"constant":false,"id":5350,"mutability":"mutable","name":"result","nameLocation":"31754:6:27","nodeType":"VariableDeclaration","scope":5373,"src":"31746:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5349,"name":"uint256","nodeType":"ElementaryTypeName","src":"31746:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5354,"initialValue":{"arguments":[{"id":5352,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"31770:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5351,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[5338,5375],"referencedDeclaration":5338,"src":"31763:6:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":5353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31763:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31746:30:27"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5355,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5350,"src":"31797:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5359,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5344,"src":"31839:8:27","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}],"id":5358,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5394,"src":"31822:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3786_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":5360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31822:26:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":5361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31852:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5362,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5350,"src":"31858:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":5363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31868:1:27","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31858:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5365,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31857:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31852:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"31873:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31852:26:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31822:56:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5356,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"31806:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":5357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31815:6:27","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":7159,"src":"31806:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31806:73:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31797:82:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5348,"id":5372,"nodeType":"Return","src":"31790:89:27"}]}]},"documentation":{"id":5339,"nodeType":"StructuredDocumentation","src":"31481:144:27","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"31639:6:27","parameters":{"id":5345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5341,"mutability":"mutable","name":"value","nameLocation":"31654:5:27","nodeType":"VariableDeclaration","scope":5375,"src":"31646:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5340,"name":"uint256","nodeType":"ElementaryTypeName","src":"31646:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5344,"mutability":"mutable","name":"rounding","nameLocation":"31670:8:27","nodeType":"VariableDeclaration","scope":5375,"src":"31661:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"},"typeName":{"id":5343,"nodeType":"UserDefinedTypeName","pathNode":{"id":5342,"name":"Rounding","nameLocations":["31661:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":3786,"src":"31661:8:27"},"referencedDeclaration":3786,"src":"31661:8:27","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"31645:34:27"},"returnParameters":{"id":5348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5347,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5375,"src":"31703:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5346,"name":"uint256","nodeType":"ElementaryTypeName","src":"31703:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31702:9:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5394,"nodeType":"FunctionDefinition","src":"32020:122:27","nodes":[],"body":{"id":5393,"nodeType":"Block","src":"32094:48:27","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5386,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5379,"src":"32117:8:27","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}],"id":5385,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32111:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":5384,"name":"uint8","nodeType":"ElementaryTypeName","src":"32111:5:27","typeDescriptions":{}}},"id":5387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32111:15:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":5388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32129:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"32111:19:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":5390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32134:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"32111:24:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5383,"id":5392,"nodeType":"Return","src":"32104:31:27"}]},"documentation":{"id":5376,"nodeType":"StructuredDocumentation","src":"31902:113:27","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"32029:16:27","parameters":{"id":5380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5379,"mutability":"mutable","name":"rounding","nameLocation":"32055:8:27","nodeType":"VariableDeclaration","scope":5394,"src":"32046:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"},"typeName":{"id":5378,"nodeType":"UserDefinedTypeName","pathNode":{"id":5377,"name":"Rounding","nameLocations":["32046:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":3786,"src":"32046:8:27"},"referencedDeclaration":3786,"src":"32046:8:27","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3786","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"32045:19:27"},"returnParameters":{"id":5383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5382,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5394,"src":"32088:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5381,"name":"bool","nodeType":"ElementaryTypeName","src":"32088:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"32087:6:27"},"scope":5395,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":3781,"nodeType":"StructuredDocumentation","src":"207:73:27","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"linearizedBaseContracts":[5395],"name":"Math","nameLocation":"289:4:27","scope":5396,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"id":28,"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol","id":7161,"exportedSymbols":{"SafeCast":[7160]},"nodeType":"SourceUnit","src":"192:34751:28","nodes":[{"id":5397,"nodeType":"PragmaDirective","src":"192:24:28","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":7160,"nodeType":"ContractDefinition","src":"769:34173:28","nodes":[{"id":5405,"nodeType":"ErrorDefinition","src":"865:64:28","nodes":[],"documentation":{"id":5399,"nodeType":"StructuredDocumentation","src":"792:68:28","text":" @dev Value doesn't fit in an uint of `bits` size."},"errorSelector":"6dfcc650","name":"SafeCastOverflowedUintDowncast","nameLocation":"871:30:28","parameters":{"id":5404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5401,"mutability":"mutable","name":"bits","nameLocation":"908:4:28","nodeType":"VariableDeclaration","scope":5405,"src":"902:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5400,"name":"uint8","nodeType":"ElementaryTypeName","src":"902:5:28","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5403,"mutability":"mutable","name":"value","nameLocation":"922:5:28","nodeType":"VariableDeclaration","scope":5405,"src":"914:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5402,"name":"uint256","nodeType":"ElementaryTypeName","src":"914:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"901:27:28"}},{"id":5410,"nodeType":"ErrorDefinition","src":"1015:48:28","nodes":[],"documentation":{"id":5406,"nodeType":"StructuredDocumentation","src":"935:75:28","text":" @dev An int value doesn't fit in an uint of `bits` size."},"errorSelector":"a8ce4432","name":"SafeCastOverflowedIntToUint","nameLocation":"1021:27:28","parameters":{"id":5409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5408,"mutability":"mutable","name":"value","nameLocation":"1056:5:28","nodeType":"VariableDeclaration","scope":5410,"src":"1049:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5407,"name":"int256","nodeType":"ElementaryTypeName","src":"1049:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1048:14:28"}},{"id":5417,"nodeType":"ErrorDefinition","src":"1141:62:28","nodes":[],"documentation":{"id":5411,"nodeType":"StructuredDocumentation","src":"1069:67:28","text":" @dev Value doesn't fit in an int of `bits` size."},"errorSelector":"327269a7","name":"SafeCastOverflowedIntDowncast","nameLocation":"1147:29:28","parameters":{"id":5416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5413,"mutability":"mutable","name":"bits","nameLocation":"1183:4:28","nodeType":"VariableDeclaration","scope":5417,"src":"1177:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5412,"name":"uint8","nodeType":"ElementaryTypeName","src":"1177:5:28","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5415,"mutability":"mutable","name":"value","nameLocation":"1196:5:28","nodeType":"VariableDeclaration","scope":5417,"src":"1189:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5414,"name":"int256","nodeType":"ElementaryTypeName","src":"1189:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1176:26:28"}},{"id":5422,"nodeType":"ErrorDefinition","src":"1289:49:28","nodes":[],"documentation":{"id":5418,"nodeType":"StructuredDocumentation","src":"1209:75:28","text":" @dev An uint value doesn't fit in an int of `bits` size."},"errorSelector":"24775e06","name":"SafeCastOverflowedUintToInt","nameLocation":"1295:27:28","parameters":{"id":5421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5420,"mutability":"mutable","name":"value","nameLocation":"1331:5:28","nodeType":"VariableDeclaration","scope":5422,"src":"1323:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5419,"name":"uint256","nodeType":"ElementaryTypeName","src":"1323:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1322:15:28"}},{"id":5450,"nodeType":"FunctionDefinition","src":"1629:218:28","nodes":[],"body":{"id":5449,"nodeType":"Block","src":"1695:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5430,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5425,"src":"1709:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1722:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":5432,"name":"uint248","nodeType":"ElementaryTypeName","src":"1722:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"}],"id":5431,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1717:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1717:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint248","typeString":"type(uint248)"}},"id":5435,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1731:3:28","memberName":"max","nodeType":"MemberAccess","src":"1717:17:28","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"1709:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5443,"nodeType":"IfStatement","src":"1705:105:28","trueBody":{"id":5442,"nodeType":"Block","src":"1736:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":5438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1788:3:28","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":5439,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5425,"src":"1793:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5437,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"1757:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1757:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5441,"nodeType":"RevertStatement","src":"1750:49:28"}]}},{"expression":{"arguments":[{"id":5446,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5425,"src":"1834:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1826:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":5444,"name":"uint248","nodeType":"ElementaryTypeName","src":"1826:7:28","typeDescriptions":{}}},"id":5447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1826:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"functionReturnParameters":5429,"id":5448,"nodeType":"Return","src":"1819:21:28"}]},"documentation":{"id":5423,"nodeType":"StructuredDocumentation","src":"1344:280:28","text":" @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint248","nameLocation":"1638:9:28","parameters":{"id":5426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5425,"mutability":"mutable","name":"value","nameLocation":"1656:5:28","nodeType":"VariableDeclaration","scope":5450,"src":"1648:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5424,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1647:15:28"},"returnParameters":{"id":5429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5428,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5450,"src":"1686:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"},"typeName":{"id":5427,"name":"uint248","nodeType":"ElementaryTypeName","src":"1686:7:28","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"visibility":"internal"}],"src":"1685:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5478,"nodeType":"FunctionDefinition","src":"2138:218:28","nodes":[],"body":{"id":5477,"nodeType":"Block","src":"2204:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5458,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5453,"src":"2218:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5461,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2231:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":5460,"name":"uint240","nodeType":"ElementaryTypeName","src":"2231:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"}],"id":5459,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2226:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2226:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint240","typeString":"type(uint240)"}},"id":5463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2240:3:28","memberName":"max","nodeType":"MemberAccess","src":"2226:17:28","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"src":"2218:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5471,"nodeType":"IfStatement","src":"2214:105:28","trueBody":{"id":5470,"nodeType":"Block","src":"2245:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":5466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:3:28","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":5467,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5453,"src":"2302:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5465,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"2266:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2266:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5469,"nodeType":"RevertStatement","src":"2259:49:28"}]}},{"expression":{"arguments":[{"id":5474,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5453,"src":"2343:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5473,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2335:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":5472,"name":"uint240","nodeType":"ElementaryTypeName","src":"2335:7:28","typeDescriptions":{}}},"id":5475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2335:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"functionReturnParameters":5457,"id":5476,"nodeType":"Return","src":"2328:21:28"}]},"documentation":{"id":5451,"nodeType":"StructuredDocumentation","src":"1853:280:28","text":" @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint240","nameLocation":"2147:9:28","parameters":{"id":5454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5453,"mutability":"mutable","name":"value","nameLocation":"2165:5:28","nodeType":"VariableDeclaration","scope":5478,"src":"2157:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5452,"name":"uint256","nodeType":"ElementaryTypeName","src":"2157:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2156:15:28"},"returnParameters":{"id":5457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5478,"src":"2195:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":5455,"name":"uint240","nodeType":"ElementaryTypeName","src":"2195:7:28","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"}],"src":"2194:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5506,"nodeType":"FunctionDefinition","src":"2647:218:28","nodes":[],"body":{"id":5505,"nodeType":"Block","src":"2713:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5486,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5481,"src":"2727:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5489,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2740:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":5488,"name":"uint232","nodeType":"ElementaryTypeName","src":"2740:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"}],"id":5487,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2735:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2735:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint232","typeString":"type(uint232)"}},"id":5491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2749:3:28","memberName":"max","nodeType":"MemberAccess","src":"2735:17:28","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"src":"2727:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5499,"nodeType":"IfStatement","src":"2723:105:28","trueBody":{"id":5498,"nodeType":"Block","src":"2754:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":5494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2806:3:28","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":5495,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5481,"src":"2811:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5493,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"2775:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2775:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5497,"nodeType":"RevertStatement","src":"2768:49:28"}]}},{"expression":{"arguments":[{"id":5502,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5481,"src":"2852:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2844:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":5500,"name":"uint232","nodeType":"ElementaryTypeName","src":"2844:7:28","typeDescriptions":{}}},"id":5503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2844:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"functionReturnParameters":5485,"id":5504,"nodeType":"Return","src":"2837:21:28"}]},"documentation":{"id":5479,"nodeType":"StructuredDocumentation","src":"2362:280:28","text":" @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint232","nameLocation":"2656:9:28","parameters":{"id":5482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5481,"mutability":"mutable","name":"value","nameLocation":"2674:5:28","nodeType":"VariableDeclaration","scope":5506,"src":"2666:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5480,"name":"uint256","nodeType":"ElementaryTypeName","src":"2666:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:15:28"},"returnParameters":{"id":5485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5484,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5506,"src":"2704:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"},"typeName":{"id":5483,"name":"uint232","nodeType":"ElementaryTypeName","src":"2704:7:28","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"visibility":"internal"}],"src":"2703:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5534,"nodeType":"FunctionDefinition","src":"3156:218:28","nodes":[],"body":{"id":5533,"nodeType":"Block","src":"3222:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5514,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5509,"src":"3236:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3249:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":5516,"name":"uint224","nodeType":"ElementaryTypeName","src":"3249:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":5515,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3244:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3244:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":5519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3258:3:28","memberName":"max","nodeType":"MemberAccess","src":"3244:17:28","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3236:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5527,"nodeType":"IfStatement","src":"3232:105:28","trueBody":{"id":5526,"nodeType":"Block","src":"3263:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":5522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3315:3:28","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":5523,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5509,"src":"3320:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5521,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"3284:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3284:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5525,"nodeType":"RevertStatement","src":"3277:49:28"}]}},{"expression":{"arguments":[{"id":5530,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5509,"src":"3361:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5529,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3353:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":5528,"name":"uint224","nodeType":"ElementaryTypeName","src":"3353:7:28","typeDescriptions":{}}},"id":5531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3353:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":5513,"id":5532,"nodeType":"Return","src":"3346:21:28"}]},"documentation":{"id":5507,"nodeType":"StructuredDocumentation","src":"2871:280:28","text":" @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint224","nameLocation":"3165:9:28","parameters":{"id":5510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5509,"mutability":"mutable","name":"value","nameLocation":"3183:5:28","nodeType":"VariableDeclaration","scope":5534,"src":"3175:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5508,"name":"uint256","nodeType":"ElementaryTypeName","src":"3175:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3174:15:28"},"returnParameters":{"id":5513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5512,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5534,"src":"3213:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5511,"name":"uint224","nodeType":"ElementaryTypeName","src":"3213:7:28","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3212:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5562,"nodeType":"FunctionDefinition","src":"3665:218:28","nodes":[],"body":{"id":5561,"nodeType":"Block","src":"3731:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5542,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5537,"src":"3745:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3758:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":5544,"name":"uint216","nodeType":"ElementaryTypeName","src":"3758:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"}],"id":5543,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3753:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3753:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint216","typeString":"type(uint216)"}},"id":5547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3767:3:28","memberName":"max","nodeType":"MemberAccess","src":"3753:17:28","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"src":"3745:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5555,"nodeType":"IfStatement","src":"3741:105:28","trueBody":{"id":5554,"nodeType":"Block","src":"3772:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":5550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3824:3:28","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":5551,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5537,"src":"3829:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5549,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"3793:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3793:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5553,"nodeType":"RevertStatement","src":"3786:49:28"}]}},{"expression":{"arguments":[{"id":5558,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5537,"src":"3870:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5557,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3862:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":5556,"name":"uint216","nodeType":"ElementaryTypeName","src":"3862:7:28","typeDescriptions":{}}},"id":5559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3862:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"functionReturnParameters":5541,"id":5560,"nodeType":"Return","src":"3855:21:28"}]},"documentation":{"id":5535,"nodeType":"StructuredDocumentation","src":"3380:280:28","text":" @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint216","nameLocation":"3674:9:28","parameters":{"id":5538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5537,"mutability":"mutable","name":"value","nameLocation":"3692:5:28","nodeType":"VariableDeclaration","scope":5562,"src":"3684:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5536,"name":"uint256","nodeType":"ElementaryTypeName","src":"3684:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3683:15:28"},"returnParameters":{"id":5541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5540,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5562,"src":"3722:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"},"typeName":{"id":5539,"name":"uint216","nodeType":"ElementaryTypeName","src":"3722:7:28","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"visibility":"internal"}],"src":"3721:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5590,"nodeType":"FunctionDefinition","src":"4174:218:28","nodes":[],"body":{"id":5589,"nodeType":"Block","src":"4240:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5570,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5565,"src":"4254:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4267:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":5572,"name":"uint208","nodeType":"ElementaryTypeName","src":"4267:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"}],"id":5571,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4262:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4262:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint208","typeString":"type(uint208)"}},"id":5575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4276:3:28","memberName":"max","nodeType":"MemberAccess","src":"4262:17:28","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"4254:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5583,"nodeType":"IfStatement","src":"4250:105:28","trueBody":{"id":5582,"nodeType":"Block","src":"4281:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":5578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4333:3:28","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":5579,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5565,"src":"4338:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5577,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"4302:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4302:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5581,"nodeType":"RevertStatement","src":"4295:49:28"}]}},{"expression":{"arguments":[{"id":5586,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5565,"src":"4379:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4371:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":5584,"name":"uint208","nodeType":"ElementaryTypeName","src":"4371:7:28","typeDescriptions":{}}},"id":5587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4371:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":5569,"id":5588,"nodeType":"Return","src":"4364:21:28"}]},"documentation":{"id":5563,"nodeType":"StructuredDocumentation","src":"3889:280:28","text":" @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint208","nameLocation":"4183:9:28","parameters":{"id":5566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5565,"mutability":"mutable","name":"value","nameLocation":"4201:5:28","nodeType":"VariableDeclaration","scope":5590,"src":"4193:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5564,"name":"uint256","nodeType":"ElementaryTypeName","src":"4193:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4192:15:28"},"returnParameters":{"id":5569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5568,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5590,"src":"4231:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":5567,"name":"uint208","nodeType":"ElementaryTypeName","src":"4231:7:28","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"4230:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5618,"nodeType":"FunctionDefinition","src":"4683:218:28","nodes":[],"body":{"id":5617,"nodeType":"Block","src":"4749:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5598,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5593,"src":"4763:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4776:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":5600,"name":"uint200","nodeType":"ElementaryTypeName","src":"4776:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"}],"id":5599,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4771:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4771:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint200","typeString":"type(uint200)"}},"id":5603,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4785:3:28","memberName":"max","nodeType":"MemberAccess","src":"4771:17:28","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"src":"4763:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5611,"nodeType":"IfStatement","src":"4759:105:28","trueBody":{"id":5610,"nodeType":"Block","src":"4790:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":5606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4842:3:28","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":5607,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5593,"src":"4847:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5605,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"4811:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4811:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5609,"nodeType":"RevertStatement","src":"4804:49:28"}]}},{"expression":{"arguments":[{"id":5614,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5593,"src":"4888:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5613,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4880:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":5612,"name":"uint200","nodeType":"ElementaryTypeName","src":"4880:7:28","typeDescriptions":{}}},"id":5615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4880:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"functionReturnParameters":5597,"id":5616,"nodeType":"Return","src":"4873:21:28"}]},"documentation":{"id":5591,"nodeType":"StructuredDocumentation","src":"4398:280:28","text":" @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint200","nameLocation":"4692:9:28","parameters":{"id":5594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5593,"mutability":"mutable","name":"value","nameLocation":"4710:5:28","nodeType":"VariableDeclaration","scope":5618,"src":"4702:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5592,"name":"uint256","nodeType":"ElementaryTypeName","src":"4702:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4701:15:28"},"returnParameters":{"id":5597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5596,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5618,"src":"4740:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"},"typeName":{"id":5595,"name":"uint200","nodeType":"ElementaryTypeName","src":"4740:7:28","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"visibility":"internal"}],"src":"4739:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5646,"nodeType":"FunctionDefinition","src":"5192:218:28","nodes":[],"body":{"id":5645,"nodeType":"Block","src":"5258:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5626,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5621,"src":"5272:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5629,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5285:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":5628,"name":"uint192","nodeType":"ElementaryTypeName","src":"5285:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"}],"id":5627,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5280:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5280:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint192","typeString":"type(uint192)"}},"id":5631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5294:3:28","memberName":"max","nodeType":"MemberAccess","src":"5280:17:28","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"5272:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5639,"nodeType":"IfStatement","src":"5268:105:28","trueBody":{"id":5638,"nodeType":"Block","src":"5299:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":5634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5351:3:28","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":5635,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5621,"src":"5356:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5633,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"5320:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5637,"nodeType":"RevertStatement","src":"5313:49:28"}]}},{"expression":{"arguments":[{"id":5642,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5621,"src":"5397:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5641,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5389:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":5640,"name":"uint192","nodeType":"ElementaryTypeName","src":"5389:7:28","typeDescriptions":{}}},"id":5643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5389:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"functionReturnParameters":5625,"id":5644,"nodeType":"Return","src":"5382:21:28"}]},"documentation":{"id":5619,"nodeType":"StructuredDocumentation","src":"4907:280:28","text":" @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint192","nameLocation":"5201:9:28","parameters":{"id":5622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5621,"mutability":"mutable","name":"value","nameLocation":"5219:5:28","nodeType":"VariableDeclaration","scope":5646,"src":"5211:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5620,"name":"uint256","nodeType":"ElementaryTypeName","src":"5211:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5210:15:28"},"returnParameters":{"id":5625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5624,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5646,"src":"5249:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":5623,"name":"uint192","nodeType":"ElementaryTypeName","src":"5249:7:28","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"5248:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5674,"nodeType":"FunctionDefinition","src":"5701:218:28","nodes":[],"body":{"id":5673,"nodeType":"Block","src":"5767:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5654,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5649,"src":"5781:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5794:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":5656,"name":"uint184","nodeType":"ElementaryTypeName","src":"5794:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"}],"id":5655,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5789:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5789:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint184","typeString":"type(uint184)"}},"id":5659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5803:3:28","memberName":"max","nodeType":"MemberAccess","src":"5789:17:28","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"src":"5781:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5667,"nodeType":"IfStatement","src":"5777:105:28","trueBody":{"id":5666,"nodeType":"Block","src":"5808:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":5662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5860:3:28","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":5663,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5649,"src":"5865:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5661,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"5829:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5829:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5665,"nodeType":"RevertStatement","src":"5822:49:28"}]}},{"expression":{"arguments":[{"id":5670,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5649,"src":"5906:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5669,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5898:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":5668,"name":"uint184","nodeType":"ElementaryTypeName","src":"5898:7:28","typeDescriptions":{}}},"id":5671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5898:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"functionReturnParameters":5653,"id":5672,"nodeType":"Return","src":"5891:21:28"}]},"documentation":{"id":5647,"nodeType":"StructuredDocumentation","src":"5416:280:28","text":" @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint184","nameLocation":"5710:9:28","parameters":{"id":5650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5649,"mutability":"mutable","name":"value","nameLocation":"5728:5:28","nodeType":"VariableDeclaration","scope":5674,"src":"5720:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5648,"name":"uint256","nodeType":"ElementaryTypeName","src":"5720:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5719:15:28"},"returnParameters":{"id":5653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5652,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5674,"src":"5758:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"},"typeName":{"id":5651,"name":"uint184","nodeType":"ElementaryTypeName","src":"5758:7:28","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"visibility":"internal"}],"src":"5757:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5702,"nodeType":"FunctionDefinition","src":"6210:218:28","nodes":[],"body":{"id":5701,"nodeType":"Block","src":"6276:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5682,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5677,"src":"6290:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6303:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":5684,"name":"uint176","nodeType":"ElementaryTypeName","src":"6303:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"}],"id":5683,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6298:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6298:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint176","typeString":"type(uint176)"}},"id":5687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6312:3:28","memberName":"max","nodeType":"MemberAccess","src":"6298:17:28","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6290:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5695,"nodeType":"IfStatement","src":"6286:105:28","trueBody":{"id":5694,"nodeType":"Block","src":"6317:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":5690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6369:3:28","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":5691,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5677,"src":"6374:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5689,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"6338:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6338:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5693,"nodeType":"RevertStatement","src":"6331:49:28"}]}},{"expression":{"arguments":[{"id":5698,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5677,"src":"6415:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6407:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":5696,"name":"uint176","nodeType":"ElementaryTypeName","src":"6407:7:28","typeDescriptions":{}}},"id":5699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6407:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"functionReturnParameters":5681,"id":5700,"nodeType":"Return","src":"6400:21:28"}]},"documentation":{"id":5675,"nodeType":"StructuredDocumentation","src":"5925:280:28","text":" @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint176","nameLocation":"6219:9:28","parameters":{"id":5678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5677,"mutability":"mutable","name":"value","nameLocation":"6237:5:28","nodeType":"VariableDeclaration","scope":5702,"src":"6229:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5676,"name":"uint256","nodeType":"ElementaryTypeName","src":"6229:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6228:15:28"},"returnParameters":{"id":5681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5702,"src":"6267:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":5679,"name":"uint176","nodeType":"ElementaryTypeName","src":"6267:7:28","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"visibility":"internal"}],"src":"6266:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5730,"nodeType":"FunctionDefinition","src":"6719:218:28","nodes":[],"body":{"id":5729,"nodeType":"Block","src":"6785:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5710,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5705,"src":"6799:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6812:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":5712,"name":"uint168","nodeType":"ElementaryTypeName","src":"6812:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"}],"id":5711,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6807:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6807:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint168","typeString":"type(uint168)"}},"id":5715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6821:3:28","memberName":"max","nodeType":"MemberAccess","src":"6807:17:28","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"src":"6799:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5723,"nodeType":"IfStatement","src":"6795:105:28","trueBody":{"id":5722,"nodeType":"Block","src":"6826:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":5718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6878:3:28","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":5719,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5705,"src":"6883:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5717,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"6847:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6847:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5721,"nodeType":"RevertStatement","src":"6840:49:28"}]}},{"expression":{"arguments":[{"id":5726,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5705,"src":"6924:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6916:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":5724,"name":"uint168","nodeType":"ElementaryTypeName","src":"6916:7:28","typeDescriptions":{}}},"id":5727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6916:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"functionReturnParameters":5709,"id":5728,"nodeType":"Return","src":"6909:21:28"}]},"documentation":{"id":5703,"nodeType":"StructuredDocumentation","src":"6434:280:28","text":" @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint168","nameLocation":"6728:9:28","parameters":{"id":5706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5705,"mutability":"mutable","name":"value","nameLocation":"6746:5:28","nodeType":"VariableDeclaration","scope":5730,"src":"6738:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5704,"name":"uint256","nodeType":"ElementaryTypeName","src":"6738:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6737:15:28"},"returnParameters":{"id":5709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5730,"src":"6776:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"},"typeName":{"id":5707,"name":"uint168","nodeType":"ElementaryTypeName","src":"6776:7:28","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"visibility":"internal"}],"src":"6775:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5758,"nodeType":"FunctionDefinition","src":"7228:218:28","nodes":[],"body":{"id":5757,"nodeType":"Block","src":"7294:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5738,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5733,"src":"7308:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7321:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5740,"name":"uint160","nodeType":"ElementaryTypeName","src":"7321:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":5739,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7316:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7316:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":5743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7330:3:28","memberName":"max","nodeType":"MemberAccess","src":"7316:17:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7308:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5751,"nodeType":"IfStatement","src":"7304:105:28","trueBody":{"id":5750,"nodeType":"Block","src":"7335:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":5746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7387:3:28","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":5747,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5733,"src":"7392:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5745,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"7356:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7356:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5749,"nodeType":"RevertStatement","src":"7349:49:28"}]}},{"expression":{"arguments":[{"id":5754,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5733,"src":"7433:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5753,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7425:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5752,"name":"uint160","nodeType":"ElementaryTypeName","src":"7425:7:28","typeDescriptions":{}}},"id":5755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7425:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":5737,"id":5756,"nodeType":"Return","src":"7418:21:28"}]},"documentation":{"id":5731,"nodeType":"StructuredDocumentation","src":"6943:280:28","text":" @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"7237:9:28","parameters":{"id":5734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5733,"mutability":"mutable","name":"value","nameLocation":"7255:5:28","nodeType":"VariableDeclaration","scope":5758,"src":"7247:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5732,"name":"uint256","nodeType":"ElementaryTypeName","src":"7247:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7246:15:28"},"returnParameters":{"id":5737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5736,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5758,"src":"7285:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5735,"name":"uint160","nodeType":"ElementaryTypeName","src":"7285:7:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7284:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5786,"nodeType":"FunctionDefinition","src":"7737:218:28","nodes":[],"body":{"id":5785,"nodeType":"Block","src":"7803:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5766,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5761,"src":"7817:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7830:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":5768,"name":"uint152","nodeType":"ElementaryTypeName","src":"7830:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"}],"id":5767,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7825:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7825:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint152","typeString":"type(uint152)"}},"id":5771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7839:3:28","memberName":"max","nodeType":"MemberAccess","src":"7825:17:28","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"src":"7817:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5779,"nodeType":"IfStatement","src":"7813:105:28","trueBody":{"id":5778,"nodeType":"Block","src":"7844:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":5774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7896:3:28","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":5775,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5761,"src":"7901:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5773,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"7865:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7865:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5777,"nodeType":"RevertStatement","src":"7858:49:28"}]}},{"expression":{"arguments":[{"id":5782,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5761,"src":"7942:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5781,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7934:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":5780,"name":"uint152","nodeType":"ElementaryTypeName","src":"7934:7:28","typeDescriptions":{}}},"id":5783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7934:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"functionReturnParameters":5765,"id":5784,"nodeType":"Return","src":"7927:21:28"}]},"documentation":{"id":5759,"nodeType":"StructuredDocumentation","src":"7452:280:28","text":" @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint152","nameLocation":"7746:9:28","parameters":{"id":5762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5761,"mutability":"mutable","name":"value","nameLocation":"7764:5:28","nodeType":"VariableDeclaration","scope":5786,"src":"7756:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5760,"name":"uint256","nodeType":"ElementaryTypeName","src":"7756:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7755:15:28"},"returnParameters":{"id":5765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5786,"src":"7794:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"},"typeName":{"id":5763,"name":"uint152","nodeType":"ElementaryTypeName","src":"7794:7:28","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"visibility":"internal"}],"src":"7793:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5814,"nodeType":"FunctionDefinition","src":"8246:218:28","nodes":[],"body":{"id":5813,"nodeType":"Block","src":"8312:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5794,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5789,"src":"8326:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8339:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":5796,"name":"uint144","nodeType":"ElementaryTypeName","src":"8339:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"}],"id":5795,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8334:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8334:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint144","typeString":"type(uint144)"}},"id":5799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8348:3:28","memberName":"max","nodeType":"MemberAccess","src":"8334:17:28","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"8326:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5807,"nodeType":"IfStatement","src":"8322:105:28","trueBody":{"id":5806,"nodeType":"Block","src":"8353:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":5802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8405:3:28","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":5803,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5789,"src":"8410:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5801,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"8374:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8374:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5805,"nodeType":"RevertStatement","src":"8367:49:28"}]}},{"expression":{"arguments":[{"id":5810,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5789,"src":"8451:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8443:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":5808,"name":"uint144","nodeType":"ElementaryTypeName","src":"8443:7:28","typeDescriptions":{}}},"id":5811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8443:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":5793,"id":5812,"nodeType":"Return","src":"8436:21:28"}]},"documentation":{"id":5787,"nodeType":"StructuredDocumentation","src":"7961:280:28","text":" @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint144","nameLocation":"8255:9:28","parameters":{"id":5790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5789,"mutability":"mutable","name":"value","nameLocation":"8273:5:28","nodeType":"VariableDeclaration","scope":5814,"src":"8265:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5788,"name":"uint256","nodeType":"ElementaryTypeName","src":"8265:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8264:15:28"},"returnParameters":{"id":5793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5792,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5814,"src":"8303:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":5791,"name":"uint144","nodeType":"ElementaryTypeName","src":"8303:7:28","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"8302:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5842,"nodeType":"FunctionDefinition","src":"8755:218:28","nodes":[],"body":{"id":5841,"nodeType":"Block","src":"8821:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5822,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"8835:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5825,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8848:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":5824,"name":"uint136","nodeType":"ElementaryTypeName","src":"8848:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"}],"id":5823,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8843:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8843:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint136","typeString":"type(uint136)"}},"id":5827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8857:3:28","memberName":"max","nodeType":"MemberAccess","src":"8843:17:28","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"src":"8835:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5835,"nodeType":"IfStatement","src":"8831:105:28","trueBody":{"id":5834,"nodeType":"Block","src":"8862:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":5830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8914:3:28","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":5831,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"8919:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5829,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"8883:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8883:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5833,"nodeType":"RevertStatement","src":"8876:49:28"}]}},{"expression":{"arguments":[{"id":5838,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"8960:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8952:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":5836,"name":"uint136","nodeType":"ElementaryTypeName","src":"8952:7:28","typeDescriptions":{}}},"id":5839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8952:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"functionReturnParameters":5821,"id":5840,"nodeType":"Return","src":"8945:21:28"}]},"documentation":{"id":5815,"nodeType":"StructuredDocumentation","src":"8470:280:28","text":" @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint136","nameLocation":"8764:9:28","parameters":{"id":5818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5817,"mutability":"mutable","name":"value","nameLocation":"8782:5:28","nodeType":"VariableDeclaration","scope":5842,"src":"8774:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5816,"name":"uint256","nodeType":"ElementaryTypeName","src":"8774:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8773:15:28"},"returnParameters":{"id":5821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5820,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5842,"src":"8812:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"},"typeName":{"id":5819,"name":"uint136","nodeType":"ElementaryTypeName","src":"8812:7:28","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"visibility":"internal"}],"src":"8811:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5870,"nodeType":"FunctionDefinition","src":"9264:218:28","nodes":[],"body":{"id":5869,"nodeType":"Block","src":"9330:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5850,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5845,"src":"9344:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9357:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5852,"name":"uint128","nodeType":"ElementaryTypeName","src":"9357:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":5851,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9352:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9352:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":5855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9366:3:28","memberName":"max","nodeType":"MemberAccess","src":"9352:17:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9344:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5863,"nodeType":"IfStatement","src":"9340:105:28","trueBody":{"id":5862,"nodeType":"Block","src":"9371:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":5858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9423:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":5859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5845,"src":"9428:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5857,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"9392:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9392:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5861,"nodeType":"RevertStatement","src":"9385:49:28"}]}},{"expression":{"arguments":[{"id":5866,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5845,"src":"9469:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5865,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9461:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5864,"name":"uint128","nodeType":"ElementaryTypeName","src":"9461:7:28","typeDescriptions":{}}},"id":5867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9461:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":5849,"id":5868,"nodeType":"Return","src":"9454:21:28"}]},"documentation":{"id":5843,"nodeType":"StructuredDocumentation","src":"8979:280:28","text":" @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"9273:9:28","parameters":{"id":5846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5845,"mutability":"mutable","name":"value","nameLocation":"9291:5:28","nodeType":"VariableDeclaration","scope":5870,"src":"9283:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5844,"name":"uint256","nodeType":"ElementaryTypeName","src":"9283:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9282:15:28"},"returnParameters":{"id":5849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5848,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5870,"src":"9321:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5847,"name":"uint128","nodeType":"ElementaryTypeName","src":"9321:7:28","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9320:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5898,"nodeType":"FunctionDefinition","src":"9773:218:28","nodes":[],"body":{"id":5897,"nodeType":"Block","src":"9839:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5878,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"9853:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9866:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":5880,"name":"uint120","nodeType":"ElementaryTypeName","src":"9866:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"}],"id":5879,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9861:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9861:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint120","typeString":"type(uint120)"}},"id":5883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9875:3:28","memberName":"max","nodeType":"MemberAccess","src":"9861:17:28","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"src":"9853:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5891,"nodeType":"IfStatement","src":"9849:105:28","trueBody":{"id":5890,"nodeType":"Block","src":"9880:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":5886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9932:3:28","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":5887,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"9937:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5885,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"9901:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9901:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5889,"nodeType":"RevertStatement","src":"9894:49:28"}]}},{"expression":{"arguments":[{"id":5894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"9978:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9970:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":5892,"name":"uint120","nodeType":"ElementaryTypeName","src":"9970:7:28","typeDescriptions":{}}},"id":5895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9970:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"functionReturnParameters":5877,"id":5896,"nodeType":"Return","src":"9963:21:28"}]},"documentation":{"id":5871,"nodeType":"StructuredDocumentation","src":"9488:280:28","text":" @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint120","nameLocation":"9782:9:28","parameters":{"id":5874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5873,"mutability":"mutable","name":"value","nameLocation":"9800:5:28","nodeType":"VariableDeclaration","scope":5898,"src":"9792:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5872,"name":"uint256","nodeType":"ElementaryTypeName","src":"9792:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9791:15:28"},"returnParameters":{"id":5877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5876,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5898,"src":"9830:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"},"typeName":{"id":5875,"name":"uint120","nodeType":"ElementaryTypeName","src":"9830:7:28","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"visibility":"internal"}],"src":"9829:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5926,"nodeType":"FunctionDefinition","src":"10282:218:28","nodes":[],"body":{"id":5925,"nodeType":"Block","src":"10348:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5906,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5901,"src":"10362:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5909,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10375:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":5908,"name":"uint112","nodeType":"ElementaryTypeName","src":"10375:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":5907,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10370:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10370:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":5911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10384:3:28","memberName":"max","nodeType":"MemberAccess","src":"10370:17:28","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"10362:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5919,"nodeType":"IfStatement","src":"10358:105:28","trueBody":{"id":5918,"nodeType":"Block","src":"10389:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":5914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10441:3:28","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":5915,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5901,"src":"10446:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5913,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"10410:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10410:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5917,"nodeType":"RevertStatement","src":"10403:49:28"}]}},{"expression":{"arguments":[{"id":5922,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5901,"src":"10487:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10479:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":5920,"name":"uint112","nodeType":"ElementaryTypeName","src":"10479:7:28","typeDescriptions":{}}},"id":5923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10479:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":5905,"id":5924,"nodeType":"Return","src":"10472:21:28"}]},"documentation":{"id":5899,"nodeType":"StructuredDocumentation","src":"9997:280:28","text":" @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint112","nameLocation":"10291:9:28","parameters":{"id":5902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5901,"mutability":"mutable","name":"value","nameLocation":"10309:5:28","nodeType":"VariableDeclaration","scope":5926,"src":"10301:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5900,"name":"uint256","nodeType":"ElementaryTypeName","src":"10301:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10300:15:28"},"returnParameters":{"id":5905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5904,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5926,"src":"10339:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":5903,"name":"uint112","nodeType":"ElementaryTypeName","src":"10339:7:28","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"10338:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5954,"nodeType":"FunctionDefinition","src":"10791:218:28","nodes":[],"body":{"id":5953,"nodeType":"Block","src":"10857:152:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5929,"src":"10871:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10884:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5936,"name":"uint104","nodeType":"ElementaryTypeName","src":"10884:7:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"}],"id":5935,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10879:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10879:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint104","typeString":"type(uint104)"}},"id":5939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10893:3:28","memberName":"max","nodeType":"MemberAccess","src":"10879:17:28","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"10871:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5947,"nodeType":"IfStatement","src":"10867:105:28","trueBody":{"id":5946,"nodeType":"Block","src":"10898:74:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":5942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10950:3:28","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":5943,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5929,"src":"10955:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5941,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"10919:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10919:42:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5945,"nodeType":"RevertStatement","src":"10912:49:28"}]}},{"expression":{"arguments":[{"id":5950,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5929,"src":"10996:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10988:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5948,"name":"uint104","nodeType":"ElementaryTypeName","src":"10988:7:28","typeDescriptions":{}}},"id":5951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10988:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"functionReturnParameters":5933,"id":5952,"nodeType":"Return","src":"10981:21:28"}]},"documentation":{"id":5927,"nodeType":"StructuredDocumentation","src":"10506:280:28","text":" @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint104","nameLocation":"10800:9:28","parameters":{"id":5930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5929,"mutability":"mutable","name":"value","nameLocation":"10818:5:28","nodeType":"VariableDeclaration","scope":5954,"src":"10810:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5928,"name":"uint256","nodeType":"ElementaryTypeName","src":"10810:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10809:15:28"},"returnParameters":{"id":5933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5932,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5954,"src":"10848:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":5931,"name":"uint104","nodeType":"ElementaryTypeName","src":"10848:7:28","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"10847:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5982,"nodeType":"FunctionDefinition","src":"11296:213:28","nodes":[],"body":{"id":5981,"nodeType":"Block","src":"11360:149:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5962,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"11374:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11387:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":5964,"name":"uint96","nodeType":"ElementaryTypeName","src":"11387:6:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"}],"id":5963,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11382:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11382:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint96","typeString":"type(uint96)"}},"id":5967,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11395:3:28","memberName":"max","nodeType":"MemberAccess","src":"11382:16:28","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11374:24:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5975,"nodeType":"IfStatement","src":"11370:103:28","trueBody":{"id":5974,"nodeType":"Block","src":"11400:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":5970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11452:2:28","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":5971,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"11456:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5969,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"11421:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11421:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5973,"nodeType":"RevertStatement","src":"11414:48:28"}]}},{"expression":{"arguments":[{"id":5978,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"11496:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5977,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11489:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":5976,"name":"uint96","nodeType":"ElementaryTypeName","src":"11489:6:28","typeDescriptions":{}}},"id":5979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11489:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":5961,"id":5980,"nodeType":"Return","src":"11482:20:28"}]},"documentation":{"id":5955,"nodeType":"StructuredDocumentation","src":"11015:276:28","text":" @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"11305:8:28","parameters":{"id":5958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5957,"mutability":"mutable","name":"value","nameLocation":"11322:5:28","nodeType":"VariableDeclaration","scope":5982,"src":"11314:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5956,"name":"uint256","nodeType":"ElementaryTypeName","src":"11314:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11313:15:28"},"returnParameters":{"id":5961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5960,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5982,"src":"11352:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":5959,"name":"uint96","nodeType":"ElementaryTypeName","src":"11352:6:28","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11351:8:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6010,"nodeType":"FunctionDefinition","src":"11796:213:28","nodes":[],"body":{"id":6009,"nodeType":"Block","src":"11860:149:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5990,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5985,"src":"11874:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11887:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":5992,"name":"uint88","nodeType":"ElementaryTypeName","src":"11887:6:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"}],"id":5991,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11882:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11882:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint88","typeString":"type(uint88)"}},"id":5995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11895:3:28","memberName":"max","nodeType":"MemberAccess","src":"11882:16:28","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"11874:24:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6003,"nodeType":"IfStatement","src":"11870:103:28","trueBody":{"id":6002,"nodeType":"Block","src":"11900:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":5998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11952:2:28","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":5999,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5985,"src":"11956:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5997,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"11921:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":6000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11921:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6001,"nodeType":"RevertStatement","src":"11914:48:28"}]}},{"expression":{"arguments":[{"id":6006,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5985,"src":"11996:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6005,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11989:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":6004,"name":"uint88","nodeType":"ElementaryTypeName","src":"11989:6:28","typeDescriptions":{}}},"id":6007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11989:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"functionReturnParameters":5989,"id":6008,"nodeType":"Return","src":"11982:20:28"}]},"documentation":{"id":5983,"nodeType":"StructuredDocumentation","src":"11515:276:28","text":" @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint88","nameLocation":"11805:8:28","parameters":{"id":5986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5985,"mutability":"mutable","name":"value","nameLocation":"11822:5:28","nodeType":"VariableDeclaration","scope":6010,"src":"11814:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5984,"name":"uint256","nodeType":"ElementaryTypeName","src":"11814:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11813:15:28"},"returnParameters":{"id":5989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5988,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6010,"src":"11852:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":5987,"name":"uint88","nodeType":"ElementaryTypeName","src":"11852:6:28","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"}],"src":"11851:8:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6038,"nodeType":"FunctionDefinition","src":"12296:213:28","nodes":[],"body":{"id":6037,"nodeType":"Block","src":"12360:149:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6013,"src":"12374:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":6021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12387:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":6020,"name":"uint80","nodeType":"ElementaryTypeName","src":"12387:6:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"}],"id":6019,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12382:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12382:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint80","typeString":"type(uint80)"}},"id":6023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12395:3:28","memberName":"max","nodeType":"MemberAccess","src":"12382:16:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"12374:24:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6031,"nodeType":"IfStatement","src":"12370:103:28","trueBody":{"id":6030,"nodeType":"Block","src":"12400:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":6026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12452:2:28","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":6027,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6013,"src":"12456:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6025,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"12421:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":6028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12421:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6029,"nodeType":"RevertStatement","src":"12414:48:28"}]}},{"expression":{"arguments":[{"id":6034,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6013,"src":"12496:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12489:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":6032,"name":"uint80","nodeType":"ElementaryTypeName","src":"12489:6:28","typeDescriptions":{}}},"id":6035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12489:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"functionReturnParameters":6017,"id":6036,"nodeType":"Return","src":"12482:20:28"}]},"documentation":{"id":6011,"nodeType":"StructuredDocumentation","src":"12015:276:28","text":" @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint80","nameLocation":"12305:8:28","parameters":{"id":6014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6013,"mutability":"mutable","name":"value","nameLocation":"12322:5:28","nodeType":"VariableDeclaration","scope":6038,"src":"12314:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6012,"name":"uint256","nodeType":"ElementaryTypeName","src":"12314:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12313:15:28"},"returnParameters":{"id":6017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6016,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6038,"src":"12352:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":6015,"name":"uint80","nodeType":"ElementaryTypeName","src":"12352:6:28","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"12351:8:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6066,"nodeType":"FunctionDefinition","src":"12796:213:28","nodes":[],"body":{"id":6065,"nodeType":"Block","src":"12860:149:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6046,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6041,"src":"12874:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":6049,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12887:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":6048,"name":"uint72","nodeType":"ElementaryTypeName","src":"12887:6:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"}],"id":6047,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12882:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12882:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint72","typeString":"type(uint72)"}},"id":6051,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12895:3:28","memberName":"max","nodeType":"MemberAccess","src":"12882:16:28","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"src":"12874:24:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6059,"nodeType":"IfStatement","src":"12870:103:28","trueBody":{"id":6058,"nodeType":"Block","src":"12900:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":6054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12952:2:28","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":6055,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6041,"src":"12956:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6053,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"12921:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":6056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12921:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6057,"nodeType":"RevertStatement","src":"12914:48:28"}]}},{"expression":{"arguments":[{"id":6062,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6041,"src":"12996:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12989:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":6060,"name":"uint72","nodeType":"ElementaryTypeName","src":"12989:6:28","typeDescriptions":{}}},"id":6063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12989:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"functionReturnParameters":6045,"id":6064,"nodeType":"Return","src":"12982:20:28"}]},"documentation":{"id":6039,"nodeType":"StructuredDocumentation","src":"12515:276:28","text":" @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint72","nameLocation":"12805:8:28","parameters":{"id":6042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6041,"mutability":"mutable","name":"value","nameLocation":"12822:5:28","nodeType":"VariableDeclaration","scope":6066,"src":"12814:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6040,"name":"uint256","nodeType":"ElementaryTypeName","src":"12814:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12813:15:28"},"returnParameters":{"id":6045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6044,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6066,"src":"12852:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"},"typeName":{"id":6043,"name":"uint72","nodeType":"ElementaryTypeName","src":"12852:6:28","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"visibility":"internal"}],"src":"12851:8:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6094,"nodeType":"FunctionDefinition","src":"13296:213:28","nodes":[],"body":{"id":6093,"nodeType":"Block","src":"13360:149:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6074,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6069,"src":"13374:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":6077,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13387:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":6076,"name":"uint64","nodeType":"ElementaryTypeName","src":"13387:6:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":6075,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13382:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13382:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":6079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13395:3:28","memberName":"max","nodeType":"MemberAccess","src":"13382:16:28","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13374:24:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6087,"nodeType":"IfStatement","src":"13370:103:28","trueBody":{"id":6086,"nodeType":"Block","src":"13400:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":6082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13452:2:28","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":6083,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6069,"src":"13456:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6081,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"13421:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":6084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13421:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6085,"nodeType":"RevertStatement","src":"13414:48:28"}]}},{"expression":{"arguments":[{"id":6090,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6069,"src":"13496:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13489:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":6088,"name":"uint64","nodeType":"ElementaryTypeName","src":"13489:6:28","typeDescriptions":{}}},"id":6091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13489:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":6073,"id":6092,"nodeType":"Return","src":"13482:20:28"}]},"documentation":{"id":6067,"nodeType":"StructuredDocumentation","src":"13015:276:28","text":" @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13305:8:28","parameters":{"id":6070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6069,"mutability":"mutable","name":"value","nameLocation":"13322:5:28","nodeType":"VariableDeclaration","scope":6094,"src":"13314:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6068,"name":"uint256","nodeType":"ElementaryTypeName","src":"13314:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13313:15:28"},"returnParameters":{"id":6073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6072,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6094,"src":"13352:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6071,"name":"uint64","nodeType":"ElementaryTypeName","src":"13352:6:28","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13351:8:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6122,"nodeType":"FunctionDefinition","src":"13796:213:28","nodes":[],"body":{"id":6121,"nodeType":"Block","src":"13860:149:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6102,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6097,"src":"13874:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":6105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13887:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":6104,"name":"uint56","nodeType":"ElementaryTypeName","src":"13887:6:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":6103,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13882:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13882:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":6107,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13895:3:28","memberName":"max","nodeType":"MemberAccess","src":"13882:16:28","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"13874:24:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6115,"nodeType":"IfStatement","src":"13870:103:28","trueBody":{"id":6114,"nodeType":"Block","src":"13900:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":6110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13952:2:28","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":6111,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6097,"src":"13956:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6109,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"13921:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":6112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13921:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6113,"nodeType":"RevertStatement","src":"13914:48:28"}]}},{"expression":{"arguments":[{"id":6118,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6097,"src":"13996:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13989:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":6116,"name":"uint56","nodeType":"ElementaryTypeName","src":"13989:6:28","typeDescriptions":{}}},"id":6119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13989:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"functionReturnParameters":6101,"id":6120,"nodeType":"Return","src":"13982:20:28"}]},"documentation":{"id":6095,"nodeType":"StructuredDocumentation","src":"13515:276:28","text":" @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint56","nameLocation":"13805:8:28","parameters":{"id":6098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6097,"mutability":"mutable","name":"value","nameLocation":"13822:5:28","nodeType":"VariableDeclaration","scope":6122,"src":"13814:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6096,"name":"uint256","nodeType":"ElementaryTypeName","src":"13814:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13813:15:28"},"returnParameters":{"id":6101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6100,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6122,"src":"13852:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":6099,"name":"uint56","nodeType":"ElementaryTypeName","src":"13852:6:28","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"}],"src":"13851:8:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6150,"nodeType":"FunctionDefinition","src":"14296:213:28","nodes":[],"body":{"id":6149,"nodeType":"Block","src":"14360:149:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6130,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6125,"src":"14374:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":6133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14387:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":6132,"name":"uint48","nodeType":"ElementaryTypeName","src":"14387:6:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":6131,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14382:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14382:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":6135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14395:3:28","memberName":"max","nodeType":"MemberAccess","src":"14382:16:28","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14374:24:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6143,"nodeType":"IfStatement","src":"14370:103:28","trueBody":{"id":6142,"nodeType":"Block","src":"14400:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":6138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14452:2:28","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":6139,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6125,"src":"14456:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6137,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"14421:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":6140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14421:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6141,"nodeType":"RevertStatement","src":"14414:48:28"}]}},{"expression":{"arguments":[{"id":6146,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6125,"src":"14496:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14489:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":6144,"name":"uint48","nodeType":"ElementaryTypeName","src":"14489:6:28","typeDescriptions":{}}},"id":6147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14489:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":6129,"id":6148,"nodeType":"Return","src":"14482:20:28"}]},"documentation":{"id":6123,"nodeType":"StructuredDocumentation","src":"14015:276:28","text":" @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint48","nameLocation":"14305:8:28","parameters":{"id":6126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6125,"mutability":"mutable","name":"value","nameLocation":"14322:5:28","nodeType":"VariableDeclaration","scope":6150,"src":"14314:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6124,"name":"uint256","nodeType":"ElementaryTypeName","src":"14314:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14313:15:28"},"returnParameters":{"id":6129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6128,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6150,"src":"14352:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6127,"name":"uint48","nodeType":"ElementaryTypeName","src":"14352:6:28","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14351:8:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6178,"nodeType":"FunctionDefinition","src":"14796:213:28","nodes":[],"body":{"id":6177,"nodeType":"Block","src":"14860:149:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6158,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6153,"src":"14874:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":6161,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14887:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":6160,"name":"uint40","nodeType":"ElementaryTypeName","src":"14887:6:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":6159,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14882:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14882:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":6163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14895:3:28","memberName":"max","nodeType":"MemberAccess","src":"14882:16:28","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"14874:24:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6171,"nodeType":"IfStatement","src":"14870:103:28","trueBody":{"id":6170,"nodeType":"Block","src":"14900:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":6166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14952:2:28","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":6167,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6153,"src":"14956:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6165,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"14921:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":6168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14921:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6169,"nodeType":"RevertStatement","src":"14914:48:28"}]}},{"expression":{"arguments":[{"id":6174,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6153,"src":"14996:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14989:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":6172,"name":"uint40","nodeType":"ElementaryTypeName","src":"14989:6:28","typeDescriptions":{}}},"id":6175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14989:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":6157,"id":6176,"nodeType":"Return","src":"14982:20:28"}]},"documentation":{"id":6151,"nodeType":"StructuredDocumentation","src":"14515:276:28","text":" @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint40","nameLocation":"14805:8:28","parameters":{"id":6154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6153,"mutability":"mutable","name":"value","nameLocation":"14822:5:28","nodeType":"VariableDeclaration","scope":6178,"src":"14814:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6152,"name":"uint256","nodeType":"ElementaryTypeName","src":"14814:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14813:15:28"},"returnParameters":{"id":6157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6156,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6178,"src":"14852:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":6155,"name":"uint40","nodeType":"ElementaryTypeName","src":"14852:6:28","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"14851:8:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6206,"nodeType":"FunctionDefinition","src":"15296:213:28","nodes":[],"body":{"id":6205,"nodeType":"Block","src":"15360:149:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6186,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6181,"src":"15374:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":6189,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15387:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":6188,"name":"uint32","nodeType":"ElementaryTypeName","src":"15387:6:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":6187,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15382:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15382:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":6191,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15395:3:28","memberName":"max","nodeType":"MemberAccess","src":"15382:16:28","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15374:24:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6199,"nodeType":"IfStatement","src":"15370:103:28","trueBody":{"id":6198,"nodeType":"Block","src":"15400:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":6194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15452:2:28","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":6195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6181,"src":"15456:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6193,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"15421:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":6196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15421:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6197,"nodeType":"RevertStatement","src":"15414:48:28"}]}},{"expression":{"arguments":[{"id":6202,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6181,"src":"15496:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15489:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":6200,"name":"uint32","nodeType":"ElementaryTypeName","src":"15489:6:28","typeDescriptions":{}}},"id":6203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15489:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":6185,"id":6204,"nodeType":"Return","src":"15482:20:28"}]},"documentation":{"id":6179,"nodeType":"StructuredDocumentation","src":"15015:276:28","text":" @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"15305:8:28","parameters":{"id":6182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6181,"mutability":"mutable","name":"value","nameLocation":"15322:5:28","nodeType":"VariableDeclaration","scope":6206,"src":"15314:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6180,"name":"uint256","nodeType":"ElementaryTypeName","src":"15314:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15313:15:28"},"returnParameters":{"id":6185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6184,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6206,"src":"15352:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6183,"name":"uint32","nodeType":"ElementaryTypeName","src":"15352:6:28","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15351:8:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6234,"nodeType":"FunctionDefinition","src":"15796:213:28","nodes":[],"body":{"id":6233,"nodeType":"Block","src":"15860:149:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6214,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6209,"src":"15874:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":6217,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15887:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":6216,"name":"uint24","nodeType":"ElementaryTypeName","src":"15887:6:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":6215,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15882:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15882:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":6219,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15895:3:28","memberName":"max","nodeType":"MemberAccess","src":"15882:16:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"15874:24:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6227,"nodeType":"IfStatement","src":"15870:103:28","trueBody":{"id":6226,"nodeType":"Block","src":"15900:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":6222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15952:2:28","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":6223,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6209,"src":"15956:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6221,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"15921:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":6224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15921:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6225,"nodeType":"RevertStatement","src":"15914:48:28"}]}},{"expression":{"arguments":[{"id":6230,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6209,"src":"15996:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15989:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":6228,"name":"uint24","nodeType":"ElementaryTypeName","src":"15989:6:28","typeDescriptions":{}}},"id":6231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15989:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":6213,"id":6232,"nodeType":"Return","src":"15982:20:28"}]},"documentation":{"id":6207,"nodeType":"StructuredDocumentation","src":"15515:276:28","text":" @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nameLocation":"15805:8:28","parameters":{"id":6210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6209,"mutability":"mutable","name":"value","nameLocation":"15822:5:28","nodeType":"VariableDeclaration","scope":6234,"src":"15814:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6208,"name":"uint256","nodeType":"ElementaryTypeName","src":"15814:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15813:15:28"},"returnParameters":{"id":6213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6212,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6234,"src":"15852:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":6211,"name":"uint24","nodeType":"ElementaryTypeName","src":"15852:6:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15851:8:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6262,"nodeType":"FunctionDefinition","src":"16296:213:28","nodes":[],"body":{"id":6261,"nodeType":"Block","src":"16360:149:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6242,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6237,"src":"16374:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":6245,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16387:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":6244,"name":"uint16","nodeType":"ElementaryTypeName","src":"16387:6:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":6243,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16382:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16382:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":6247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16395:3:28","memberName":"max","nodeType":"MemberAccess","src":"16382:16:28","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"16374:24:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6255,"nodeType":"IfStatement","src":"16370:103:28","trueBody":{"id":6254,"nodeType":"Block","src":"16400:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":6250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16452:2:28","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":6251,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6237,"src":"16456:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6249,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"16421:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":6252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16421:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6253,"nodeType":"RevertStatement","src":"16414:48:28"}]}},{"expression":{"arguments":[{"id":6258,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6237,"src":"16496:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6257,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16489:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":6256,"name":"uint16","nodeType":"ElementaryTypeName","src":"16489:6:28","typeDescriptions":{}}},"id":6259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16489:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":6241,"id":6260,"nodeType":"Return","src":"16482:20:28"}]},"documentation":{"id":6235,"nodeType":"StructuredDocumentation","src":"16015:276:28","text":" @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"16305:8:28","parameters":{"id":6238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6237,"mutability":"mutable","name":"value","nameLocation":"16322:5:28","nodeType":"VariableDeclaration","scope":6262,"src":"16314:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6236,"name":"uint256","nodeType":"ElementaryTypeName","src":"16314:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16313:15:28"},"returnParameters":{"id":6241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6240,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6262,"src":"16352:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":6239,"name":"uint16","nodeType":"ElementaryTypeName","src":"16352:6:28","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"16351:8:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6290,"nodeType":"FunctionDefinition","src":"16792:208:28","nodes":[],"body":{"id":6289,"nodeType":"Block","src":"16854:146:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6270,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6265,"src":"16868:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":6273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16881:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6272,"name":"uint8","nodeType":"ElementaryTypeName","src":"16881:5:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":6271,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16876:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16876:11:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":6275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16888:3:28","memberName":"max","nodeType":"MemberAccess","src":"16876:15:28","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16868:23:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6283,"nodeType":"IfStatement","src":"16864:101:28","trueBody":{"id":6282,"nodeType":"Block","src":"16893:72:28","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":6278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16945:1:28","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":6279,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6265,"src":"16948:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6277,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"16914:30:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":6280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16914:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6281,"nodeType":"RevertStatement","src":"16907:47:28"}]}},{"expression":{"arguments":[{"id":6286,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6265,"src":"16987:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16981:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6284,"name":"uint8","nodeType":"ElementaryTypeName","src":"16981:5:28","typeDescriptions":{}}},"id":6287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16981:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":6269,"id":6288,"nodeType":"Return","src":"16974:19:28"}]},"documentation":{"id":6263,"nodeType":"StructuredDocumentation","src":"16515:272:28","text":" @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"16801:7:28","parameters":{"id":6266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6265,"mutability":"mutable","name":"value","nameLocation":"16817:5:28","nodeType":"VariableDeclaration","scope":6290,"src":"16809:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6264,"name":"uint256","nodeType":"ElementaryTypeName","src":"16809:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16808:15:28"},"returnParameters":{"id":6269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6268,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6290,"src":"16847:5:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6267,"name":"uint8","nodeType":"ElementaryTypeName","src":"16847:5:28","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16846:7:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6313,"nodeType":"FunctionDefinition","src":"17171:193:28","nodes":[],"body":{"id":6312,"nodeType":"Block","src":"17236:128:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6298,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"17250:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":6299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17258:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17250:9:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6306,"nodeType":"IfStatement","src":"17246:81:28","trueBody":{"id":6305,"nodeType":"Block","src":"17261:66:28","statements":[{"errorCall":{"arguments":[{"id":6302,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"17310:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6301,"name":"SafeCastOverflowedIntToUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5410,"src":"17282:27:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$_t_error_$","typeString":"function (int256) pure returns (error)"}},"id":6303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17282:34:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6304,"nodeType":"RevertStatement","src":"17275:41:28"}]}},{"expression":{"arguments":[{"id":6309,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"17351:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6308,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17343:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6307,"name":"uint256","nodeType":"ElementaryTypeName","src":"17343:7:28","typeDescriptions":{}}},"id":6310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17343:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6297,"id":6311,"nodeType":"Return","src":"17336:21:28"}]},"documentation":{"id":6291,"nodeType":"StructuredDocumentation","src":"17006:160:28","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0."},"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"17180:9:28","parameters":{"id":6294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6293,"mutability":"mutable","name":"value","nameLocation":"17197:5:28","nodeType":"VariableDeclaration","scope":6313,"src":"17190:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6292,"name":"int256","nodeType":"ElementaryTypeName","src":"17190:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17189:14:28"},"returnParameters":{"id":6297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6296,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6313,"src":"17227:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6295,"name":"uint256","nodeType":"ElementaryTypeName","src":"17227:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17226:9:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6339,"nodeType":"FunctionDefinition","src":"17687:224:28","nodes":[],"body":{"id":6338,"nodeType":"Block","src":"17761:150:28","nodes":[],"statements":[{"expression":{"id":6326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6321,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6319,"src":"17771:10:28","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6324,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6316,"src":"17791:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6323,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17784:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int248_$","typeString":"type(int248)"},"typeName":{"id":6322,"name":"int248","nodeType":"ElementaryTypeName","src":"17784:6:28","typeDescriptions":{}}},"id":6325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17784:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"src":"17771:26:28","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"id":6327,"nodeType":"ExpressionStatement","src":"17771:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6328,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6319,"src":"17811:10:28","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6329,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6316,"src":"17825:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17811:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6337,"nodeType":"IfStatement","src":"17807:98:28","trueBody":{"id":6336,"nodeType":"Block","src":"17832:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":6332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17883:3:28","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":6333,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6316,"src":"17888:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6331,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"17853:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17853:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6335,"nodeType":"RevertStatement","src":"17846:48:28"}]}}]},"documentation":{"id":6314,"nodeType":"StructuredDocumentation","src":"17370:312:28","text":" @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt248","nameLocation":"17696:8:28","parameters":{"id":6317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6316,"mutability":"mutable","name":"value","nameLocation":"17712:5:28","nodeType":"VariableDeclaration","scope":6339,"src":"17705:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6315,"name":"int256","nodeType":"ElementaryTypeName","src":"17705:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17704:14:28"},"returnParameters":{"id":6320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6319,"mutability":"mutable","name":"downcasted","nameLocation":"17749:10:28","nodeType":"VariableDeclaration","scope":6339,"src":"17742:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"},"typeName":{"id":6318,"name":"int248","nodeType":"ElementaryTypeName","src":"17742:6:28","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"visibility":"internal"}],"src":"17741:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6365,"nodeType":"FunctionDefinition","src":"18234:224:28","nodes":[],"body":{"id":6364,"nodeType":"Block","src":"18308:150:28","nodes":[],"statements":[{"expression":{"id":6352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6347,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6345,"src":"18318:10:28","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6350,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18338:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18331:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int240_$","typeString":"type(int240)"},"typeName":{"id":6348,"name":"int240","nodeType":"ElementaryTypeName","src":"18331:6:28","typeDescriptions":{}}},"id":6351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18331:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"src":"18318:26:28","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"id":6353,"nodeType":"ExpressionStatement","src":"18318:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6354,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6345,"src":"18358:10:28","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6355,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18372:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18358:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6363,"nodeType":"IfStatement","src":"18354:98:28","trueBody":{"id":6362,"nodeType":"Block","src":"18379:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":6358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:3:28","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":6359,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18435:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6357,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"18400:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18400:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6361,"nodeType":"RevertStatement","src":"18393:48:28"}]}}]},"documentation":{"id":6340,"nodeType":"StructuredDocumentation","src":"17917:312:28","text":" @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt240","nameLocation":"18243:8:28","parameters":{"id":6343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6342,"mutability":"mutable","name":"value","nameLocation":"18259:5:28","nodeType":"VariableDeclaration","scope":6365,"src":"18252:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6341,"name":"int256","nodeType":"ElementaryTypeName","src":"18252:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18251:14:28"},"returnParameters":{"id":6346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6345,"mutability":"mutable","name":"downcasted","nameLocation":"18296:10:28","nodeType":"VariableDeclaration","scope":6365,"src":"18289:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"},"typeName":{"id":6344,"name":"int240","nodeType":"ElementaryTypeName","src":"18289:6:28","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"visibility":"internal"}],"src":"18288:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6391,"nodeType":"FunctionDefinition","src":"18781:224:28","nodes":[],"body":{"id":6390,"nodeType":"Block","src":"18855:150:28","nodes":[],"statements":[{"expression":{"id":6378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6373,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6371,"src":"18865:10:28","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6368,"src":"18885:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18878:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int232_$","typeString":"type(int232)"},"typeName":{"id":6374,"name":"int232","nodeType":"ElementaryTypeName","src":"18878:6:28","typeDescriptions":{}}},"id":6377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18878:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"src":"18865:26:28","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"id":6379,"nodeType":"ExpressionStatement","src":"18865:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6380,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6371,"src":"18905:10:28","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6381,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6368,"src":"18919:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18905:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6389,"nodeType":"IfStatement","src":"18901:98:28","trueBody":{"id":6388,"nodeType":"Block","src":"18926:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":6384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18977:3:28","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":6385,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6368,"src":"18982:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6383,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"18947:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18947:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6387,"nodeType":"RevertStatement","src":"18940:48:28"}]}}]},"documentation":{"id":6366,"nodeType":"StructuredDocumentation","src":"18464:312:28","text":" @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt232","nameLocation":"18790:8:28","parameters":{"id":6369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6368,"mutability":"mutable","name":"value","nameLocation":"18806:5:28","nodeType":"VariableDeclaration","scope":6391,"src":"18799:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6367,"name":"int256","nodeType":"ElementaryTypeName","src":"18799:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18798:14:28"},"returnParameters":{"id":6372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6371,"mutability":"mutable","name":"downcasted","nameLocation":"18843:10:28","nodeType":"VariableDeclaration","scope":6391,"src":"18836:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"},"typeName":{"id":6370,"name":"int232","nodeType":"ElementaryTypeName","src":"18836:6:28","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"visibility":"internal"}],"src":"18835:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6417,"nodeType":"FunctionDefinition","src":"19328:224:28","nodes":[],"body":{"id":6416,"nodeType":"Block","src":"19402:150:28","nodes":[],"statements":[{"expression":{"id":6404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6399,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6397,"src":"19412:10:28","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6402,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6394,"src":"19432:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6401,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19425:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int224_$","typeString":"type(int224)"},"typeName":{"id":6400,"name":"int224","nodeType":"ElementaryTypeName","src":"19425:6:28","typeDescriptions":{}}},"id":6403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19425:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"src":"19412:26:28","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"id":6405,"nodeType":"ExpressionStatement","src":"19412:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6406,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6397,"src":"19452:10:28","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6407,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6394,"src":"19466:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19452:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6415,"nodeType":"IfStatement","src":"19448:98:28","trueBody":{"id":6414,"nodeType":"Block","src":"19473:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":6410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19524:3:28","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":6411,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6394,"src":"19529:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6409,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"19494:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19494:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6413,"nodeType":"RevertStatement","src":"19487:48:28"}]}}]},"documentation":{"id":6392,"nodeType":"StructuredDocumentation","src":"19011:312:28","text":" @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt224","nameLocation":"19337:8:28","parameters":{"id":6395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6394,"mutability":"mutable","name":"value","nameLocation":"19353:5:28","nodeType":"VariableDeclaration","scope":6417,"src":"19346:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6393,"name":"int256","nodeType":"ElementaryTypeName","src":"19346:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19345:14:28"},"returnParameters":{"id":6398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6397,"mutability":"mutable","name":"downcasted","nameLocation":"19390:10:28","nodeType":"VariableDeclaration","scope":6417,"src":"19383:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"},"typeName":{"id":6396,"name":"int224","nodeType":"ElementaryTypeName","src":"19383:6:28","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"visibility":"internal"}],"src":"19382:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6443,"nodeType":"FunctionDefinition","src":"19875:224:28","nodes":[],"body":{"id":6442,"nodeType":"Block","src":"19949:150:28","nodes":[],"statements":[{"expression":{"id":6430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6425,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6423,"src":"19959:10:28","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6428,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6420,"src":"19979:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6427,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19972:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int216_$","typeString":"type(int216)"},"typeName":{"id":6426,"name":"int216","nodeType":"ElementaryTypeName","src":"19972:6:28","typeDescriptions":{}}},"id":6429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19972:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"src":"19959:26:28","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"id":6431,"nodeType":"ExpressionStatement","src":"19959:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6432,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6423,"src":"19999:10:28","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6433,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6420,"src":"20013:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19999:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6441,"nodeType":"IfStatement","src":"19995:98:28","trueBody":{"id":6440,"nodeType":"Block","src":"20020:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":6436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20071:3:28","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":6437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6420,"src":"20076:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6435,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"20041:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20041:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6439,"nodeType":"RevertStatement","src":"20034:48:28"}]}}]},"documentation":{"id":6418,"nodeType":"StructuredDocumentation","src":"19558:312:28","text":" @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt216","nameLocation":"19884:8:28","parameters":{"id":6421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6420,"mutability":"mutable","name":"value","nameLocation":"19900:5:28","nodeType":"VariableDeclaration","scope":6443,"src":"19893:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6419,"name":"int256","nodeType":"ElementaryTypeName","src":"19893:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19892:14:28"},"returnParameters":{"id":6424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6423,"mutability":"mutable","name":"downcasted","nameLocation":"19937:10:28","nodeType":"VariableDeclaration","scope":6443,"src":"19930:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"},"typeName":{"id":6422,"name":"int216","nodeType":"ElementaryTypeName","src":"19930:6:28","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"visibility":"internal"}],"src":"19929:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6469,"nodeType":"FunctionDefinition","src":"20422:224:28","nodes":[],"body":{"id":6468,"nodeType":"Block","src":"20496:150:28","nodes":[],"statements":[{"expression":{"id":6456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6451,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6449,"src":"20506:10:28","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6454,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6446,"src":"20526:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6453,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20519:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int208_$","typeString":"type(int208)"},"typeName":{"id":6452,"name":"int208","nodeType":"ElementaryTypeName","src":"20519:6:28","typeDescriptions":{}}},"id":6455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20519:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"src":"20506:26:28","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"id":6457,"nodeType":"ExpressionStatement","src":"20506:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6458,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6449,"src":"20546:10:28","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6459,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6446,"src":"20560:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20546:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6467,"nodeType":"IfStatement","src":"20542:98:28","trueBody":{"id":6466,"nodeType":"Block","src":"20567:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":6462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20618:3:28","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":6463,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6446,"src":"20623:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6461,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"20588:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20588:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6465,"nodeType":"RevertStatement","src":"20581:48:28"}]}}]},"documentation":{"id":6444,"nodeType":"StructuredDocumentation","src":"20105:312:28","text":" @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt208","nameLocation":"20431:8:28","parameters":{"id":6447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6446,"mutability":"mutable","name":"value","nameLocation":"20447:5:28","nodeType":"VariableDeclaration","scope":6469,"src":"20440:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6445,"name":"int256","nodeType":"ElementaryTypeName","src":"20440:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20439:14:28"},"returnParameters":{"id":6450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6449,"mutability":"mutable","name":"downcasted","nameLocation":"20484:10:28","nodeType":"VariableDeclaration","scope":6469,"src":"20477:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"},"typeName":{"id":6448,"name":"int208","nodeType":"ElementaryTypeName","src":"20477:6:28","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"visibility":"internal"}],"src":"20476:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6495,"nodeType":"FunctionDefinition","src":"20969:224:28","nodes":[],"body":{"id":6494,"nodeType":"Block","src":"21043:150:28","nodes":[],"statements":[{"expression":{"id":6482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6477,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"21053:10:28","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6480,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6472,"src":"21073:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21066:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int200_$","typeString":"type(int200)"},"typeName":{"id":6478,"name":"int200","nodeType":"ElementaryTypeName","src":"21066:6:28","typeDescriptions":{}}},"id":6481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21066:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"src":"21053:26:28","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"id":6483,"nodeType":"ExpressionStatement","src":"21053:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6484,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6475,"src":"21093:10:28","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6485,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6472,"src":"21107:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21093:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6493,"nodeType":"IfStatement","src":"21089:98:28","trueBody":{"id":6492,"nodeType":"Block","src":"21114:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":6488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21165:3:28","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":6489,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6472,"src":"21170:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6487,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"21135:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21135:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6491,"nodeType":"RevertStatement","src":"21128:48:28"}]}}]},"documentation":{"id":6470,"nodeType":"StructuredDocumentation","src":"20652:312:28","text":" @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt200","nameLocation":"20978:8:28","parameters":{"id":6473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6472,"mutability":"mutable","name":"value","nameLocation":"20994:5:28","nodeType":"VariableDeclaration","scope":6495,"src":"20987:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6471,"name":"int256","nodeType":"ElementaryTypeName","src":"20987:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20986:14:28"},"returnParameters":{"id":6476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6475,"mutability":"mutable","name":"downcasted","nameLocation":"21031:10:28","nodeType":"VariableDeclaration","scope":6495,"src":"21024:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"},"typeName":{"id":6474,"name":"int200","nodeType":"ElementaryTypeName","src":"21024:6:28","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"visibility":"internal"}],"src":"21023:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6521,"nodeType":"FunctionDefinition","src":"21516:224:28","nodes":[],"body":{"id":6520,"nodeType":"Block","src":"21590:150:28","nodes":[],"statements":[{"expression":{"id":6508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6503,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6501,"src":"21600:10:28","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6506,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6498,"src":"21620:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21613:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int192_$","typeString":"type(int192)"},"typeName":{"id":6504,"name":"int192","nodeType":"ElementaryTypeName","src":"21613:6:28","typeDescriptions":{}}},"id":6507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21613:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"src":"21600:26:28","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"id":6509,"nodeType":"ExpressionStatement","src":"21600:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6510,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6501,"src":"21640:10:28","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6511,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6498,"src":"21654:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21640:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6519,"nodeType":"IfStatement","src":"21636:98:28","trueBody":{"id":6518,"nodeType":"Block","src":"21661:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":6514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21712:3:28","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":6515,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6498,"src":"21717:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6513,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"21682:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21682:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6517,"nodeType":"RevertStatement","src":"21675:48:28"}]}}]},"documentation":{"id":6496,"nodeType":"StructuredDocumentation","src":"21199:312:28","text":" @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt192","nameLocation":"21525:8:28","parameters":{"id":6499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6498,"mutability":"mutable","name":"value","nameLocation":"21541:5:28","nodeType":"VariableDeclaration","scope":6521,"src":"21534:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6497,"name":"int256","nodeType":"ElementaryTypeName","src":"21534:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21533:14:28"},"returnParameters":{"id":6502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6501,"mutability":"mutable","name":"downcasted","nameLocation":"21578:10:28","nodeType":"VariableDeclaration","scope":6521,"src":"21571:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"},"typeName":{"id":6500,"name":"int192","nodeType":"ElementaryTypeName","src":"21571:6:28","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"visibility":"internal"}],"src":"21570:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6547,"nodeType":"FunctionDefinition","src":"22063:224:28","nodes":[],"body":{"id":6546,"nodeType":"Block","src":"22137:150:28","nodes":[],"statements":[{"expression":{"id":6534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6529,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6527,"src":"22147:10:28","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6532,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6524,"src":"22167:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6531,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22160:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int184_$","typeString":"type(int184)"},"typeName":{"id":6530,"name":"int184","nodeType":"ElementaryTypeName","src":"22160:6:28","typeDescriptions":{}}},"id":6533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22160:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"src":"22147:26:28","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"id":6535,"nodeType":"ExpressionStatement","src":"22147:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6536,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6527,"src":"22187:10:28","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6537,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6524,"src":"22201:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22187:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6545,"nodeType":"IfStatement","src":"22183:98:28","trueBody":{"id":6544,"nodeType":"Block","src":"22208:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":6540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22259:3:28","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":6541,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6524,"src":"22264:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6539,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"22229:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22229:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6543,"nodeType":"RevertStatement","src":"22222:48:28"}]}}]},"documentation":{"id":6522,"nodeType":"StructuredDocumentation","src":"21746:312:28","text":" @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt184","nameLocation":"22072:8:28","parameters":{"id":6525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6524,"mutability":"mutable","name":"value","nameLocation":"22088:5:28","nodeType":"VariableDeclaration","scope":6547,"src":"22081:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6523,"name":"int256","nodeType":"ElementaryTypeName","src":"22081:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22080:14:28"},"returnParameters":{"id":6528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6527,"mutability":"mutable","name":"downcasted","nameLocation":"22125:10:28","nodeType":"VariableDeclaration","scope":6547,"src":"22118:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"},"typeName":{"id":6526,"name":"int184","nodeType":"ElementaryTypeName","src":"22118:6:28","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"visibility":"internal"}],"src":"22117:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6573,"nodeType":"FunctionDefinition","src":"22610:224:28","nodes":[],"body":{"id":6572,"nodeType":"Block","src":"22684:150:28","nodes":[],"statements":[{"expression":{"id":6560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6555,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6553,"src":"22694:10:28","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6558,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6550,"src":"22714:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6557,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22707:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int176_$","typeString":"type(int176)"},"typeName":{"id":6556,"name":"int176","nodeType":"ElementaryTypeName","src":"22707:6:28","typeDescriptions":{}}},"id":6559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22707:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"src":"22694:26:28","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"id":6561,"nodeType":"ExpressionStatement","src":"22694:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6562,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6553,"src":"22734:10:28","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6563,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6550,"src":"22748:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22734:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6571,"nodeType":"IfStatement","src":"22730:98:28","trueBody":{"id":6570,"nodeType":"Block","src":"22755:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":6566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22806:3:28","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":6567,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6550,"src":"22811:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6565,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"22776:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22776:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6569,"nodeType":"RevertStatement","src":"22769:48:28"}]}}]},"documentation":{"id":6548,"nodeType":"StructuredDocumentation","src":"22293:312:28","text":" @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt176","nameLocation":"22619:8:28","parameters":{"id":6551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6550,"mutability":"mutable","name":"value","nameLocation":"22635:5:28","nodeType":"VariableDeclaration","scope":6573,"src":"22628:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6549,"name":"int256","nodeType":"ElementaryTypeName","src":"22628:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22627:14:28"},"returnParameters":{"id":6554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6553,"mutability":"mutable","name":"downcasted","nameLocation":"22672:10:28","nodeType":"VariableDeclaration","scope":6573,"src":"22665:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"},"typeName":{"id":6552,"name":"int176","nodeType":"ElementaryTypeName","src":"22665:6:28","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"visibility":"internal"}],"src":"22664:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6599,"nodeType":"FunctionDefinition","src":"23157:224:28","nodes":[],"body":{"id":6598,"nodeType":"Block","src":"23231:150:28","nodes":[],"statements":[{"expression":{"id":6586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6581,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6579,"src":"23241:10:28","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6584,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6576,"src":"23261:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23254:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int168_$","typeString":"type(int168)"},"typeName":{"id":6582,"name":"int168","nodeType":"ElementaryTypeName","src":"23254:6:28","typeDescriptions":{}}},"id":6585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23254:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"src":"23241:26:28","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"id":6587,"nodeType":"ExpressionStatement","src":"23241:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6588,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6579,"src":"23281:10:28","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6589,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6576,"src":"23295:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23281:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6597,"nodeType":"IfStatement","src":"23277:98:28","trueBody":{"id":6596,"nodeType":"Block","src":"23302:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":6592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23353:3:28","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":6593,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6576,"src":"23358:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6591,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"23323:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23323:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6595,"nodeType":"RevertStatement","src":"23316:48:28"}]}}]},"documentation":{"id":6574,"nodeType":"StructuredDocumentation","src":"22840:312:28","text":" @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt168","nameLocation":"23166:8:28","parameters":{"id":6577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6576,"mutability":"mutable","name":"value","nameLocation":"23182:5:28","nodeType":"VariableDeclaration","scope":6599,"src":"23175:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6575,"name":"int256","nodeType":"ElementaryTypeName","src":"23175:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23174:14:28"},"returnParameters":{"id":6580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6579,"mutability":"mutable","name":"downcasted","nameLocation":"23219:10:28","nodeType":"VariableDeclaration","scope":6599,"src":"23212:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"},"typeName":{"id":6578,"name":"int168","nodeType":"ElementaryTypeName","src":"23212:6:28","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"visibility":"internal"}],"src":"23211:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6625,"nodeType":"FunctionDefinition","src":"23704:224:28","nodes":[],"body":{"id":6624,"nodeType":"Block","src":"23778:150:28","nodes":[],"statements":[{"expression":{"id":6612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6607,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6605,"src":"23788:10:28","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6610,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6602,"src":"23808:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6609,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23801:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int160_$","typeString":"type(int160)"},"typeName":{"id":6608,"name":"int160","nodeType":"ElementaryTypeName","src":"23801:6:28","typeDescriptions":{}}},"id":6611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23801:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"src":"23788:26:28","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"id":6613,"nodeType":"ExpressionStatement","src":"23788:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6614,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6605,"src":"23828:10:28","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6615,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6602,"src":"23842:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23828:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6623,"nodeType":"IfStatement","src":"23824:98:28","trueBody":{"id":6622,"nodeType":"Block","src":"23849:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":6618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23900:3:28","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":6619,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6602,"src":"23905:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6617,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"23870:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23870:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6621,"nodeType":"RevertStatement","src":"23863:48:28"}]}}]},"documentation":{"id":6600,"nodeType":"StructuredDocumentation","src":"23387:312:28","text":" @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt160","nameLocation":"23713:8:28","parameters":{"id":6603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6602,"mutability":"mutable","name":"value","nameLocation":"23729:5:28","nodeType":"VariableDeclaration","scope":6625,"src":"23722:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6601,"name":"int256","nodeType":"ElementaryTypeName","src":"23722:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23721:14:28"},"returnParameters":{"id":6606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6605,"mutability":"mutable","name":"downcasted","nameLocation":"23766:10:28","nodeType":"VariableDeclaration","scope":6625,"src":"23759:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"},"typeName":{"id":6604,"name":"int160","nodeType":"ElementaryTypeName","src":"23759:6:28","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"visibility":"internal"}],"src":"23758:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6651,"nodeType":"FunctionDefinition","src":"24251:224:28","nodes":[],"body":{"id":6650,"nodeType":"Block","src":"24325:150:28","nodes":[],"statements":[{"expression":{"id":6638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6633,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"24335:10:28","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6636,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6628,"src":"24355:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6635,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24348:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int152_$","typeString":"type(int152)"},"typeName":{"id":6634,"name":"int152","nodeType":"ElementaryTypeName","src":"24348:6:28","typeDescriptions":{}}},"id":6637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24348:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"src":"24335:26:28","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"id":6639,"nodeType":"ExpressionStatement","src":"24335:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6640,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"24375:10:28","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6641,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6628,"src":"24389:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24375:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6649,"nodeType":"IfStatement","src":"24371:98:28","trueBody":{"id":6648,"nodeType":"Block","src":"24396:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":6644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24447:3:28","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":6645,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6628,"src":"24452:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6643,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"24417:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24417:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6647,"nodeType":"RevertStatement","src":"24410:48:28"}]}}]},"documentation":{"id":6626,"nodeType":"StructuredDocumentation","src":"23934:312:28","text":" @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt152","nameLocation":"24260:8:28","parameters":{"id":6629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6628,"mutability":"mutable","name":"value","nameLocation":"24276:5:28","nodeType":"VariableDeclaration","scope":6651,"src":"24269:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6627,"name":"int256","nodeType":"ElementaryTypeName","src":"24269:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24268:14:28"},"returnParameters":{"id":6632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6631,"mutability":"mutable","name":"downcasted","nameLocation":"24313:10:28","nodeType":"VariableDeclaration","scope":6651,"src":"24306:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"},"typeName":{"id":6630,"name":"int152","nodeType":"ElementaryTypeName","src":"24306:6:28","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"visibility":"internal"}],"src":"24305:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6677,"nodeType":"FunctionDefinition","src":"24798:224:28","nodes":[],"body":{"id":6676,"nodeType":"Block","src":"24872:150:28","nodes":[],"statements":[{"expression":{"id":6664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6659,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6657,"src":"24882:10:28","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6662,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6654,"src":"24902:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6661,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24895:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int144_$","typeString":"type(int144)"},"typeName":{"id":6660,"name":"int144","nodeType":"ElementaryTypeName","src":"24895:6:28","typeDescriptions":{}}},"id":6663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24895:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"src":"24882:26:28","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"id":6665,"nodeType":"ExpressionStatement","src":"24882:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6666,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6657,"src":"24922:10:28","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6667,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6654,"src":"24936:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24922:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6675,"nodeType":"IfStatement","src":"24918:98:28","trueBody":{"id":6674,"nodeType":"Block","src":"24943:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":6670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24994:3:28","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":6671,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6654,"src":"24999:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6669,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"24964:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24964:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6673,"nodeType":"RevertStatement","src":"24957:48:28"}]}}]},"documentation":{"id":6652,"nodeType":"StructuredDocumentation","src":"24481:312:28","text":" @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt144","nameLocation":"24807:8:28","parameters":{"id":6655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6654,"mutability":"mutable","name":"value","nameLocation":"24823:5:28","nodeType":"VariableDeclaration","scope":6677,"src":"24816:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6653,"name":"int256","nodeType":"ElementaryTypeName","src":"24816:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24815:14:28"},"returnParameters":{"id":6658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6657,"mutability":"mutable","name":"downcasted","nameLocation":"24860:10:28","nodeType":"VariableDeclaration","scope":6677,"src":"24853:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"},"typeName":{"id":6656,"name":"int144","nodeType":"ElementaryTypeName","src":"24853:6:28","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"visibility":"internal"}],"src":"24852:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6703,"nodeType":"FunctionDefinition","src":"25345:224:28","nodes":[],"body":{"id":6702,"nodeType":"Block","src":"25419:150:28","nodes":[],"statements":[{"expression":{"id":6690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6685,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6683,"src":"25429:10:28","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6688,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6680,"src":"25449:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25442:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int136_$","typeString":"type(int136)"},"typeName":{"id":6686,"name":"int136","nodeType":"ElementaryTypeName","src":"25442:6:28","typeDescriptions":{}}},"id":6689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25442:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"src":"25429:26:28","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"id":6691,"nodeType":"ExpressionStatement","src":"25429:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6692,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6683,"src":"25469:10:28","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6693,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6680,"src":"25483:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25469:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6701,"nodeType":"IfStatement","src":"25465:98:28","trueBody":{"id":6700,"nodeType":"Block","src":"25490:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":6696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25541:3:28","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":6697,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6680,"src":"25546:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6695,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"25511:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25511:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6699,"nodeType":"RevertStatement","src":"25504:48:28"}]}}]},"documentation":{"id":6678,"nodeType":"StructuredDocumentation","src":"25028:312:28","text":" @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt136","nameLocation":"25354:8:28","parameters":{"id":6681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6680,"mutability":"mutable","name":"value","nameLocation":"25370:5:28","nodeType":"VariableDeclaration","scope":6703,"src":"25363:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6679,"name":"int256","nodeType":"ElementaryTypeName","src":"25363:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25362:14:28"},"returnParameters":{"id":6684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6683,"mutability":"mutable","name":"downcasted","nameLocation":"25407:10:28","nodeType":"VariableDeclaration","scope":6703,"src":"25400:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"},"typeName":{"id":6682,"name":"int136","nodeType":"ElementaryTypeName","src":"25400:6:28","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"visibility":"internal"}],"src":"25399:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6729,"nodeType":"FunctionDefinition","src":"25892:224:28","nodes":[],"body":{"id":6728,"nodeType":"Block","src":"25966:150:28","nodes":[],"statements":[{"expression":{"id":6716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6711,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6709,"src":"25976:10:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6714,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6706,"src":"25996:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25989:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":6712,"name":"int128","nodeType":"ElementaryTypeName","src":"25989:6:28","typeDescriptions":{}}},"id":6715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25989:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25976:26:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":6717,"nodeType":"ExpressionStatement","src":"25976:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6718,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6709,"src":"26016:10:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6719,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6706,"src":"26030:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26016:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6727,"nodeType":"IfStatement","src":"26012:98:28","trueBody":{"id":6726,"nodeType":"Block","src":"26037:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":6722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26088:3:28","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":6723,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6706,"src":"26093:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6721,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"26058:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26058:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6725,"nodeType":"RevertStatement","src":"26051:48:28"}]}}]},"documentation":{"id":6704,"nodeType":"StructuredDocumentation","src":"25575:312:28","text":" @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"25901:8:28","parameters":{"id":6707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6706,"mutability":"mutable","name":"value","nameLocation":"25917:5:28","nodeType":"VariableDeclaration","scope":6729,"src":"25910:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6705,"name":"int256","nodeType":"ElementaryTypeName","src":"25910:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25909:14:28"},"returnParameters":{"id":6710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6709,"mutability":"mutable","name":"downcasted","nameLocation":"25954:10:28","nodeType":"VariableDeclaration","scope":6729,"src":"25947:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":6708,"name":"int128","nodeType":"ElementaryTypeName","src":"25947:6:28","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"25946:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6755,"nodeType":"FunctionDefinition","src":"26439:224:28","nodes":[],"body":{"id":6754,"nodeType":"Block","src":"26513:150:28","nodes":[],"statements":[{"expression":{"id":6742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6737,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6735,"src":"26523:10:28","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6740,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6732,"src":"26543:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6739,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26536:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int120_$","typeString":"type(int120)"},"typeName":{"id":6738,"name":"int120","nodeType":"ElementaryTypeName","src":"26536:6:28","typeDescriptions":{}}},"id":6741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26536:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"src":"26523:26:28","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"id":6743,"nodeType":"ExpressionStatement","src":"26523:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6744,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6735,"src":"26563:10:28","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6745,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6732,"src":"26577:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26563:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6753,"nodeType":"IfStatement","src":"26559:98:28","trueBody":{"id":6752,"nodeType":"Block","src":"26584:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":6748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26635:3:28","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":6749,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6732,"src":"26640:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6747,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"26605:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26605:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6751,"nodeType":"RevertStatement","src":"26598:48:28"}]}}]},"documentation":{"id":6730,"nodeType":"StructuredDocumentation","src":"26122:312:28","text":" @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt120","nameLocation":"26448:8:28","parameters":{"id":6733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6732,"mutability":"mutable","name":"value","nameLocation":"26464:5:28","nodeType":"VariableDeclaration","scope":6755,"src":"26457:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6731,"name":"int256","nodeType":"ElementaryTypeName","src":"26457:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26456:14:28"},"returnParameters":{"id":6736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6735,"mutability":"mutable","name":"downcasted","nameLocation":"26501:10:28","nodeType":"VariableDeclaration","scope":6755,"src":"26494:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"},"typeName":{"id":6734,"name":"int120","nodeType":"ElementaryTypeName","src":"26494:6:28","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"visibility":"internal"}],"src":"26493:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6781,"nodeType":"FunctionDefinition","src":"26986:224:28","nodes":[],"body":{"id":6780,"nodeType":"Block","src":"27060:150:28","nodes":[],"statements":[{"expression":{"id":6768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6763,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6761,"src":"27070:10:28","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6766,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6758,"src":"27090:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27083:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int112_$","typeString":"type(int112)"},"typeName":{"id":6764,"name":"int112","nodeType":"ElementaryTypeName","src":"27083:6:28","typeDescriptions":{}}},"id":6767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27083:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"src":"27070:26:28","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"id":6769,"nodeType":"ExpressionStatement","src":"27070:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6770,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6761,"src":"27110:10:28","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6771,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6758,"src":"27124:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27110:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6779,"nodeType":"IfStatement","src":"27106:98:28","trueBody":{"id":6778,"nodeType":"Block","src":"27131:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":6774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27182:3:28","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":6775,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6758,"src":"27187:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6773,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"27152:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27152:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6777,"nodeType":"RevertStatement","src":"27145:48:28"}]}}]},"documentation":{"id":6756,"nodeType":"StructuredDocumentation","src":"26669:312:28","text":" @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt112","nameLocation":"26995:8:28","parameters":{"id":6759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6758,"mutability":"mutable","name":"value","nameLocation":"27011:5:28","nodeType":"VariableDeclaration","scope":6781,"src":"27004:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6757,"name":"int256","nodeType":"ElementaryTypeName","src":"27004:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27003:14:28"},"returnParameters":{"id":6762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6761,"mutability":"mutable","name":"downcasted","nameLocation":"27048:10:28","nodeType":"VariableDeclaration","scope":6781,"src":"27041:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"},"typeName":{"id":6760,"name":"int112","nodeType":"ElementaryTypeName","src":"27041:6:28","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"visibility":"internal"}],"src":"27040:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6807,"nodeType":"FunctionDefinition","src":"27533:224:28","nodes":[],"body":{"id":6806,"nodeType":"Block","src":"27607:150:28","nodes":[],"statements":[{"expression":{"id":6794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6789,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6787,"src":"27617:10:28","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6792,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6784,"src":"27637:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6791,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27630:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":6790,"name":"int104","nodeType":"ElementaryTypeName","src":"27630:6:28","typeDescriptions":{}}},"id":6793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27630:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"27617:26:28","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":6795,"nodeType":"ExpressionStatement","src":"27617:26:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6796,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6787,"src":"27657:10:28","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6797,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6784,"src":"27671:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27657:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6805,"nodeType":"IfStatement","src":"27653:98:28","trueBody":{"id":6804,"nodeType":"Block","src":"27678:73:28","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":6800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27729:3:28","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":6801,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6784,"src":"27734:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6799,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"27699:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27699:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6803,"nodeType":"RevertStatement","src":"27692:48:28"}]}}]},"documentation":{"id":6782,"nodeType":"StructuredDocumentation","src":"27216:312:28","text":" @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt104","nameLocation":"27542:8:28","parameters":{"id":6785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6784,"mutability":"mutable","name":"value","nameLocation":"27558:5:28","nodeType":"VariableDeclaration","scope":6807,"src":"27551:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6783,"name":"int256","nodeType":"ElementaryTypeName","src":"27551:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27550:14:28"},"returnParameters":{"id":6788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6787,"mutability":"mutable","name":"downcasted","nameLocation":"27595:10:28","nodeType":"VariableDeclaration","scope":6807,"src":"27588:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":6786,"name":"int104","nodeType":"ElementaryTypeName","src":"27588:6:28","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"27587:19:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6833,"nodeType":"FunctionDefinition","src":"28075:220:28","nodes":[],"body":{"id":6832,"nodeType":"Block","src":"28147:148:28","nodes":[],"statements":[{"expression":{"id":6820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6815,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6813,"src":"28157:10:28","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6818,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6810,"src":"28176:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6817,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28170:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":6816,"name":"int96","nodeType":"ElementaryTypeName","src":"28170:5:28","typeDescriptions":{}}},"id":6819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28170:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"28157:25:28","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":6821,"nodeType":"ExpressionStatement","src":"28157:25:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6822,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6813,"src":"28196:10:28","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6823,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6810,"src":"28210:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28196:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6831,"nodeType":"IfStatement","src":"28192:97:28","trueBody":{"id":6830,"nodeType":"Block","src":"28217:72:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":6826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28268:2:28","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":6827,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6810,"src":"28272:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6825,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"28238:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28238:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6829,"nodeType":"RevertStatement","src":"28231:47:28"}]}}]},"documentation":{"id":6808,"nodeType":"StructuredDocumentation","src":"27763:307:28","text":" @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt96","nameLocation":"28084:7:28","parameters":{"id":6811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6810,"mutability":"mutable","name":"value","nameLocation":"28099:5:28","nodeType":"VariableDeclaration","scope":6833,"src":"28092:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6809,"name":"int256","nodeType":"ElementaryTypeName","src":"28092:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28091:14:28"},"returnParameters":{"id":6814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6813,"mutability":"mutable","name":"downcasted","nameLocation":"28135:10:28","nodeType":"VariableDeclaration","scope":6833,"src":"28129:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":6812,"name":"int96","nodeType":"ElementaryTypeName","src":"28129:5:28","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"28128:18:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6859,"nodeType":"FunctionDefinition","src":"28613:220:28","nodes":[],"body":{"id":6858,"nodeType":"Block","src":"28685:148:28","nodes":[],"statements":[{"expression":{"id":6846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6841,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6839,"src":"28695:10:28","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6836,"src":"28714:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28708:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int88_$","typeString":"type(int88)"},"typeName":{"id":6842,"name":"int88","nodeType":"ElementaryTypeName","src":"28708:5:28","typeDescriptions":{}}},"id":6845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28708:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"src":"28695:25:28","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"id":6847,"nodeType":"ExpressionStatement","src":"28695:25:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6848,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6839,"src":"28734:10:28","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6836,"src":"28748:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28734:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6857,"nodeType":"IfStatement","src":"28730:97:28","trueBody":{"id":6856,"nodeType":"Block","src":"28755:72:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":6852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28806:2:28","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":6853,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6836,"src":"28810:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6851,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"28776:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28776:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6855,"nodeType":"RevertStatement","src":"28769:47:28"}]}}]},"documentation":{"id":6834,"nodeType":"StructuredDocumentation","src":"28301:307:28","text":" @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt88","nameLocation":"28622:7:28","parameters":{"id":6837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6836,"mutability":"mutable","name":"value","nameLocation":"28637:5:28","nodeType":"VariableDeclaration","scope":6859,"src":"28630:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6835,"name":"int256","nodeType":"ElementaryTypeName","src":"28630:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28629:14:28"},"returnParameters":{"id":6840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6839,"mutability":"mutable","name":"downcasted","nameLocation":"28673:10:28","nodeType":"VariableDeclaration","scope":6859,"src":"28667:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"},"typeName":{"id":6838,"name":"int88","nodeType":"ElementaryTypeName","src":"28667:5:28","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"visibility":"internal"}],"src":"28666:18:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6885,"nodeType":"FunctionDefinition","src":"29151:220:28","nodes":[],"body":{"id":6884,"nodeType":"Block","src":"29223:148:28","nodes":[],"statements":[{"expression":{"id":6872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6867,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6865,"src":"29233:10:28","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6870,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6862,"src":"29252:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29246:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int80_$","typeString":"type(int80)"},"typeName":{"id":6868,"name":"int80","nodeType":"ElementaryTypeName","src":"29246:5:28","typeDescriptions":{}}},"id":6871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29246:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"src":"29233:25:28","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"id":6873,"nodeType":"ExpressionStatement","src":"29233:25:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6874,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6865,"src":"29272:10:28","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6875,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6862,"src":"29286:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29272:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6883,"nodeType":"IfStatement","src":"29268:97:28","trueBody":{"id":6882,"nodeType":"Block","src":"29293:72:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":6878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29344:2:28","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":6879,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6862,"src":"29348:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6877,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"29314:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29314:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6881,"nodeType":"RevertStatement","src":"29307:47:28"}]}}]},"documentation":{"id":6860,"nodeType":"StructuredDocumentation","src":"28839:307:28","text":" @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt80","nameLocation":"29160:7:28","parameters":{"id":6863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6862,"mutability":"mutable","name":"value","nameLocation":"29175:5:28","nodeType":"VariableDeclaration","scope":6885,"src":"29168:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6861,"name":"int256","nodeType":"ElementaryTypeName","src":"29168:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29167:14:28"},"returnParameters":{"id":6866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6865,"mutability":"mutable","name":"downcasted","nameLocation":"29211:10:28","nodeType":"VariableDeclaration","scope":6885,"src":"29205:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"},"typeName":{"id":6864,"name":"int80","nodeType":"ElementaryTypeName","src":"29205:5:28","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"visibility":"internal"}],"src":"29204:18:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6911,"nodeType":"FunctionDefinition","src":"29689:220:28","nodes":[],"body":{"id":6910,"nodeType":"Block","src":"29761:148:28","nodes":[],"statements":[{"expression":{"id":6898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6893,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6891,"src":"29771:10:28","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6896,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6888,"src":"29790:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6895,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29784:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int72_$","typeString":"type(int72)"},"typeName":{"id":6894,"name":"int72","nodeType":"ElementaryTypeName","src":"29784:5:28","typeDescriptions":{}}},"id":6897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29784:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"src":"29771:25:28","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"id":6899,"nodeType":"ExpressionStatement","src":"29771:25:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6900,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6891,"src":"29810:10:28","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6901,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6888,"src":"29824:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29810:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6909,"nodeType":"IfStatement","src":"29806:97:28","trueBody":{"id":6908,"nodeType":"Block","src":"29831:72:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":6904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29882:2:28","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":6905,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6888,"src":"29886:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6903,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"29852:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29852:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6907,"nodeType":"RevertStatement","src":"29845:47:28"}]}}]},"documentation":{"id":6886,"nodeType":"StructuredDocumentation","src":"29377:307:28","text":" @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt72","nameLocation":"29698:7:28","parameters":{"id":6889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6888,"mutability":"mutable","name":"value","nameLocation":"29713:5:28","nodeType":"VariableDeclaration","scope":6911,"src":"29706:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6887,"name":"int256","nodeType":"ElementaryTypeName","src":"29706:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29705:14:28"},"returnParameters":{"id":6892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6891,"mutability":"mutable","name":"downcasted","nameLocation":"29749:10:28","nodeType":"VariableDeclaration","scope":6911,"src":"29743:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"},"typeName":{"id":6890,"name":"int72","nodeType":"ElementaryTypeName","src":"29743:5:28","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"visibility":"internal"}],"src":"29742:18:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6937,"nodeType":"FunctionDefinition","src":"30227:220:28","nodes":[],"body":{"id":6936,"nodeType":"Block","src":"30299:148:28","nodes":[],"statements":[{"expression":{"id":6924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6919,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"30309:10:28","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6922,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6914,"src":"30328:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30322:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":6920,"name":"int64","nodeType":"ElementaryTypeName","src":"30322:5:28","typeDescriptions":{}}},"id":6923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30322:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"src":"30309:25:28","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"id":6925,"nodeType":"ExpressionStatement","src":"30309:25:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6926,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"30348:10:28","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6927,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6914,"src":"30362:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30348:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6935,"nodeType":"IfStatement","src":"30344:97:28","trueBody":{"id":6934,"nodeType":"Block","src":"30369:72:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":6930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30420:2:28","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":6931,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6914,"src":"30424:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6929,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"30390:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30390:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6933,"nodeType":"RevertStatement","src":"30383:47:28"}]}}]},"documentation":{"id":6912,"nodeType":"StructuredDocumentation","src":"29915:307:28","text":" @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nameLocation":"30236:7:28","parameters":{"id":6915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6914,"mutability":"mutable","name":"value","nameLocation":"30251:5:28","nodeType":"VariableDeclaration","scope":6937,"src":"30244:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6913,"name":"int256","nodeType":"ElementaryTypeName","src":"30244:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30243:14:28"},"returnParameters":{"id":6918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6917,"mutability":"mutable","name":"downcasted","nameLocation":"30287:10:28","nodeType":"VariableDeclaration","scope":6937,"src":"30281:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":6916,"name":"int64","nodeType":"ElementaryTypeName","src":"30281:5:28","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"30280:18:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6963,"nodeType":"FunctionDefinition","src":"30765:220:28","nodes":[],"body":{"id":6962,"nodeType":"Block","src":"30837:148:28","nodes":[],"statements":[{"expression":{"id":6950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6945,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6943,"src":"30847:10:28","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6948,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6940,"src":"30866:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6947,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30860:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":6946,"name":"int56","nodeType":"ElementaryTypeName","src":"30860:5:28","typeDescriptions":{}}},"id":6949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30860:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"30847:25:28","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":6951,"nodeType":"ExpressionStatement","src":"30847:25:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6952,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6943,"src":"30886:10:28","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6953,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6940,"src":"30900:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30886:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6961,"nodeType":"IfStatement","src":"30882:97:28","trueBody":{"id":6960,"nodeType":"Block","src":"30907:72:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":6956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30958:2:28","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":6957,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6940,"src":"30962:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6955,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"30928:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30928:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6959,"nodeType":"RevertStatement","src":"30921:47:28"}]}}]},"documentation":{"id":6938,"nodeType":"StructuredDocumentation","src":"30453:307:28","text":" @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt56","nameLocation":"30774:7:28","parameters":{"id":6941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6940,"mutability":"mutable","name":"value","nameLocation":"30789:5:28","nodeType":"VariableDeclaration","scope":6963,"src":"30782:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6939,"name":"int256","nodeType":"ElementaryTypeName","src":"30782:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30781:14:28"},"returnParameters":{"id":6944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6943,"mutability":"mutable","name":"downcasted","nameLocation":"30825:10:28","nodeType":"VariableDeclaration","scope":6963,"src":"30819:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":6942,"name":"int56","nodeType":"ElementaryTypeName","src":"30819:5:28","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"src":"30818:18:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":6989,"nodeType":"FunctionDefinition","src":"31303:220:28","nodes":[],"body":{"id":6988,"nodeType":"Block","src":"31375:148:28","nodes":[],"statements":[{"expression":{"id":6976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6971,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6969,"src":"31385:10:28","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6974,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6966,"src":"31404:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31398:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int48_$","typeString":"type(int48)"},"typeName":{"id":6972,"name":"int48","nodeType":"ElementaryTypeName","src":"31398:5:28","typeDescriptions":{}}},"id":6975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31398:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"src":"31385:25:28","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"id":6977,"nodeType":"ExpressionStatement","src":"31385:25:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6978,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6969,"src":"31424:10:28","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6979,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6966,"src":"31438:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31424:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6987,"nodeType":"IfStatement","src":"31420:97:28","trueBody":{"id":6986,"nodeType":"Block","src":"31445:72:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":6982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31496:2:28","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":6983,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6966,"src":"31500:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6981,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"31466:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31466:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6985,"nodeType":"RevertStatement","src":"31459:47:28"}]}}]},"documentation":{"id":6964,"nodeType":"StructuredDocumentation","src":"30991:307:28","text":" @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt48","nameLocation":"31312:7:28","parameters":{"id":6967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6966,"mutability":"mutable","name":"value","nameLocation":"31327:5:28","nodeType":"VariableDeclaration","scope":6989,"src":"31320:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6965,"name":"int256","nodeType":"ElementaryTypeName","src":"31320:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31319:14:28"},"returnParameters":{"id":6970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6969,"mutability":"mutable","name":"downcasted","nameLocation":"31363:10:28","nodeType":"VariableDeclaration","scope":6989,"src":"31357:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"},"typeName":{"id":6968,"name":"int48","nodeType":"ElementaryTypeName","src":"31357:5:28","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"visibility":"internal"}],"src":"31356:18:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":7015,"nodeType":"FunctionDefinition","src":"31841:220:28","nodes":[],"body":{"id":7014,"nodeType":"Block","src":"31913:148:28","nodes":[],"statements":[{"expression":{"id":7002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6997,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6995,"src":"31923:10:28","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7000,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6992,"src":"31942:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31936:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int40_$","typeString":"type(int40)"},"typeName":{"id":6998,"name":"int40","nodeType":"ElementaryTypeName","src":"31936:5:28","typeDescriptions":{}}},"id":7001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31936:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"src":"31923:25:28","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"id":7003,"nodeType":"ExpressionStatement","src":"31923:25:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7004,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6995,"src":"31962:10:28","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7005,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6992,"src":"31976:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31962:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7013,"nodeType":"IfStatement","src":"31958:97:28","trueBody":{"id":7012,"nodeType":"Block","src":"31983:72:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":7008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32034:2:28","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":7009,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6992,"src":"32038:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7007,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"32004:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":7010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32004:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7011,"nodeType":"RevertStatement","src":"31997:47:28"}]}}]},"documentation":{"id":6990,"nodeType":"StructuredDocumentation","src":"31529:307:28","text":" @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt40","nameLocation":"31850:7:28","parameters":{"id":6993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6992,"mutability":"mutable","name":"value","nameLocation":"31865:5:28","nodeType":"VariableDeclaration","scope":7015,"src":"31858:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6991,"name":"int256","nodeType":"ElementaryTypeName","src":"31858:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31857:14:28"},"returnParameters":{"id":6996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6995,"mutability":"mutable","name":"downcasted","nameLocation":"31901:10:28","nodeType":"VariableDeclaration","scope":7015,"src":"31895:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"},"typeName":{"id":6994,"name":"int40","nodeType":"ElementaryTypeName","src":"31895:5:28","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"visibility":"internal"}],"src":"31894:18:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":7041,"nodeType":"FunctionDefinition","src":"32379:220:28","nodes":[],"body":{"id":7040,"nodeType":"Block","src":"32451:148:28","nodes":[],"statements":[{"expression":{"id":7028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7023,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7021,"src":"32461:10:28","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7026,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7018,"src":"32480:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32474:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":7024,"name":"int32","nodeType":"ElementaryTypeName","src":"32474:5:28","typeDescriptions":{}}},"id":7027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32474:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"src":"32461:25:28","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"id":7029,"nodeType":"ExpressionStatement","src":"32461:25:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7030,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7021,"src":"32500:10:28","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7031,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7018,"src":"32514:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32500:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7039,"nodeType":"IfStatement","src":"32496:97:28","trueBody":{"id":7038,"nodeType":"Block","src":"32521:72:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":7034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32572:2:28","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":7035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7018,"src":"32576:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7033,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"32542:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":7036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32542:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7037,"nodeType":"RevertStatement","src":"32535:47:28"}]}}]},"documentation":{"id":7016,"nodeType":"StructuredDocumentation","src":"32067:307:28","text":" @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nameLocation":"32388:7:28","parameters":{"id":7019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7018,"mutability":"mutable","name":"value","nameLocation":"32403:5:28","nodeType":"VariableDeclaration","scope":7041,"src":"32396:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7017,"name":"int256","nodeType":"ElementaryTypeName","src":"32396:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32395:14:28"},"returnParameters":{"id":7022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7021,"mutability":"mutable","name":"downcasted","nameLocation":"32439:10:28","nodeType":"VariableDeclaration","scope":7041,"src":"32433:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":7020,"name":"int32","nodeType":"ElementaryTypeName","src":"32433:5:28","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"32432:18:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":7067,"nodeType":"FunctionDefinition","src":"32917:220:28","nodes":[],"body":{"id":7066,"nodeType":"Block","src":"32989:148:28","nodes":[],"statements":[{"expression":{"id":7054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7049,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7047,"src":"32999:10:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7044,"src":"33018:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7051,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33012:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":7050,"name":"int24","nodeType":"ElementaryTypeName","src":"33012:5:28","typeDescriptions":{}}},"id":7053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33012:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"32999:25:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":7055,"nodeType":"ExpressionStatement","src":"32999:25:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7056,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7047,"src":"33038:10:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7057,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7044,"src":"33052:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33038:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7065,"nodeType":"IfStatement","src":"33034:97:28","trueBody":{"id":7064,"nodeType":"Block","src":"33059:72:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":7060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33110:2:28","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":7061,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7044,"src":"33114:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7059,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"33080:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":7062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33080:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7063,"nodeType":"RevertStatement","src":"33073:47:28"}]}}]},"documentation":{"id":7042,"nodeType":"StructuredDocumentation","src":"32605:307:28","text":" @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt24","nameLocation":"32926:7:28","parameters":{"id":7045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7044,"mutability":"mutable","name":"value","nameLocation":"32941:5:28","nodeType":"VariableDeclaration","scope":7067,"src":"32934:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7043,"name":"int256","nodeType":"ElementaryTypeName","src":"32934:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32933:14:28"},"returnParameters":{"id":7048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7047,"mutability":"mutable","name":"downcasted","nameLocation":"32977:10:28","nodeType":"VariableDeclaration","scope":7067,"src":"32971:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":7046,"name":"int24","nodeType":"ElementaryTypeName","src":"32971:5:28","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"32970:18:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":7093,"nodeType":"FunctionDefinition","src":"33455:220:28","nodes":[],"body":{"id":7092,"nodeType":"Block","src":"33527:148:28","nodes":[],"statements":[{"expression":{"id":7080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7075,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7073,"src":"33537:10:28","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7078,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7070,"src":"33556:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7077,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33550:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":7076,"name":"int16","nodeType":"ElementaryTypeName","src":"33550:5:28","typeDescriptions":{}}},"id":7079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33550:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"33537:25:28","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":7081,"nodeType":"ExpressionStatement","src":"33537:25:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7082,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7073,"src":"33576:10:28","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7083,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7070,"src":"33590:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33576:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7091,"nodeType":"IfStatement","src":"33572:97:28","trueBody":{"id":7090,"nodeType":"Block","src":"33597:72:28","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":7086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33648:2:28","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":7087,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7070,"src":"33652:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7085,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"33618:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":7088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33618:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7089,"nodeType":"RevertStatement","src":"33611:47:28"}]}}]},"documentation":{"id":7068,"nodeType":"StructuredDocumentation","src":"33143:307:28","text":" @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nameLocation":"33464:7:28","parameters":{"id":7071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7070,"mutability":"mutable","name":"value","nameLocation":"33479:5:28","nodeType":"VariableDeclaration","scope":7093,"src":"33472:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7069,"name":"int256","nodeType":"ElementaryTypeName","src":"33472:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33471:14:28"},"returnParameters":{"id":7074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7073,"mutability":"mutable","name":"downcasted","nameLocation":"33515:10:28","nodeType":"VariableDeclaration","scope":7093,"src":"33509:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":7072,"name":"int16","nodeType":"ElementaryTypeName","src":"33509:5:28","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"33508:18:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":7119,"nodeType":"FunctionDefinition","src":"33988:216:28","nodes":[],"body":{"id":7118,"nodeType":"Block","src":"34058:146:28","nodes":[],"statements":[{"expression":{"id":7106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7101,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7099,"src":"34068:10:28","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7104,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"34086:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7103,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34081:4:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":7102,"name":"int8","nodeType":"ElementaryTypeName","src":"34081:4:28","typeDescriptions":{}}},"id":7105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34081:11:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"src":"34068:24:28","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"id":7107,"nodeType":"ExpressionStatement","src":"34068:24:28"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7108,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7099,"src":"34106:10:28","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7109,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"34120:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34106:19:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7117,"nodeType":"IfStatement","src":"34102:96:28","trueBody":{"id":7116,"nodeType":"Block","src":"34127:71:28","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":7112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34178:1:28","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":7113,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"34181:5:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7111,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5417,"src":"34148:29:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":7114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34148:39:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7115,"nodeType":"RevertStatement","src":"34141:46:28"}]}}]},"documentation":{"id":7094,"nodeType":"StructuredDocumentation","src":"33681:302:28","text":" @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits"},"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nameLocation":"33997:6:28","parameters":{"id":7097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7096,"mutability":"mutable","name":"value","nameLocation":"34011:5:28","nodeType":"VariableDeclaration","scope":7119,"src":"34004:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7095,"name":"int256","nodeType":"ElementaryTypeName","src":"34004:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34003:14:28"},"returnParameters":{"id":7100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7099,"mutability":"mutable","name":"downcasted","nameLocation":"34046:10:28","nodeType":"VariableDeclaration","scope":7119,"src":"34041:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":7098,"name":"int8","nodeType":"ElementaryTypeName","src":"34041:4:28","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"34040:17:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":7149,"nodeType":"FunctionDefinition","src":"34380:314:28","nodes":[],"body":{"id":7148,"nodeType":"Block","src":"34444:250:28","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7122,"src":"34557:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":7132,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34578:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":7131,"name":"int256","nodeType":"ElementaryTypeName","src":"34578:6:28","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":7130,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"34573:4:28","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34573:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":7134,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34586:3:28","memberName":"max","nodeType":"MemberAccess","src":"34573:16:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34565:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7128,"name":"uint256","nodeType":"ElementaryTypeName","src":"34565:7:28","typeDescriptions":{}}},"id":7135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34565:25:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34557:33:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7142,"nodeType":"IfStatement","src":"34553:105:28","trueBody":{"id":7141,"nodeType":"Block","src":"34592:66:28","statements":[{"errorCall":{"arguments":[{"id":7138,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7122,"src":"34641:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7137,"name":"SafeCastOverflowedUintToInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5422,"src":"34613:27:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":7139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34613:34:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7140,"nodeType":"RevertStatement","src":"34606:41:28"}]}},{"expression":{"arguments":[{"id":7145,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7122,"src":"34681:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34674:6:28","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":7143,"name":"int256","nodeType":"ElementaryTypeName","src":"34674:6:28","typeDescriptions":{}}},"id":7146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34674:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":7126,"id":7147,"nodeType":"Return","src":"34667:20:28"}]},"documentation":{"id":7120,"nodeType":"StructuredDocumentation","src":"34210:165:28","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"34389:8:28","parameters":{"id":7123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7122,"mutability":"mutable","name":"value","nameLocation":"34406:5:28","nodeType":"VariableDeclaration","scope":7149,"src":"34398:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7121,"name":"uint256","nodeType":"ElementaryTypeName","src":"34398:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34397:15:28"},"returnParameters":{"id":7126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7125,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7149,"src":"34436:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7124,"name":"int256","nodeType":"ElementaryTypeName","src":"34436:6:28","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34435:8:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":7159,"nodeType":"FunctionDefinition","src":"34795:145:28","nodes":[],"body":{"id":7158,"nodeType":"Block","src":"34853:87:28","nodes":[],"statements":[{"AST":{"nativeSrc":"34888:46:28","nodeType":"YulBlock","src":"34888:46:28","statements":[{"nativeSrc":"34902:22:28","nodeType":"YulAssignment","src":"34902:22:28","value":{"arguments":[{"arguments":[{"name":"b","nativeSrc":"34921:1:28","nodeType":"YulIdentifier","src":"34921:1:28"}],"functionName":{"name":"iszero","nativeSrc":"34914:6:28","nodeType":"YulIdentifier","src":"34914:6:28"},"nativeSrc":"34914:9:28","nodeType":"YulFunctionCall","src":"34914:9:28"}],"functionName":{"name":"iszero","nativeSrc":"34907:6:28","nodeType":"YulIdentifier","src":"34907:6:28"},"nativeSrc":"34907:17:28","nodeType":"YulFunctionCall","src":"34907:17:28"},"variableNames":[{"name":"u","nativeSrc":"34902:1:28","nodeType":"YulIdentifier","src":"34902:1:28"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7152,"isOffset":false,"isSlot":false,"src":"34921:1:28","valueSize":1},{"declaration":7155,"isOffset":false,"isSlot":false,"src":"34902:1:28","valueSize":1}],"flags":["memory-safe"],"id":7157,"nodeType":"InlineAssembly","src":"34863:71:28"}]},"documentation":{"id":7150,"nodeType":"StructuredDocumentation","src":"34700:90:28","text":" @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump."},"implemented":true,"kind":"function","modifiers":[],"name":"toUint","nameLocation":"34804:6:28","parameters":{"id":7153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7152,"mutability":"mutable","name":"b","nameLocation":"34816:1:28","nodeType":"VariableDeclaration","scope":7159,"src":"34811:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7151,"name":"bool","nodeType":"ElementaryTypeName","src":"34811:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34810:8:28"},"returnParameters":{"id":7156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7155,"mutability":"mutable","name":"u","nameLocation":"34850:1:28","nodeType":"VariableDeclaration","scope":7159,"src":"34842:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7154,"name":"uint256","nodeType":"ElementaryTypeName","src":"34842:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34841:11:28"},"scope":7160,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"SafeCast","contractDependencies":[],"contractKind":"library","documentation":{"id":5398,"nodeType":"StructuredDocumentation","src":"218:550:28","text":" @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."},"fullyImplemented":true,"linearizedBaseContracts":[7160],"name":"SafeCast","nameLocation":"777:8:28","scope":7161,"usedErrors":[5405,5410,5417,5422],"usedEvents":[]}],"license":"MIT"}},"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"id":0,"ast":{"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol","id":365,"exportedSymbols":{"AccessControlUpgradeable":[364],"ContextUpgradeable":[1708],"ERC165Upgradeable":[1748],"IAccessControl":[1831],"IERC165":[3774],"Initializable":[1480]},"nodeType":"SourceUnit","src":"108:8225:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"108:24:0","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":3,"nodeType":"ImportDirective","src":"134:81:0","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol","file":"@openzeppelin/contracts/access/IAccessControl.sol","nameLocation":"-1:-1:-1","scope":365,"sourceUnit":1832,"symbolAliases":[{"foreign":{"id":2,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"142:14:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":5,"nodeType":"ImportDirective","src":"216:67:0","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","nameLocation":"-1:-1:-1","scope":365,"sourceUnit":1709,"symbolAliases":[{"foreign":{"id":4,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1708,"src":"224:18:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":7,"nodeType":"ImportDirective","src":"284:80:0","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","nameLocation":"-1:-1:-1","scope":365,"sourceUnit":3775,"symbolAliases":[{"foreign":{"id":6,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3774,"src":"292:7:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9,"nodeType":"ImportDirective","src":"365:79:0","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol","file":"../utils/introspection/ERC165Upgradeable.sol","nameLocation":"-1:-1:-1","scope":365,"sourceUnit":1749,"symbolAliases":[{"foreign":{"id":8,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1748,"src":"373:17:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":11,"nodeType":"ImportDirective","src":"445:63:0","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":365,"sourceUnit":1481,"symbolAliases":[{"foreign":{"id":10,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1480,"src":"453:13:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":364,"nodeType":"ContractDefinition","src":"2171:6161:0","nodes":[{"id":27,"nodeType":"StructDefinition","src":"2292:100:0","nodes":[],"canonicalName":"AccessControlUpgradeable.RoleData","members":[{"constant":false,"id":24,"mutability":"mutable","name":"hasRole","nameLocation":"2351:7:0","nodeType":"VariableDeclaration","scope":27,"src":"2318:40:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":23,"keyName":"account","keyNameLocation":"2334:7:0","keyType":{"id":21,"name":"address","nodeType":"ElementaryTypeName","src":"2326:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2318:32:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":22,"name":"bool","nodeType":"ElementaryTypeName","src":"2345:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"adminRole","nameLocation":"2376:9:0","nodeType":"VariableDeclaration","scope":27,"src":"2368:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":25,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2368:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"RoleData","nameLocation":"2299:8:0","scope":364,"visibility":"public"},{"id":30,"nodeType":"VariableDeclaration","src":"2398:49:0","nodes":[],"constant":true,"functionSelector":"a217fddf","mutability":"constant","name":"DEFAULT_ADMIN_ROLE","nameLocation":"2422:18:0","scope":364,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":28,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2398:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"30783030","id":29,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2443:4:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"id":37,"nodeType":"StructDefinition","src":"2531:85:0","nodes":[],"canonicalName":"AccessControlUpgradeable.AccessControlStorage","documentation":{"id":31,"nodeType":"StructuredDocumentation","src":"2455:71:0","text":"@custom:storage-location erc7201:openzeppelin.storage.AccessControl"},"members":[{"constant":false,"id":36,"mutability":"mutable","name":"_roles","nameLocation":"2603:6:0","nodeType":"VariableDeclaration","scope":37,"src":"2569:40:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$27_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData)"},"typeName":{"id":35,"keyName":"role","keyNameLocation":"2585:4:0","keyType":{"id":32,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2577:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2569:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$27_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":34,"nodeType":"UserDefinedTypeName","pathNode":{"id":33,"name":"RoleData","nameLocations":["2593:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":27,"src":"2593:8:0"},"referencedDeclaration":27,"src":"2593:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$27_storage_ptr","typeString":"struct AccessControlUpgradeable.RoleData"}}},"visibility":"internal"}],"name":"AccessControlStorage","nameLocation":"2538:20:0","scope":364,"visibility":"public"},{"id":40,"nodeType":"VariableDeclaration","src":"2739:122:0","nodes":[],"constant":true,"mutability":"constant","name":"AccessControlStorageLocation","nameLocation":"2764:28:0","scope":364,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":38,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2739:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830326464376263376465633464636565646461373735653538646435343165303861313136633663353338313563306264303238313932663762363236383030","id":39,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2795:66:0","typeDescriptions":{"typeIdentifier":"t_rational_1295953201772911215391058989745868821651057887752387839782086074958115661824_by_1","typeString":"int_const 1295...(68 digits omitted)...1824"},"value":"0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800"},"visibility":"private"},{"id":48,"nodeType":"FunctionDefinition","src":"2868:177:0","nodes":[],"body":{"id":47,"nodeType":"Block","src":"2958:87:0","nodes":[],"statements":[{"AST":{"nativeSrc":"2977:62:0","nodeType":"YulBlock","src":"2977:62:0","statements":[{"nativeSrc":"2991:38:0","nodeType":"YulAssignment","src":"2991:38:0","value":{"name":"AccessControlStorageLocation","nativeSrc":"3001:28:0","nodeType":"YulIdentifier","src":"3001:28:0"},"variableNames":[{"name":"$.slot","nativeSrc":"2991:6:0","nodeType":"YulIdentifier","src":"2991:6:0"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":44,"isOffset":false,"isSlot":true,"src":"2991:6:0","suffix":"slot","valueSize":1},{"declaration":40,"isOffset":false,"isSlot":false,"src":"3001:28:0","valueSize":1}],"id":46,"nodeType":"InlineAssembly","src":"2968:71:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getAccessControlStorage","nameLocation":"2877:24:0","parameters":{"id":41,"nodeType":"ParameterList","parameters":[],"src":"2901:2:0"},"returnParameters":{"id":45,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44,"mutability":"mutable","name":"$","nameLocation":"2955:1:0","nodeType":"VariableDeclaration","scope":48,"src":"2926:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":43,"nodeType":"UserDefinedTypeName","pathNode":{"id":42,"name":"AccessControlStorage","nameLocations":["2926:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":37,"src":"2926:20:0"},"referencedDeclaration":37,"src":"2926:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"src":"2925:32:0"},"scope":364,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":59,"nodeType":"ModifierDefinition","src":"3230:76:0","nodes":[],"body":{"id":58,"nodeType":"Block","src":"3262:44:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":54,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"3283:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":53,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[131,152],"referencedDeclaration":131,"src":"3272:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":55,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3272:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56,"nodeType":"ExpressionStatement","src":"3272:16:0"},{"id":57,"nodeType":"PlaceholderStatement","src":"3298:1:0"}]},"documentation":{"id":49,"nodeType":"StructuredDocumentation","src":"3051:174:0","text":" @dev Modifier that checks that an account has a specific role. Reverts\n with an {AccessControlUnauthorizedAccount} error including the required role."},"name":"onlyRole","nameLocation":"3239:8:0","parameters":{"id":52,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51,"mutability":"mutable","name":"role","nameLocation":"3256:4:0","nodeType":"VariableDeclaration","scope":59,"src":"3248:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":50,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3248:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3247:14:0"},"virtual":false,"visibility":"internal"},{"id":65,"nodeType":"FunctionDefinition","src":"3312:65:0","nodes":[],"body":{"id":64,"nodeType":"Block","src":"3370:7:0","nodes":[],"statements":[]},"implemented":true,"kind":"function","modifiers":[{"id":62,"kind":"modifierInvocation","modifierName":{"id":61,"name":"onlyInitializing","nameLocations":["3353:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":1375,"src":"3353:16:0"},"nodeType":"ModifierInvocation","src":"3353:16:0"}],"name":"__AccessControl_init","nameLocation":"3321:20:0","parameters":{"id":60,"nodeType":"ParameterList","parameters":[],"src":"3341:2:0"},"returnParameters":{"id":63,"nodeType":"ParameterList","parameters":[],"src":"3370:0:0"},"scope":364,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":71,"nodeType":"FunctionDefinition","src":"3383:75:0","nodes":[],"body":{"id":70,"nodeType":"Block","src":"3451:7:0","nodes":[],"statements":[]},"implemented":true,"kind":"function","modifiers":[{"id":68,"kind":"modifierInvocation","modifierName":{"id":67,"name":"onlyInitializing","nameLocations":["3434:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":1375,"src":"3434:16:0"},"nodeType":"ModifierInvocation","src":"3434:16:0"}],"name":"__AccessControl_init_unchained","nameLocation":"3392:30:0","parameters":{"id":66,"nodeType":"ParameterList","parameters":[],"src":"3422:2:0"},"returnParameters":{"id":69,"nodeType":"ParameterList","parameters":[],"src":"3451:0:0"},"scope":364,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":93,"nodeType":"FunctionDefinition","src":"3491:202:0","nodes":[],"body":{"id":92,"nodeType":"Block","src":"3582:111:0","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":90,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":85,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74,"src":"3599:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":82,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"3619:14:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$1831_$","typeString":"type(contract IAccessControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$1831_$","typeString":"type(contract IAccessControl)"}],"id":81,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3614:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":83,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3614:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAccessControl_$1831","typeString":"type(contract IAccessControl)"}},"id":84,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3635:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"3614:32:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"3599:47:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":88,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74,"src":"3674:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":86,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3650:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlUpgradeable_$364_$","typeString":"type(contract super AccessControlUpgradeable)"}},"id":87,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3656:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1747,"src":"3650:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":89,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3650:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3599:87:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":79,"id":91,"nodeType":"Return","src":"3592:94:0"}]},"baseFunctions":[1747],"documentation":{"id":72,"nodeType":"StructuredDocumentation","src":"3463:23:0","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"3500:17:0","overrides":{"id":76,"nodeType":"OverrideSpecifier","overrides":[],"src":"3558:8:0"},"parameters":{"id":75,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"interfaceId","nameLocation":"3525:11:0","nodeType":"VariableDeclaration","scope":93,"src":"3518:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":73,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3518:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3517:20:0"},"returnParameters":{"id":79,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":93,"src":"3576:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77,"name":"bool","nodeType":"ElementaryTypeName","src":"3576:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3575:6:0"},"scope":364,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":118,"nodeType":"FunctionDefinition","src":"3780:207:0","nodes":[],"body":{"id":117,"nodeType":"Block","src":"3863:124:0","nodes":[],"statements":[{"assignments":[105],"declarations":[{"constant":false,"id":105,"mutability":"mutable","name":"$","nameLocation":"3902:1:0","nodeType":"VariableDeclaration","scope":117,"src":"3873:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":104,"nodeType":"UserDefinedTypeName","pathNode":{"id":103,"name":"AccessControlStorage","nameLocations":["3873:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":37,"src":"3873:20:0"},"referencedDeclaration":37,"src":"3873:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":108,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":106,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48,"src":"3906:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$37_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3906:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3873:59:0"},{"expression":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":109,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":105,"src":"3949:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":110,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3951:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":36,"src":"3949:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$27_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":112,"indexExpression":{"id":111,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96,"src":"3958:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3949:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$27_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":113,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3964:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":24,"src":"3949:22:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":115,"indexExpression":{"id":114,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"3972:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3949:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":102,"id":116,"nodeType":"Return","src":"3942:38:0"}]},"baseFunctions":[1798],"documentation":{"id":94,"nodeType":"StructuredDocumentation","src":"3699:76:0","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","implemented":true,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"3789:7:0","parameters":{"id":99,"nodeType":"ParameterList","parameters":[{"constant":false,"id":96,"mutability":"mutable","name":"role","nameLocation":"3805:4:0","nodeType":"VariableDeclaration","scope":118,"src":"3797:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":95,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3797:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":98,"mutability":"mutable","name":"account","nameLocation":"3819:7:0","nodeType":"VariableDeclaration","scope":118,"src":"3811:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":97,"name":"address","nodeType":"ElementaryTypeName","src":"3811:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3796:31:0"},"returnParameters":{"id":102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":101,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":118,"src":"3857:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":100,"name":"bool","nodeType":"ElementaryTypeName","src":"3857:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3856:6:0"},"scope":364,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":131,"nodeType":"FunctionDefinition","src":"4196:103:0","nodes":[],"body":{"id":130,"nodeType":"Block","src":"4252:47:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":125,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121,"src":"4273:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":126,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1690,"src":"4279:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4279:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":124,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[131,152],"referencedDeclaration":152,"src":"4262:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) view"}},"id":128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4262:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":129,"nodeType":"ExpressionStatement","src":"4262:30:0"}]},"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"3993:198:0","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"4205:10:0","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"mutability":"mutable","name":"role","nameLocation":"4224:4:0","nodeType":"VariableDeclaration","scope":131,"src":"4216:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":120,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4216:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4215:14:0"},"returnParameters":{"id":123,"nodeType":"ParameterList","parameters":[],"src":"4252:0:0"},"scope":364,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":152,"nodeType":"FunctionDefinition","src":"4429:197:0","nodes":[],"body":{"id":151,"nodeType":"Block","src":"4502:124:0","nodes":[],"statements":[{"condition":{"id":143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4516:23:0","subExpression":{"arguments":[{"id":140,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"4525:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":141,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136,"src":"4531:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":139,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118,"src":"4517:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4517:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":150,"nodeType":"IfStatement","src":"4512:108:0","trueBody":{"id":149,"nodeType":"Block","src":"4541:79:0","statements":[{"errorCall":{"arguments":[{"id":145,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136,"src":"4595:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":146,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"4604:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":144,"name":"AccessControlUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1758,"src":"4562:32:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes32_$returns$_t_error_$","typeString":"function (address,bytes32) pure returns (error)"}},"id":147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4562:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":148,"nodeType":"RevertStatement","src":"4555:54:0"}]}}]},"documentation":{"id":132,"nodeType":"StructuredDocumentation","src":"4305:119:0","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n is missing `role`."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"4438:10:0","parameters":{"id":137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134,"mutability":"mutable","name":"role","nameLocation":"4457:4:0","nodeType":"VariableDeclaration","scope":152,"src":"4449:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":133,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4449:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":136,"mutability":"mutable","name":"account","nameLocation":"4471:7:0","nodeType":"VariableDeclaration","scope":152,"src":"4463:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":135,"name":"address","nodeType":"ElementaryTypeName","src":"4463:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4448:31:0"},"returnParameters":{"id":138,"nodeType":"ParameterList","parameters":[],"src":"4502:0:0"},"scope":364,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":173,"nodeType":"FunctionDefinition","src":"4807:191:0","nodes":[],"body":{"id":172,"nodeType":"Block","src":"4881:117:0","nodes":[],"statements":[{"assignments":[162],"declarations":[{"constant":false,"id":162,"mutability":"mutable","name":"$","nameLocation":"4920:1:0","nodeType":"VariableDeclaration","scope":172,"src":"4891:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":161,"nodeType":"UserDefinedTypeName","pathNode":{"id":160,"name":"AccessControlStorage","nameLocations":["4891:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":37,"src":"4891:20:0"},"referencedDeclaration":37,"src":"4891:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":165,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":163,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48,"src":"4924:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$37_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4924:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4891:59:0"},{"expression":{"expression":{"baseExpression":{"expression":{"id":166,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":162,"src":"4967:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":167,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4969:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":36,"src":"4967:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$27_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":169,"indexExpression":{"id":168,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":155,"src":"4976:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4967:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$27_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":170,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4982:9:0","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":26,"src":"4967:24:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":159,"id":171,"nodeType":"Return","src":"4960:31:0"}]},"baseFunctions":[1806],"documentation":{"id":153,"nodeType":"StructuredDocumentation","src":"4632:170:0","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}."},"functionSelector":"248a9ca3","implemented":true,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"4816:12:0","parameters":{"id":156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":155,"mutability":"mutable","name":"role","nameLocation":"4837:4:0","nodeType":"VariableDeclaration","scope":173,"src":"4829:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":154,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4829:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4828:14:0"},"returnParameters":{"id":159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":158,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":173,"src":"4872:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":157,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4872:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4871:9:0"},"scope":364,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":192,"nodeType":"FunctionDefinition","src":"5294:136:0","nodes":[],"body":{"id":191,"nodeType":"Block","src":"5388:42:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":187,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":176,"src":"5409:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":188,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"5415:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":186,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":317,"src":"5398:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5398:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":190,"nodeType":"ExpressionStatement","src":"5398:25:0"}]},"baseFunctions":[1814],"documentation":{"id":174,"nodeType":"StructuredDocumentation","src":"5004:285:0","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleGranted} event."},"functionSelector":"2f2ff15d","implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":182,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":176,"src":"5381:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":181,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"5368:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5368:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":184,"kind":"modifierInvocation","modifierName":{"id":180,"name":"onlyRole","nameLocations":["5359:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":59,"src":"5359:8:0"},"nodeType":"ModifierInvocation","src":"5359:28:0"}],"name":"grantRole","nameLocation":"5303:9:0","parameters":{"id":179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":176,"mutability":"mutable","name":"role","nameLocation":"5321:4:0","nodeType":"VariableDeclaration","scope":192,"src":"5313:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":175,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5313:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":178,"mutability":"mutable","name":"account","nameLocation":"5335:7:0","nodeType":"VariableDeclaration","scope":192,"src":"5327:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":177,"name":"address","nodeType":"ElementaryTypeName","src":"5327:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5312:31:0"},"returnParameters":{"id":185,"nodeType":"ParameterList","parameters":[],"src":"5388:0:0"},"scope":364,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":211,"nodeType":"FunctionDefinition","src":"5710:138:0","nodes":[],"body":{"id":210,"nodeType":"Block","src":"5805:43:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":206,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"5827:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":207,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":197,"src":"5833:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":205,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":363,"src":"5815:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5815:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":209,"nodeType":"ExpressionStatement","src":"5815:26:0"}]},"baseFunctions":[1822],"documentation":{"id":193,"nodeType":"StructuredDocumentation","src":"5436:269:0","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleRevoked} event."},"functionSelector":"d547741f","implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":201,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"5798:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":200,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"5785:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5785:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":203,"kind":"modifierInvocation","modifierName":{"id":199,"name":"onlyRole","nameLocations":["5776:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":59,"src":"5776:8:0"},"nodeType":"ModifierInvocation","src":"5776:28:0"}],"name":"revokeRole","nameLocation":"5719:10:0","parameters":{"id":198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":195,"mutability":"mutable","name":"role","nameLocation":"5738:4:0","nodeType":"VariableDeclaration","scope":211,"src":"5730:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":194,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5730:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":197,"mutability":"mutable","name":"account","nameLocation":"5752:7:0","nodeType":"VariableDeclaration","scope":211,"src":"5744:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":196,"name":"address","nodeType":"ElementaryTypeName","src":"5744:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5729:31:0"},"returnParameters":{"id":204,"nodeType":"ParameterList","parameters":[],"src":"5805:0:0"},"scope":364,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":234,"nodeType":"FunctionDefinition","src":"6396:245:0","nodes":[],"body":{"id":233,"nodeType":"Block","src":"6475:166:0","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":219,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":216,"src":"6489:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":220,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1690,"src":"6511:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6511:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6489:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":227,"nodeType":"IfStatement","src":"6485:102:0","trueBody":{"id":226,"nodeType":"Block","src":"6525:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":223,"name":"AccessControlBadConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1761,"src":"6546:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6546:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":225,"nodeType":"RevertStatement","src":"6539:37:0"}]}},{"expression":{"arguments":[{"id":229,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":214,"src":"6609:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":230,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":216,"src":"6615:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":228,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":363,"src":"6597:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6597:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":232,"nodeType":"ExpressionStatement","src":"6597:37:0"}]},"baseFunctions":[1830],"documentation":{"id":212,"nodeType":"StructuredDocumentation","src":"5854:537:0","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been revoked `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`.\n May emit a {RoleRevoked} event."},"functionSelector":"36568abe","implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"6405:12:0","parameters":{"id":217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":214,"mutability":"mutable","name":"role","nameLocation":"6426:4:0","nodeType":"VariableDeclaration","scope":234,"src":"6418:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":213,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6418:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":216,"mutability":"mutable","name":"callerConfirmation","nameLocation":"6440:18:0","nodeType":"VariableDeclaration","scope":234,"src":"6432:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":215,"name":"address","nodeType":"ElementaryTypeName","src":"6432:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6417:42:0"},"returnParameters":{"id":218,"nodeType":"ParameterList","parameters":[],"src":"6475:0:0"},"scope":364,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":270,"nodeType":"FunctionDefinition","src":"6766:318:0","nodes":[],"body":{"id":269,"nodeType":"Block","src":"6839:245:0","nodes":[],"statements":[{"assignments":[244],"declarations":[{"constant":false,"id":244,"mutability":"mutable","name":"$","nameLocation":"6878:1:0","nodeType":"VariableDeclaration","scope":269,"src":"6849:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":243,"nodeType":"UserDefinedTypeName","pathNode":{"id":242,"name":"AccessControlStorage","nameLocations":["6849:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":37,"src":"6849:20:0"},"referencedDeclaration":37,"src":"6849:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":247,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":245,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48,"src":"6882:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$37_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6882:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6849:59:0"},{"assignments":[249],"declarations":[{"constant":false,"id":249,"mutability":"mutable","name":"previousAdminRole","nameLocation":"6926:17:0","nodeType":"VariableDeclaration","scope":269,"src":"6918:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":248,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6918:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":253,"initialValue":{"arguments":[{"id":251,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"6959:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":250,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":173,"src":"6946:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6946:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6918:46:0"},{"expression":{"id":261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":254,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"6974:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":257,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6976:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":36,"src":"6974:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$27_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":258,"indexExpression":{"id":256,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"6983:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6974:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$27_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":259,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6989:9:0","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":26,"src":"6974:24:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":260,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":239,"src":"7001:9:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6974:36:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":262,"nodeType":"ExpressionStatement","src":"6974:36:0"},{"eventCall":{"arguments":[{"id":264,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"7042:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":265,"name":"previousAdminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":249,"src":"7048:17:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":266,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":239,"src":"7067:9:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":263,"name":"RoleAdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1770,"src":"7025:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7025:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":268,"nodeType":"EmitStatement","src":"7020:57:0"}]},"documentation":{"id":235,"nodeType":"StructuredDocumentation","src":"6647:114:0","text":" @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"6775:13:0","parameters":{"id":240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":237,"mutability":"mutable","name":"role","nameLocation":"6797:4:0","nodeType":"VariableDeclaration","scope":270,"src":"6789:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":236,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6789:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":239,"mutability":"mutable","name":"adminRole","nameLocation":"6811:9:0","nodeType":"VariableDeclaration","scope":270,"src":"6803:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":238,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6803:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6788:33:0"},"returnParameters":{"id":241,"nodeType":"ParameterList","parameters":[],"src":"6839:0:0"},"scope":364,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":317,"nodeType":"FunctionDefinition","src":"7318:387:0","nodes":[],"body":{"id":316,"nodeType":"Block","src":"7401:304:0","nodes":[],"statements":[{"assignments":[282],"declarations":[{"constant":false,"id":282,"mutability":"mutable","name":"$","nameLocation":"7440:1:0","nodeType":"VariableDeclaration","scope":316,"src":"7411:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":281,"nodeType":"UserDefinedTypeName","pathNode":{"id":280,"name":"AccessControlStorage","nameLocations":["7411:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":37,"src":"7411:20:0"},"referencedDeclaration":37,"src":"7411:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":285,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":283,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48,"src":"7444:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$37_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7444:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7411:59:0"},{"condition":{"id":290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7484:23:0","subExpression":{"arguments":[{"id":287,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"7493:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":288,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":275,"src":"7499:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":286,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118,"src":"7485:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7485:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":314,"nodeType":"Block","src":"7662:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7683:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":279,"id":313,"nodeType":"Return","src":"7676:12:0"}]},"id":315,"nodeType":"IfStatement","src":"7480:219:0","trueBody":{"id":311,"nodeType":"Block","src":"7509:147:0","statements":[{"expression":{"id":300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":291,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":282,"src":"7523:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":294,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7525:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":36,"src":"7523:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$27_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":295,"indexExpression":{"id":293,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"7532:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7523:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$27_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":296,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7538:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":24,"src":"7523:22:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":298,"indexExpression":{"id":297,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":275,"src":"7546:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7523:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7557:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7523:38:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"ExpressionStatement","src":"7523:38:0"},{"eventCall":{"arguments":[{"id":303,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"7592:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":304,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":275,"src":"7598:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":305,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1690,"src":"7607:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7607:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":302,"name":"RoleGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"7580:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7580:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":308,"nodeType":"EmitStatement","src":"7575:45:0"},{"expression":{"hexValue":"74727565","id":309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7641:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":279,"id":310,"nodeType":"Return","src":"7634:11:0"}]}}]},"documentation":{"id":271,"nodeType":"StructuredDocumentation","src":"7090:223:0","text":" @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n Internal function without access restriction.\n May emit a {RoleGranted} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"7327:10:0","parameters":{"id":276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":273,"mutability":"mutable","name":"role","nameLocation":"7346:4:0","nodeType":"VariableDeclaration","scope":317,"src":"7338:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":272,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7338:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":275,"mutability":"mutable","name":"account","nameLocation":"7360:7:0","nodeType":"VariableDeclaration","scope":317,"src":"7352:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":274,"name":"address","nodeType":"ElementaryTypeName","src":"7352:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7337:31:0"},"returnParameters":{"id":279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":278,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":317,"src":"7395:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":277,"name":"bool","nodeType":"ElementaryTypeName","src":"7395:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7394:6:0"},"scope":364,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":363,"nodeType":"FunctionDefinition","src":"7942:388:0","nodes":[],"body":{"id":362,"nodeType":"Block","src":"8026:304:0","nodes":[],"statements":[{"assignments":[329],"declarations":[{"constant":false,"id":329,"mutability":"mutable","name":"$","nameLocation":"8065:1:0","nodeType":"VariableDeclaration","scope":362,"src":"8036:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":328,"nodeType":"UserDefinedTypeName","pathNode":{"id":327,"name":"AccessControlStorage","nameLocations":["8036:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":37,"src":"8036:20:0"},"referencedDeclaration":37,"src":"8036:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":332,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":330,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48,"src":"8069:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$37_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8069:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8036:59:0"},{"condition":{"arguments":[{"id":334,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"8117:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":335,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":322,"src":"8123:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":333,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118,"src":"8109:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8109:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":360,"nodeType":"Block","src":"8287:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8308:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":326,"id":359,"nodeType":"Return","src":"8301:12:0"}]},"id":361,"nodeType":"IfStatement","src":"8105:219:0","trueBody":{"id":357,"nodeType":"Block","src":"8133:148:0","statements":[{"expression":{"id":346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":337,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":329,"src":"8147:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$37_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8149:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":36,"src":"8147:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$27_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":341,"indexExpression":{"id":339,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"8156:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8147:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$27_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":342,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8162:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":24,"src":"8147:22:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":344,"indexExpression":{"id":343,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":322,"src":"8170:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8147:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8181:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"8147:39:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":347,"nodeType":"ExpressionStatement","src":"8147:39:0"},{"eventCall":{"arguments":[{"id":349,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"8217:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":350,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":322,"src":"8223:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":351,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1690,"src":"8232:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8232:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":348,"name":"RoleRevoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1788,"src":"8205:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8205:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":354,"nodeType":"EmitStatement","src":"8200:45:0"},{"expression":{"hexValue":"74727565","id":355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8266:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":326,"id":356,"nodeType":"Return","src":"8259:11:0"}]}}]},"documentation":{"id":318,"nodeType":"StructuredDocumentation","src":"7711:226:0","text":" @dev Attempts to revoke `role` from `account` and returns a boolean indicating if `role` was revoked.\n Internal function without access restriction.\n May emit a {RoleRevoked} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"7951:11:0","parameters":{"id":323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":320,"mutability":"mutable","name":"role","nameLocation":"7971:4:0","nodeType":"VariableDeclaration","scope":363,"src":"7963:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":319,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7963:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":322,"mutability":"mutable","name":"account","nameLocation":"7985:7:0","nodeType":"VariableDeclaration","scope":363,"src":"7977:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":321,"name":"address","nodeType":"ElementaryTypeName","src":"7977:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7962:31:0"},"returnParameters":{"id":326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":325,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":363,"src":"8020:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":324,"name":"bool","nodeType":"ElementaryTypeName","src":"8020:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8019:6:0"},"scope":364,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":13,"name":"Initializable","nameLocations":["2217:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":1480,"src":"2217:13:0"},"id":14,"nodeType":"InheritanceSpecifier","src":"2217:13:0"},{"baseName":{"id":15,"name":"ContextUpgradeable","nameLocations":["2232:18:0"],"nodeType":"IdentifierPath","referencedDeclaration":1708,"src":"2232:18:0"},"id":16,"nodeType":"InheritanceSpecifier","src":"2232:18:0"},{"baseName":{"id":17,"name":"IAccessControl","nameLocations":["2252:14:0"],"nodeType":"IdentifierPath","referencedDeclaration":1831,"src":"2252:14:0"},"id":18,"nodeType":"InheritanceSpecifier","src":"2252:14:0"},{"baseName":{"id":19,"name":"ERC165Upgradeable","nameLocations":["2268:17:0"],"nodeType":"IdentifierPath","referencedDeclaration":1748,"src":"2268:17:0"},"id":20,"nodeType":"InheritanceSpecifier","src":"2268:17:0"}],"canonicalName":"AccessControlUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"510:1660:0","text":" @dev Contract module that allows children to implement role-based access\n control mechanisms. This is a lightweight version that doesn't allow enumerating role\n members except through off-chain means by accessing the contract event logs. Some\n applications may benefit from on-chain enumerability, for those cases see\n {AccessControlEnumerable}.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```solidity\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```solidity\n function foo() public {\n require(hasRole(MY_ROLE, msg.sender));\n ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n to enforce additional security measures for this role."},"fullyImplemented":true,"linearizedBaseContracts":[364,1748,3774,1831,1708,1480],"name":"AccessControlUpgradeable","nameLocation":"2189:24:0","scope":365,"usedErrors":[1229,1232,1758,1761],"usedEvents":[1237,1770,1779,1788]}],"license":"MIT"}},"lib/openzeppelin-contracts-upgradeable/contracts/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol":{"id":1,"ast":{"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol","id":1213,"exportedSymbols":{"AccessControlDefaultAdminRulesUpgradeable":[1212],"AccessControlUpgradeable":[364],"IAccessControl":[1831],"IAccessControlDefaultAdminRules":[2078],"IERC165":[3774],"IERC5313":[2199],"Initializable":[1480],"Math":[5395],"SafeCast":[7160]},"nodeType":"SourceUnit","src":"136:17069:1","nodes":[{"id":366,"nodeType":"PragmaDirective","src":"136:24:1","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":368,"nodeType":"ImportDirective","src":"162:126:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol","file":"@openzeppelin/contracts/access/extensions/IAccessControlDefaultAdminRules.sol","nameLocation":"-1:-1:-1","scope":1213,"sourceUnit":2079,"symbolAliases":[{"foreign":{"id":367,"name":"IAccessControlDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"170:31:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":370,"nodeType":"ImportDirective","src":"289:73:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol","file":"../AccessControlUpgradeable.sol","nameLocation":"-1:-1:-1","scope":1213,"sourceUnit":365,"symbolAliases":[{"foreign":{"id":369,"name":"AccessControlUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":364,"src":"297:24:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":372,"nodeType":"ImportDirective","src":"363:81:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol","file":"@openzeppelin/contracts/access/IAccessControl.sol","nameLocation":"-1:-1:-1","scope":1213,"sourceUnit":1832,"symbolAliases":[{"foreign":{"id":371,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"371:14:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":374,"nodeType":"ImportDirective","src":"445:73:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","nameLocation":"-1:-1:-1","scope":1213,"sourceUnit":7161,"symbolAliases":[{"foreign":{"id":373,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"453:8:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":376,"nodeType":"ImportDirective","src":"519:65:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","nameLocation":"-1:-1:-1","scope":1213,"sourceUnit":5396,"symbolAliases":[{"foreign":{"id":375,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5395,"src":"527:4:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":378,"nodeType":"ImportDirective","src":"585:73:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol","file":"@openzeppelin/contracts/interfaces/IERC5313.sol","nameLocation":"-1:-1:-1","scope":1213,"sourceUnit":2200,"symbolAliases":[{"foreign":{"id":377,"name":"IERC5313","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2199,"src":"593:8:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":380,"nodeType":"ImportDirective","src":"659:80:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","nameLocation":"-1:-1:-1","scope":1213,"sourceUnit":3775,"symbolAliases":[{"foreign":{"id":379,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3774,"src":"667:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":382,"nodeType":"ImportDirective","src":"740:66:1","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":1213,"sourceUnit":1481,"symbolAliases":[{"foreign":{"id":381,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1480,"src":"748:13:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1212,"nodeType":"ContractDefinition","src":"2120:15084:1","nodes":[{"id":405,"nodeType":"StructDefinition","src":"2365:427:1","nodes":[],"canonicalName":"AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage","documentation":{"id":392,"nodeType":"StructuredDocumentation","src":"2272:88:1","text":"@custom:storage-location erc7201:openzeppelin.storage.AccessControlDefaultAdminRules"},"members":[{"constant":false,"id":394,"mutability":"mutable","name":"_pendingDefaultAdmin","nameLocation":"2491:20:1","nodeType":"VariableDeclaration","scope":405,"src":"2483:28:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":393,"name":"address","nodeType":"ElementaryTypeName","src":"2483:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":396,"mutability":"mutable","name":"_pendingDefaultAdminSchedule","nameLocation":"2528:28:1","nodeType":"VariableDeclaration","scope":405,"src":"2521:35:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":395,"name":"uint48","nodeType":"ElementaryTypeName","src":"2521:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":398,"mutability":"mutable","name":"_currentDelay","nameLocation":"2588:13:1","nodeType":"VariableDeclaration","scope":405,"src":"2581:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":397,"name":"uint48","nodeType":"ElementaryTypeName","src":"2581:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":400,"mutability":"mutable","name":"_currentDefaultAdmin","nameLocation":"2619:20:1","nodeType":"VariableDeclaration","scope":405,"src":"2611:28:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":399,"name":"address","nodeType":"ElementaryTypeName","src":"2611:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":402,"mutability":"mutable","name":"_pendingDelay","nameLocation":"2720:13:1","nodeType":"VariableDeclaration","scope":405,"src":"2713:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":401,"name":"uint48","nodeType":"ElementaryTypeName","src":"2713:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":404,"mutability":"mutable","name":"_pendingDelaySchedule","nameLocation":"2750:21:1","nodeType":"VariableDeclaration","scope":405,"src":"2743:28:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":403,"name":"uint48","nodeType":"ElementaryTypeName","src":"2743:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"name":"AccessControlDefaultAdminRulesStorage","nameLocation":"2372:37:1","scope":1212,"visibility":"public"},{"id":408,"nodeType":"VariableDeclaration","src":"2932:139:1","nodes":[],"constant":true,"mutability":"constant","name":"AccessControlDefaultAdminRulesStorageLocation","nameLocation":"2957:45:1","scope":1212,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":406,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2932:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307865656633646163343533386338326338616365343036336162306163643264313563646235383833616131646666376332363733616262336438363938343030","id":407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3005:66:1","typeDescriptions":{"typeIdentifier":"t_rational_108081311673210417958972809523495106848997966317238319795006477448815430960128_by_1","typeString":"int_const 1080...(70 digits omitted)...0128"},"value":"0xeef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400"},"visibility":"private"},{"id":416,"nodeType":"FunctionDefinition","src":"3078:228:1","nodes":[],"body":{"id":415,"nodeType":"Block","src":"3202:104:1","nodes":[],"statements":[{"AST":{"nativeSrc":"3221:79:1","nodeType":"YulBlock","src":"3221:79:1","statements":[{"nativeSrc":"3235:55:1","nodeType":"YulAssignment","src":"3235:55:1","value":{"name":"AccessControlDefaultAdminRulesStorageLocation","nativeSrc":"3245:45:1","nodeType":"YulIdentifier","src":"3245:45:1"},"variableNames":[{"name":"$.slot","nativeSrc":"3235:6:1","nodeType":"YulIdentifier","src":"3235:6:1"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":412,"isOffset":false,"isSlot":true,"src":"3235:6:1","suffix":"slot","valueSize":1},{"declaration":408,"isOffset":false,"isSlot":false,"src":"3245:45:1","valueSize":1}],"id":414,"nodeType":"InlineAssembly","src":"3212:88:1"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getAccessControlDefaultAdminRulesStorage","nameLocation":"3087:41:1","parameters":{"id":409,"nodeType":"ParameterList","parameters":[],"src":"3128:2:1"},"returnParameters":{"id":413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":412,"mutability":"mutable","name":"$","nameLocation":"3199:1:1","nodeType":"VariableDeclaration","scope":416,"src":"3153:47:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"},"typeName":{"id":411,"nodeType":"UserDefinedTypeName","pathNode":{"id":410,"name":"AccessControlDefaultAdminRulesStorage","nameLocations":["3153:37:1"],"nodeType":"IdentifierPath","referencedDeclaration":405,"src":"3153:37:1"},"referencedDeclaration":405,"src":"3153:37:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"}},"visibility":"internal"}],"src":"3152:49:1"},"scope":1212,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":432,"nodeType":"FunctionDefinition","src":"3416:222:1","nodes":[],"body":{"id":431,"nodeType":"Block","src":"3539:99:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":427,"name":"initialDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":419,"src":"3597:12:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":428,"name":"initialDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":421,"src":"3611:19:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_address","typeString":"address"}],"id":426,"name":"__AccessControlDefaultAdminRules_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"3549:47:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint48_$_t_address_$returns$__$","typeString":"function (uint48,address)"}},"id":429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3549:82:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":430,"nodeType":"ExpressionStatement","src":"3549:82:1"}]},"documentation":{"id":417,"nodeType":"StructuredDocumentation","src":"3312:99:1","text":" @dev Sets the initial values for {defaultAdminDelay} and {defaultAdmin} address."},"implemented":true,"kind":"function","modifiers":[{"id":424,"kind":"modifierInvocation","modifierName":{"id":423,"name":"onlyInitializing","nameLocations":["3522:16:1"],"nodeType":"IdentifierPath","referencedDeclaration":1375,"src":"3522:16:1"},"nodeType":"ModifierInvocation","src":"3522:16:1"}],"name":"__AccessControlDefaultAdminRules_init","nameLocation":"3425:37:1","parameters":{"id":422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":419,"mutability":"mutable","name":"initialDelay","nameLocation":"3470:12:1","nodeType":"VariableDeclaration","scope":432,"src":"3463:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":418,"name":"uint48","nodeType":"ElementaryTypeName","src":"3463:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":421,"mutability":"mutable","name":"initialDefaultAdmin","nameLocation":"3492:19:1","nodeType":"VariableDeclaration","scope":432,"src":"3484:27:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":420,"name":"address","nodeType":"ElementaryTypeName","src":"3484:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3462:50:1"},"returnParameters":{"id":425,"nodeType":"ParameterList","parameters":[],"src":"3539:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":474,"nodeType":"FunctionDefinition","src":"3644:468:1","nodes":[],"body":{"id":473,"nodeType":"Block","src":"3777:335:1","nodes":[],"statements":[{"assignments":[443],"declarations":[{"constant":false,"id":443,"mutability":"mutable","name":"$","nameLocation":"3833:1:1","nodeType":"VariableDeclaration","scope":473,"src":"3787:47:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"},"typeName":{"id":442,"nodeType":"UserDefinedTypeName","pathNode":{"id":441,"name":"AccessControlDefaultAdminRulesStorage","nameLocations":["3787:37:1"],"nodeType":"IdentifierPath","referencedDeclaration":405,"src":"3787:37:1"},"referencedDeclaration":405,"src":"3787:37:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"}},"visibility":"internal"}],"id":446,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":444,"name":"_getAccessControlDefaultAdminRulesStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"3837:41:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr_$","typeString":"function () pure returns (struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer)"}},"id":445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3837:43:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3787:93:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":447,"name":"initialDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":436,"src":"3894:19:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3925:1:1","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":449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3917:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":448,"name":"address","nodeType":"ElementaryTypeName","src":"3917:7:1","typeDescriptions":{}}},"id":451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3917:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3894:33:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":461,"nodeType":"IfStatement","src":"3890:115:1","trueBody":{"id":460,"nodeType":"Block","src":"3929:76:1","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3991:1:1","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":455,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3983:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":454,"name":"address","nodeType":"ElementaryTypeName","src":"3983:7:1","typeDescriptions":{}}},"id":457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3983:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":453,"name":"AccessControlInvalidDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1991,"src":"3950:32:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3950:44:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":459,"nodeType":"RevertStatement","src":"3943:51:1"}]}},{"expression":{"id":466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":462,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":443,"src":"4014:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":464,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4016:13:1","memberName":"_currentDelay","nodeType":"MemberAccess","referencedDeclaration":398,"src":"4014:15:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":465,"name":"initialDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":434,"src":"4032:12:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"4014:30:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":467,"nodeType":"ExpressionStatement","src":"4014:30:1"},{"expression":{"arguments":[{"id":469,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"4065:18:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":470,"name":"initialDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":436,"src":"4085:19:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":468,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[675],"referencedDeclaration":675,"src":"4054:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4054:51:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":472,"nodeType":"ExpressionStatement","src":"4054:51:1"}]},"implemented":true,"kind":"function","modifiers":[{"id":439,"kind":"modifierInvocation","modifierName":{"id":438,"name":"onlyInitializing","nameLocations":["3760:16:1"],"nodeType":"IdentifierPath","referencedDeclaration":1375,"src":"3760:16:1"},"nodeType":"ModifierInvocation","src":"3760:16:1"}],"name":"__AccessControlDefaultAdminRules_init_unchained","nameLocation":"3653:47:1","parameters":{"id":437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"initialDelay","nameLocation":"3708:12:1","nodeType":"VariableDeclaration","scope":474,"src":"3701:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":433,"name":"uint48","nodeType":"ElementaryTypeName","src":"3701:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":436,"mutability":"mutable","name":"initialDefaultAdmin","nameLocation":"3730:19:1","nodeType":"VariableDeclaration","scope":474,"src":"3722:27:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":435,"name":"address","nodeType":"ElementaryTypeName","src":"3722:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3700:50:1"},"returnParameters":{"id":440,"nodeType":"ParameterList","parameters":[],"src":"3777:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":496,"nodeType":"FunctionDefinition","src":"4146:219:1","nodes":[],"body":{"id":495,"nodeType":"Block","src":"4237:128:1","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":483,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"4254:11:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":485,"name":"IAccessControlDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"4274:31:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControlDefaultAdminRules_$2078_$","typeString":"type(contract IAccessControlDefaultAdminRules)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAccessControlDefaultAdminRules_$2078_$","typeString":"type(contract IAccessControlDefaultAdminRules)"}],"id":484,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4269:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4269:37:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAccessControlDefaultAdminRules_$2078","typeString":"type(contract IAccessControlDefaultAdminRules)"}},"id":487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4307:11:1","memberName":"interfaceId","nodeType":"MemberAccess","src":"4269:49:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4254:64:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":491,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"4346:11:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":489,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4322:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRulesUpgradeable_$1212_$","typeString":"type(contract super AccessControlDefaultAdminRulesUpgradeable)"}},"id":490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4328:17:1","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":93,"src":"4322:23:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4322:36:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4254:104:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":482,"id":494,"nodeType":"Return","src":"4247:111:1"}]},"baseFunctions":[93],"documentation":{"id":475,"nodeType":"StructuredDocumentation","src":"4118:23:1","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"4155:17:1","overrides":{"id":479,"nodeType":"OverrideSpecifier","overrides":[],"src":"4213:8:1"},"parameters":{"id":478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":477,"mutability":"mutable","name":"interfaceId","nameLocation":"4180:11:1","nodeType":"VariableDeclaration","scope":496,"src":"4173:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":476,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4173:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"4172:20:1"},"returnParameters":{"id":482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":481,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":496,"src":"4231:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":480,"name":"bool","nodeType":"ElementaryTypeName","src":"4231:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4230:6:1"},"scope":1212,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":506,"nodeType":"FunctionDefinition","src":"4400:93:1","nodes":[],"body":{"id":505,"nodeType":"Block","src":"4455:38:1","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":502,"name":"defaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":754,"src":"4472:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4472:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":501,"id":504,"nodeType":"Return","src":"4465:21:1"}]},"baseFunctions":[2198],"documentation":{"id":497,"nodeType":"StructuredDocumentation","src":"4371:24:1","text":"@inheritdoc IERC5313"},"functionSelector":"8da5cb5b","implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"4409:5:1","parameters":{"id":498,"nodeType":"ParameterList","parameters":[],"src":"4414:2:1"},"returnParameters":{"id":501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":500,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":506,"src":"4446:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":499,"name":"address","nodeType":"ElementaryTypeName","src":"4446:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4445:9:1"},"scope":1212,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":533,"nodeType":"FunctionDefinition","src":"4656:276:1","nodes":[],"body":{"id":532,"nodeType":"Block","src":"4772:160:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":517,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":509,"src":"4786:4:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":518,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"4794:18:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4786:26:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":524,"nodeType":"IfStatement","src":"4782:104:1","trueBody":{"id":523,"nodeType":"Block","src":"4814:72:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":520,"name":"AccessControlEnforcedDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1994,"src":"4835:38:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4835:40:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":522,"nodeType":"RevertStatement","src":"4828:47:1"}]}},{"expression":{"arguments":[{"id":528,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":509,"src":"4911:4:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":529,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"4917:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":525,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4895:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRulesUpgradeable_$1212_$","typeString":"type(contract super AccessControlDefaultAdminRulesUpgradeable)"}},"id":527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4901:9:1","memberName":"grantRole","nodeType":"MemberAccess","referencedDeclaration":192,"src":"4895:15:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4895:30:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":531,"nodeType":"ExpressionStatement","src":"4895:30:1"}]},"baseFunctions":[192,1814],"documentation":{"id":507,"nodeType":"StructuredDocumentation","src":"4563:88:1","text":" @dev See {AccessControl-grantRole}. Reverts for `DEFAULT_ADMIN_ROLE`."},"functionSelector":"2f2ff15d","implemented":true,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"4665:9:1","overrides":{"id":515,"nodeType":"OverrideSpecifier","overrides":[{"id":513,"name":"AccessControlUpgradeable","nameLocations":["4730:24:1"],"nodeType":"IdentifierPath","referencedDeclaration":364,"src":"4730:24:1"},{"id":514,"name":"IAccessControl","nameLocations":["4756:14:1"],"nodeType":"IdentifierPath","referencedDeclaration":1831,"src":"4756:14:1"}],"src":"4721:50:1"},"parameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":509,"mutability":"mutable","name":"role","nameLocation":"4683:4:1","nodeType":"VariableDeclaration","scope":533,"src":"4675:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":508,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4675:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":511,"mutability":"mutable","name":"account","nameLocation":"4697:7:1","nodeType":"VariableDeclaration","scope":533,"src":"4689:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":510,"name":"address","nodeType":"ElementaryTypeName","src":"4689:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4674:31:1"},"returnParameters":{"id":516,"nodeType":"ParameterList","parameters":[],"src":"4772:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":560,"nodeType":"FunctionDefinition","src":"5032:278:1","nodes":[],"body":{"id":559,"nodeType":"Block","src":"5149:161:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":544,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":536,"src":"5163:4:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":545,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"5171:18:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5163:26:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":551,"nodeType":"IfStatement","src":"5159:104:1","trueBody":{"id":550,"nodeType":"Block","src":"5191:72:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":547,"name":"AccessControlEnforcedDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1994,"src":"5212:38:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5212:40:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":549,"nodeType":"RevertStatement","src":"5205:47:1"}]}},{"expression":{"arguments":[{"id":555,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":536,"src":"5289:4:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":556,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":538,"src":"5295:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":552,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"5272:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRulesUpgradeable_$1212_$","typeString":"type(contract super AccessControlDefaultAdminRulesUpgradeable)"}},"id":554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5278:10:1","memberName":"revokeRole","nodeType":"MemberAccess","referencedDeclaration":211,"src":"5272:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5272:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":558,"nodeType":"ExpressionStatement","src":"5272:31:1"}]},"baseFunctions":[211,1822],"documentation":{"id":534,"nodeType":"StructuredDocumentation","src":"4938:89:1","text":" @dev See {AccessControl-revokeRole}. Reverts for `DEFAULT_ADMIN_ROLE`."},"functionSelector":"d547741f","implemented":true,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"5041:10:1","overrides":{"id":542,"nodeType":"OverrideSpecifier","overrides":[{"id":540,"name":"AccessControlUpgradeable","nameLocations":["5107:24:1"],"nodeType":"IdentifierPath","referencedDeclaration":364,"src":"5107:24:1"},{"id":541,"name":"IAccessControl","nameLocations":["5133:14:1"],"nodeType":"IdentifierPath","referencedDeclaration":1831,"src":"5133:14:1"}],"src":"5098:50:1"},"parameters":{"id":539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":536,"mutability":"mutable","name":"role","nameLocation":"5060:4:1","nodeType":"VariableDeclaration","scope":560,"src":"5052:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":535,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5052:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":538,"mutability":"mutable","name":"account","nameLocation":"5074:7:1","nodeType":"VariableDeclaration","scope":560,"src":"5066:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":537,"name":"address","nodeType":"ElementaryTypeName","src":"5066:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5051:31:1"},"returnParameters":{"id":543,"nodeType":"ParameterList","parameters":[],"src":"5149:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":628,"nodeType":"FunctionDefinition","src":"5995:682:1","nodes":[],"body":{"id":627,"nodeType":"Block","src":"6114:563:1","nodes":[],"statements":[{"assignments":[573],"declarations":[{"constant":false,"id":573,"mutability":"mutable","name":"$","nameLocation":"6170:1:1","nodeType":"VariableDeclaration","scope":627,"src":"6124:47:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"},"typeName":{"id":572,"nodeType":"UserDefinedTypeName","pathNode":{"id":571,"name":"AccessControlDefaultAdminRulesStorage","nameLocations":["6124:37:1"],"nodeType":"IdentifierPath","referencedDeclaration":405,"src":"6124:37:1"},"referencedDeclaration":405,"src":"6124:37:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"}},"visibility":"internal"}],"id":576,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":574,"name":"_getAccessControlDefaultAdminRulesStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"6174:41:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr_$","typeString":"function () pure returns (struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer)"}},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:43:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6124:93:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":577,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":563,"src":"6231:4:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":578,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"6239:18:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6231:26:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":580,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":565,"src":"6261:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":581,"name":"defaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":754,"src":"6272:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6272:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6261:25:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6231:55:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":619,"nodeType":"IfStatement","src":"6227:401:1","trueBody":{"id":618,"nodeType":"Block","src":"6288:340:1","statements":[{"assignments":[586,588],"declarations":[{"constant":false,"id":586,"mutability":"mutable","name":"newDefaultAdmin","nameLocation":"6311:15:1","nodeType":"VariableDeclaration","scope":618,"src":"6303:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":585,"name":"address","nodeType":"ElementaryTypeName","src":"6303:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":588,"mutability":"mutable","name":"schedule","nameLocation":"6335:8:1","nodeType":"VariableDeclaration","scope":618,"src":"6328:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":587,"name":"uint48","nodeType":"ElementaryTypeName","src":"6328:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":591,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":589,"name":"pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"6347:19:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_uint48_$","typeString":"function () view returns (address,uint48)"}},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6347:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$","typeString":"tuple(address,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"6302:66:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":592,"name":"newDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":586,"src":"6386:15:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6413:1:1","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":594,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6405:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":593,"name":"address","nodeType":"ElementaryTypeName","src":"6405:7:1","typeDescriptions":{}}},"id":596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6405:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6386:29:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6419:25:1","subExpression":{"arguments":[{"id":599,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":588,"src":"6435:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":598,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1197,"src":"6420:14:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6420:24:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6386:58:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6448:29:1","subExpression":{"arguments":[{"id":604,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":588,"src":"6468:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":603,"name":"_hasSchedulePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1211,"src":"6449:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6449:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6386:91:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":613,"nodeType":"IfStatement","src":"6382:185:1","trueBody":{"id":612,"nodeType":"Block","src":"6479:88:1","statements":[{"errorCall":{"arguments":[{"id":609,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":588,"src":"6543:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":608,"name":"AccessControlEnforcedDefaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1999,"src":"6504:38:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint48_$returns$_t_error_$","typeString":"function (uint48) pure returns (error)"}},"id":610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6504:48:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":611,"nodeType":"RevertStatement","src":"6497:55:1"}]}},{"expression":{"id":616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6580:37:1","subExpression":{"expression":{"id":614,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":573,"src":"6587:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":615,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6589:28:1","memberName":"_pendingDefaultAdminSchedule","nodeType":"MemberAccess","referencedDeclaration":396,"src":"6587:30:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":617,"nodeType":"ExpressionStatement","src":"6580:37:1"}]}},{"expression":{"arguments":[{"id":623,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":563,"src":"6656:4:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":624,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":565,"src":"6662:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":620,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6637:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRulesUpgradeable_$1212_$","typeString":"type(contract super AccessControlDefaultAdminRulesUpgradeable)"}},"id":622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6643:12:1","memberName":"renounceRole","nodeType":"MemberAccess","referencedDeclaration":234,"src":"6637:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6637:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":626,"nodeType":"ExpressionStatement","src":"6637:33:1"}]},"baseFunctions":[234,1830],"documentation":{"id":561,"nodeType":"StructuredDocumentation","src":"5316:674:1","text":" @dev See {AccessControl-renounceRole}.\n For the `DEFAULT_ADMIN_ROLE`, it only allows renouncing in two steps by first calling\n {beginDefaultAdminTransfer} to the `address(0)`, so it's required that the {pendingDefaultAdmin} schedule\n has also passed when calling this function.\n After its execution, it will not be possible to call `onlyRole(DEFAULT_ADMIN_ROLE)` functions.\n NOTE: Renouncing `DEFAULT_ADMIN_ROLE` will leave the contract without a {defaultAdmin},\n thereby disabling any functionality that is only available for it, and the possibility of reassigning a\n non-administrated role."},"functionSelector":"36568abe","implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"6004:12:1","overrides":{"id":569,"nodeType":"OverrideSpecifier","overrides":[{"id":567,"name":"AccessControlUpgradeable","nameLocations":["6072:24:1"],"nodeType":"IdentifierPath","referencedDeclaration":364,"src":"6072:24:1"},{"id":568,"name":"IAccessControl","nameLocations":["6098:14:1"],"nodeType":"IdentifierPath","referencedDeclaration":1831,"src":"6098:14:1"}],"src":"6063:50:1"},"parameters":{"id":566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":563,"mutability":"mutable","name":"role","nameLocation":"6025:4:1","nodeType":"VariableDeclaration","scope":628,"src":"6017:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":562,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6017:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":565,"mutability":"mutable","name":"account","nameLocation":"6039:7:1","nodeType":"VariableDeclaration","scope":628,"src":"6031:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":564,"name":"address","nodeType":"ElementaryTypeName","src":"6031:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6016:31:1"},"returnParameters":{"id":570,"nodeType":"ParameterList","parameters":[],"src":"6114:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":675,"nodeType":"FunctionDefinition","src":"7105:475:1","nodes":[],"body":{"id":674,"nodeType":"Block","src":"7197:383:1","nodes":[],"statements":[{"assignments":[641],"declarations":[{"constant":false,"id":641,"mutability":"mutable","name":"$","nameLocation":"7253:1:1","nodeType":"VariableDeclaration","scope":674,"src":"7207:47:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"},"typeName":{"id":640,"nodeType":"UserDefinedTypeName","pathNode":{"id":639,"name":"AccessControlDefaultAdminRulesStorage","nameLocations":["7207:37:1"],"nodeType":"IdentifierPath","referencedDeclaration":405,"src":"7207:37:1"},"referencedDeclaration":405,"src":"7207:37:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"}},"visibility":"internal"}],"id":644,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":642,"name":"_getAccessControlDefaultAdminRulesStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"7257:41:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr_$","typeString":"function () pure returns (struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer)"}},"id":643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7257:43:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7207:93:1"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":645,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":631,"src":"7314:4:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":646,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"7322:18:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7314:26:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":667,"nodeType":"IfStatement","src":"7310:216:1","trueBody":{"id":666,"nodeType":"Block","src":"7342:184:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":648,"name":"defaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":754,"src":"7360:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7360:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7386:1:1","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":651,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7378:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":650,"name":"address","nodeType":"ElementaryTypeName","src":"7378:7:1","typeDescriptions":{}}},"id":653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7378:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7360:28:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":659,"nodeType":"IfStatement","src":"7356:114:1","trueBody":{"id":658,"nodeType":"Block","src":"7390:80:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":655,"name":"AccessControlEnforcedDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1994,"src":"7415:38:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7415:40:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":657,"nodeType":"RevertStatement","src":"7408:47:1"}]}},{"expression":{"id":664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":660,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":641,"src":"7483:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":662,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7485:20:1","memberName":"_currentDefaultAdmin","nodeType":"MemberAccess","referencedDeclaration":400,"src":"7483:22:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":663,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":633,"src":"7508:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7483:32:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":665,"nodeType":"ExpressionStatement","src":"7483:32:1"}]}},{"expression":{"arguments":[{"id":670,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":631,"src":"7559:4:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":671,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":633,"src":"7565:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":668,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"7542:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRulesUpgradeable_$1212_$","typeString":"type(contract super AccessControlDefaultAdminRulesUpgradeable)"}},"id":669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7548:10:1","memberName":"_grantRole","nodeType":"MemberAccess","referencedDeclaration":317,"src":"7542:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7542:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":638,"id":673,"nodeType":"Return","src":"7535:38:1"}]},"baseFunctions":[317],"documentation":{"id":629,"nodeType":"StructuredDocumentation","src":"6683:417:1","text":" @dev See {AccessControl-_grantRole}.\n For `DEFAULT_ADMIN_ROLE`, it only allows granting if there isn't already a {defaultAdmin} or if the\n role has been previously renounced.\n NOTE: Exposing this function through another mechanism may make the `DEFAULT_ADMIN_ROLE`\n assignable again. Make sure to guarantee this is the expected behavior in your implementation."},"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"7114:10:1","overrides":{"id":635,"nodeType":"OverrideSpecifier","overrides":[],"src":"7173:8:1"},"parameters":{"id":634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":631,"mutability":"mutable","name":"role","nameLocation":"7133:4:1","nodeType":"VariableDeclaration","scope":675,"src":"7125:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":630,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7125:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":633,"mutability":"mutable","name":"account","nameLocation":"7147:7:1","nodeType":"VariableDeclaration","scope":675,"src":"7139:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":632,"name":"address","nodeType":"ElementaryTypeName","src":"7139:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7124:31:1"},"returnParameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":637,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":675,"src":"7191:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":636,"name":"bool","nodeType":"ElementaryTypeName","src":"7191:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7190:6:1"},"scope":1212,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":713,"nodeType":"FunctionDefinition","src":"7631:376:1","nodes":[],"body":{"id":712,"nodeType":"Block","src":"7724:283:1","nodes":[],"statements":[{"assignments":[688],"declarations":[{"constant":false,"id":688,"mutability":"mutable","name":"$","nameLocation":"7780:1:1","nodeType":"VariableDeclaration","scope":712,"src":"7734:47:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"},"typeName":{"id":687,"nodeType":"UserDefinedTypeName","pathNode":{"id":686,"name":"AccessControlDefaultAdminRulesStorage","nameLocations":["7734:37:1"],"nodeType":"IdentifierPath","referencedDeclaration":405,"src":"7734:37:1"},"referencedDeclaration":405,"src":"7734:37:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"}},"visibility":"internal"}],"id":691,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":689,"name":"_getAccessControlDefaultAdminRulesStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"7784:41:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr_$","typeString":"function () pure returns (struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer)"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7784:43:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7734:93:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":692,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":678,"src":"7841:4:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":693,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"7849:18:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7841:26:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":695,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":680,"src":"7871:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":696,"name":"defaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":754,"src":"7882:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7882:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7871:25:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7841:55:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":705,"nodeType":"IfStatement","src":"7837:115:1","trueBody":{"id":704,"nodeType":"Block","src":"7898:54:1","statements":[{"expression":{"id":702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"7912:29:1","subExpression":{"expression":{"id":700,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":688,"src":"7919:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":701,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7921:20:1","memberName":"_currentDefaultAdmin","nodeType":"MemberAccess","referencedDeclaration":400,"src":"7919:22:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":703,"nodeType":"ExpressionStatement","src":"7912:29:1"}]}},{"expression":{"arguments":[{"id":708,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":678,"src":"7986:4:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":709,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":680,"src":"7992:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":706,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"7968:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRulesUpgradeable_$1212_$","typeString":"type(contract super AccessControlDefaultAdminRulesUpgradeable)"}},"id":707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7974:11:1","memberName":"_revokeRole","nodeType":"MemberAccess","referencedDeclaration":363,"src":"7968:17:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7968:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":685,"id":711,"nodeType":"Return","src":"7961:39:1"}]},"baseFunctions":[363],"documentation":{"id":676,"nodeType":"StructuredDocumentation","src":"7586:40:1","text":"@inheritdoc AccessControlUpgradeable"},"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"7640:11:1","overrides":{"id":682,"nodeType":"OverrideSpecifier","overrides":[],"src":"7700:8:1"},"parameters":{"id":681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":678,"mutability":"mutable","name":"role","nameLocation":"7660:4:1","nodeType":"VariableDeclaration","scope":713,"src":"7652:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":677,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7652:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":680,"mutability":"mutable","name":"account","nameLocation":"7674:7:1","nodeType":"VariableDeclaration","scope":713,"src":"7666:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":679,"name":"address","nodeType":"ElementaryTypeName","src":"7666:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7651:31:1"},"returnParameters":{"id":685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":684,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":713,"src":"7718:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":683,"name":"bool","nodeType":"ElementaryTypeName","src":"7718:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7717:6:1"},"scope":1212,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":738,"nodeType":"FunctionDefinition","src":"8110:248:1","nodes":[],"body":{"id":737,"nodeType":"Block","src":"8192:166:1","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":722,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":716,"src":"8206:4:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":723,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"8214:18:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8206:26:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":729,"nodeType":"IfStatement","src":"8202:104:1","trueBody":{"id":728,"nodeType":"Block","src":"8234:72:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":725,"name":"AccessControlEnforcedDefaultAdminRules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1994,"src":"8255:38:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8255:40:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":727,"nodeType":"RevertStatement","src":"8248:47:1"}]}},{"expression":{"arguments":[{"id":733,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":716,"src":"8335:4:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":734,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"8341:9:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":730,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"8315:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlDefaultAdminRulesUpgradeable_$1212_$","typeString":"type(contract super AccessControlDefaultAdminRulesUpgradeable)"}},"id":732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8321:13:1","memberName":"_setRoleAdmin","nodeType":"MemberAccess","referencedDeclaration":270,"src":"8315:19:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8315:36:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":736,"nodeType":"ExpressionStatement","src":"8315:36:1"}]},"baseFunctions":[270],"documentation":{"id":714,"nodeType":"StructuredDocumentation","src":"8013:92:1","text":" @dev See {AccessControl-_setRoleAdmin}. Reverts for `DEFAULT_ADMIN_ROLE`."},"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"8119:13:1","overrides":{"id":720,"nodeType":"OverrideSpecifier","overrides":[],"src":"8183:8:1"},"parameters":{"id":719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":716,"mutability":"mutable","name":"role","nameLocation":"8141:4:1","nodeType":"VariableDeclaration","scope":738,"src":"8133:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":715,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8133:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":718,"mutability":"mutable","name":"adminRole","nameLocation":"8155:9:1","nodeType":"VariableDeclaration","scope":738,"src":"8147:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":717,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8147:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8132:33:1"},"returnParameters":{"id":721,"nodeType":"ParameterList","parameters":[],"src":"8192:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":754,"nodeType":"FunctionDefinition","src":"8482:211:1","nodes":[],"body":{"id":753,"nodeType":"Block","src":"8544:149:1","nodes":[],"statements":[{"assignments":[746],"declarations":[{"constant":false,"id":746,"mutability":"mutable","name":"$","nameLocation":"8600:1:1","nodeType":"VariableDeclaration","scope":753,"src":"8554:47:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"},"typeName":{"id":745,"nodeType":"UserDefinedTypeName","pathNode":{"id":744,"name":"AccessControlDefaultAdminRulesStorage","nameLocations":["8554:37:1"],"nodeType":"IdentifierPath","referencedDeclaration":405,"src":"8554:37:1"},"referencedDeclaration":405,"src":"8554:37:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"}},"visibility":"internal"}],"id":749,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":747,"name":"_getAccessControlDefaultAdminRulesStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"8604:41:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr_$","typeString":"function () pure returns (struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer)"}},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8604:43:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8554:93:1"},{"expression":{"expression":{"id":750,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"8664:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":751,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8666:20:1","memberName":"_currentDefaultAdmin","nodeType":"MemberAccess","referencedDeclaration":400,"src":"8664:22:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":743,"id":752,"nodeType":"Return","src":"8657:29:1"}]},"baseFunctions":[2025],"documentation":{"id":739,"nodeType":"StructuredDocumentation","src":"8430:47:1","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"84ef8ffc","implemented":true,"kind":"function","modifiers":[],"name":"defaultAdmin","nameLocation":"8491:12:1","parameters":{"id":740,"nodeType":"ParameterList","parameters":[],"src":"8503:2:1"},"returnParameters":{"id":743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":742,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":754,"src":"8535:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":741,"name":"address","nodeType":"ElementaryTypeName","src":"8535:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8534:9:1"},"scope":1212,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":775,"nodeType":"FunctionDefinition","src":"8751:278:1","nodes":[],"body":{"id":774,"nodeType":"Block","src":"8846:183:1","nodes":[],"statements":[{"assignments":[764],"declarations":[{"constant":false,"id":764,"mutability":"mutable","name":"$","nameLocation":"8902:1:1","nodeType":"VariableDeclaration","scope":774,"src":"8856:47:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"},"typeName":{"id":763,"nodeType":"UserDefinedTypeName","pathNode":{"id":762,"name":"AccessControlDefaultAdminRulesStorage","nameLocations":["8856:37:1"],"nodeType":"IdentifierPath","referencedDeclaration":405,"src":"8856:37:1"},"referencedDeclaration":405,"src":"8856:37:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"}},"visibility":"internal"}],"id":767,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":765,"name":"_getAccessControlDefaultAdminRulesStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"8906:41:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr_$","typeString":"function () pure returns (struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer)"}},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8906:43:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8856:93:1"},{"expression":{"components":[{"expression":{"id":768,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"8967:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":769,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8969:20:1","memberName":"_pendingDefaultAdmin","nodeType":"MemberAccess","referencedDeclaration":394,"src":"8967:22:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":770,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":764,"src":"8991:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":771,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8993:28:1","memberName":"_pendingDefaultAdminSchedule","nodeType":"MemberAccess","referencedDeclaration":396,"src":"8991:30:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":772,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8966:56:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$","typeString":"tuple(address,uint48)"}},"functionReturnParameters":761,"id":773,"nodeType":"Return","src":"8959:63:1"}]},"baseFunctions":[2033],"documentation":{"id":755,"nodeType":"StructuredDocumentation","src":"8699:47:1","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"cf6eefb7","implemented":true,"kind":"function","modifiers":[],"name":"pendingDefaultAdmin","nameLocation":"8760:19:1","parameters":{"id":756,"nodeType":"ParameterList","parameters":[],"src":"8779:2:1"},"returnParameters":{"id":761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":758,"mutability":"mutable","name":"newAdmin","nameLocation":"8819:8:1","nodeType":"VariableDeclaration","scope":775,"src":"8811:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":757,"name":"address","nodeType":"ElementaryTypeName","src":"8811:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":760,"mutability":"mutable","name":"schedule","nameLocation":"8836:8:1","nodeType":"VariableDeclaration","scope":775,"src":"8829:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":759,"name":"uint48","nodeType":"ElementaryTypeName","src":"8829:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"8810:35:1"},"scope":1212,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":807,"nodeType":"FunctionDefinition","src":"9087:338:1","nodes":[],"body":{"id":806,"nodeType":"Block","src":"9153:272:1","nodes":[],"statements":[{"assignments":[783],"declarations":[{"constant":false,"id":783,"mutability":"mutable","name":"$","nameLocation":"9209:1:1","nodeType":"VariableDeclaration","scope":806,"src":"9163:47:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"},"typeName":{"id":782,"nodeType":"UserDefinedTypeName","pathNode":{"id":781,"name":"AccessControlDefaultAdminRulesStorage","nameLocations":["9163:37:1"],"nodeType":"IdentifierPath","referencedDeclaration":405,"src":"9163:37:1"},"referencedDeclaration":405,"src":"9163:37:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"}},"visibility":"internal"}],"id":786,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":784,"name":"_getAccessControlDefaultAdminRulesStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"9213:41:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr_$","typeString":"function () pure returns (struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer)"}},"id":785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9213:43:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9163:93:1"},{"assignments":[788],"declarations":[{"constant":false,"id":788,"mutability":"mutable","name":"schedule","nameLocation":"9273:8:1","nodeType":"VariableDeclaration","scope":806,"src":"9266:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":787,"name":"uint48","nodeType":"ElementaryTypeName","src":"9266:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":791,"initialValue":{"expression":{"id":789,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"9284:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":790,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9286:21:1","memberName":"_pendingDelaySchedule","nodeType":"MemberAccess","referencedDeclaration":404,"src":"9284:23:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"9266:41:1"},{"expression":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":793,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"9340:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":792,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1197,"src":"9325:14:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9325:24:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":796,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"9372:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":795,"name":"_hasSchedulePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1211,"src":"9353:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9353:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9325:56:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":799,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9324:58:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":802,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"9403:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9405:13:1","memberName":"_currentDelay","nodeType":"MemberAccess","referencedDeclaration":398,"src":"9403:15:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9324:94:1","trueExpression":{"expression":{"id":800,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"9385:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":801,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9387:13:1","memberName":"_pendingDelay","nodeType":"MemberAccess","referencedDeclaration":402,"src":"9385:15:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":780,"id":805,"nodeType":"Return","src":"9317:101:1"}]},"baseFunctions":[2039],"documentation":{"id":776,"nodeType":"StructuredDocumentation","src":"9035:47:1","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"cc8463c8","implemented":true,"kind":"function","modifiers":[],"name":"defaultAdminDelay","nameLocation":"9096:17:1","parameters":{"id":777,"nodeType":"ParameterList","parameters":[],"src":"9113:2:1"},"returnParameters":{"id":780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":779,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":807,"src":"9145:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":778,"name":"uint48","nodeType":"ElementaryTypeName","src":"9145:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"9144:8:1"},"scope":1212,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":845,"nodeType":"FunctionDefinition","src":"9483:368:1","nodes":[],"body":{"id":844,"nodeType":"Block","src":"9582:269:1","nodes":[],"statements":[{"assignments":[817],"declarations":[{"constant":false,"id":817,"mutability":"mutable","name":"$","nameLocation":"9638:1:1","nodeType":"VariableDeclaration","scope":844,"src":"9592:47:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"},"typeName":{"id":816,"nodeType":"UserDefinedTypeName","pathNode":{"id":815,"name":"AccessControlDefaultAdminRulesStorage","nameLocations":["9592:37:1"],"nodeType":"IdentifierPath","referencedDeclaration":405,"src":"9592:37:1"},"referencedDeclaration":405,"src":"9592:37:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"}},"visibility":"internal"}],"id":820,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":818,"name":"_getAccessControlDefaultAdminRulesStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"9642:41:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr_$","typeString":"function () pure returns (struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer)"}},"id":819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9642:43:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9592:93:1"},{"expression":{"id":824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":821,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"9695:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":822,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"9706:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":823,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9708:21:1","memberName":"_pendingDelaySchedule","nodeType":"MemberAccess","referencedDeclaration":404,"src":"9706:23:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"9695:34:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":825,"nodeType":"ExpressionStatement","src":"9695:34:1"},{"expression":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":827,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"9762:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":826,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1197,"src":"9747:14:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9747:24:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9775:29:1","subExpression":{"arguments":[{"id":830,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"9795:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":829,"name":"_hasSchedulePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1211,"src":"9776:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9776:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9747:57:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":834,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9746:59:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"hexValue":"30","id":839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9839:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9842:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":841,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9838:6:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(int_const 0,int_const 0)"}},"id":842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9746:98:1","trueExpression":{"components":[{"expression":{"id":835,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"9809:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":836,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9811:13:1","memberName":"_pendingDelay","nodeType":"MemberAccess","referencedDeclaration":402,"src":"9809:15:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":837,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"9826:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":838,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9808:27:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint48_$_t_uint48_$","typeString":"tuple(uint48,uint48)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint48_$_t_uint48_$","typeString":"tuple(uint48,uint48)"}},"functionReturnParameters":814,"id":843,"nodeType":"Return","src":"9739:105:1"}]},"baseFunctions":[2047],"documentation":{"id":808,"nodeType":"StructuredDocumentation","src":"9431:47:1","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"a1eda53c","implemented":true,"kind":"function","modifiers":[],"name":"pendingDefaultAdminDelay","nameLocation":"9492:24:1","parameters":{"id":809,"nodeType":"ParameterList","parameters":[],"src":"9516:2:1"},"returnParameters":{"id":814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":811,"mutability":"mutable","name":"newDelay","nameLocation":"9555:8:1","nodeType":"VariableDeclaration","scope":845,"src":"9548:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":810,"name":"uint48","nodeType":"ElementaryTypeName","src":"9548:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":813,"mutability":"mutable","name":"schedule","nameLocation":"9572:8:1","nodeType":"VariableDeclaration","scope":845,"src":"9565:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":812,"name":"uint48","nodeType":"ElementaryTypeName","src":"9565:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"9547:34:1"},"scope":1212,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":854,"nodeType":"FunctionDefinition","src":"9909:108:1","nodes":[],"body":{"id":853,"nodeType":"Block","src":"9987:30:1","nodes":[],"statements":[{"expression":{"hexValue":"35","id":851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10004:6:1","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_432000_by_1","typeString":"int_const 432000"},"value":"5"},"functionReturnParameters":850,"id":852,"nodeType":"Return","src":"9997:13:1"}]},"baseFunctions":[2077],"documentation":{"id":846,"nodeType":"StructuredDocumentation","src":"9857:47:1","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"022d63fb","implemented":true,"kind":"function","modifiers":[],"name":"defaultAdminDelayIncreaseWait","nameLocation":"9918:29:1","parameters":{"id":847,"nodeType":"ParameterList","parameters":[],"src":"9947:2:1"},"returnParameters":{"id":850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":849,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":854,"src":"9979:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":848,"name":"uint48","nodeType":"ElementaryTypeName","src":"9979:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"9978:8:1"},"scope":1212,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":868,"nodeType":"FunctionDefinition","src":"10196:150:1","nodes":[],"body":{"id":867,"nodeType":"Block","src":"10293:53:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":864,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"10330:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":863,"name":"_beginDefaultAdminTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":896,"src":"10303:26:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10303:36:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":866,"nodeType":"ExpressionStatement","src":"10303:36:1"}]},"baseFunctions":[2053],"documentation":{"id":855,"nodeType":"StructuredDocumentation","src":"10144:47:1","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"634e93da","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":860,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"10273:18:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":861,"kind":"modifierInvocation","modifierName":{"id":859,"name":"onlyRole","nameLocations":["10264:8:1"],"nodeType":"IdentifierPath","referencedDeclaration":59,"src":"10264:8:1"},"nodeType":"ModifierInvocation","src":"10264:28:1"}],"name":"beginDefaultAdminTransfer","nameLocation":"10205:25:1","parameters":{"id":858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":857,"mutability":"mutable","name":"newAdmin","nameLocation":"10239:8:1","nodeType":"VariableDeclaration","scope":868,"src":"10231:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":856,"name":"address","nodeType":"ElementaryTypeName","src":"10231:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10230:18:1"},"returnParameters":{"id":862,"nodeType":"ParameterList","parameters":[],"src":"10293:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":896,"nodeType":"FunctionDefinition","src":"10473:288:1","nodes":[],"body":{"id":895,"nodeType":"Block","src":"10544:217:1","nodes":[],"statements":[{"assignments":[875],"declarations":[{"constant":false,"id":875,"mutability":"mutable","name":"newSchedule","nameLocation":"10561:11:1","nodeType":"VariableDeclaration","scope":895,"src":"10554:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":874,"name":"uint48","nodeType":"ElementaryTypeName","src":"10554:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":884,"initialValue":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":878,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"10593:5:1","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10599:9:1","memberName":"timestamp","nodeType":"MemberAccess","src":"10593:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":876,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"10575:8:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10584:8:1","memberName":"toUint48","nodeType":"MemberAccess","referencedDeclaration":6150,"src":"10575:17:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint48_$","typeString":"function (uint256) pure returns (uint48)"}},"id":880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10575:34:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":881,"name":"defaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":807,"src":"10612:17:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10612:19:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"10575:56:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"10554:77:1"},{"expression":{"arguments":[{"id":886,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":871,"src":"10665:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":887,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":875,"src":"10675:11:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":885,"name":"_setPendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1131,"src":"10641:23:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint48_$returns$__$","typeString":"function (address,uint48)"}},"id":888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10641:46:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":889,"nodeType":"ExpressionStatement","src":"10641:46:1"},{"eventCall":{"arguments":[{"id":891,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":871,"src":"10732:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":892,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":875,"src":"10742:11:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":890,"name":"DefaultAdminTransferScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2006,"src":"10702:29:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint48_$returns$__$","typeString":"function (address,uint48)"}},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10702:52:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":894,"nodeType":"EmitStatement","src":"10697:57:1"}]},"documentation":{"id":869,"nodeType":"StructuredDocumentation","src":"10352:116:1","text":" @dev See {beginDefaultAdminTransfer}.\n Internal function without access restriction."},"implemented":true,"kind":"function","modifiers":[],"name":"_beginDefaultAdminTransfer","nameLocation":"10482:26:1","parameters":{"id":872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":871,"mutability":"mutable","name":"newAdmin","nameLocation":"10517:8:1","nodeType":"VariableDeclaration","scope":896,"src":"10509:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":870,"name":"address","nodeType":"ElementaryTypeName","src":"10509:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10508:18:1"},"returnParameters":{"id":873,"nodeType":"ParameterList","parameters":[],"src":"10544:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":907,"nodeType":"FunctionDefinition","src":"10819:128:1","nodes":[],"body":{"id":906,"nodeType":"Block","src":"10901:46:1","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":903,"name":"_cancelDefaultAdminTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":920,"src":"10911:27:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10911:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":905,"nodeType":"ExpressionStatement","src":"10911:29:1"}]},"baseFunctions":[2057],"documentation":{"id":897,"nodeType":"StructuredDocumentation","src":"10767:47:1","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"d602b9fd","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":900,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"10881:18:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":901,"kind":"modifierInvocation","modifierName":{"id":899,"name":"onlyRole","nameLocations":["10872:8:1"],"nodeType":"IdentifierPath","referencedDeclaration":59,"src":"10872:8:1"},"nodeType":"ModifierInvocation","src":"10872:28:1"}],"name":"cancelDefaultAdminTransfer","nameLocation":"10828:26:1","parameters":{"id":898,"nodeType":"ParameterList","parameters":[],"src":"10854:2:1"},"returnParameters":{"id":902,"nodeType":"ParameterList","parameters":[],"src":"10901:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":920,"nodeType":"FunctionDefinition","src":"11075:111:1","nodes":[],"body":{"id":919,"nodeType":"Block","src":"11131:55:1","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11173:1:1","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":913,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11165:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":912,"name":"address","nodeType":"ElementaryTypeName","src":"11165:7:1","typeDescriptions":{}}},"id":915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11165:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11177:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":911,"name":"_setPendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1131,"src":"11141:23:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint48_$returns$__$","typeString":"function (address,uint48)"}},"id":917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11141:38:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":918,"nodeType":"ExpressionStatement","src":"11141:38:1"}]},"documentation":{"id":908,"nodeType":"StructuredDocumentation","src":"10953:117:1","text":" @dev See {cancelDefaultAdminTransfer}.\n Internal function without access restriction."},"implemented":true,"kind":"function","modifiers":[],"name":"_cancelDefaultAdminTransfer","nameLocation":"11084:27:1","parameters":{"id":909,"nodeType":"ParameterList","parameters":[],"src":"11111:2:1"},"returnParameters":{"id":910,"nodeType":"ParameterList","parameters":[],"src":"11131:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":944,"nodeType":"FunctionDefinition","src":"11244:344:1","nodes":[],"body":{"id":943,"nodeType":"Block","src":"11297:291:1","nodes":[],"statements":[{"assignments":[925,null],"declarations":[{"constant":false,"id":925,"mutability":"mutable","name":"newDefaultAdmin","nameLocation":"11316:15:1","nodeType":"VariableDeclaration","scope":943,"src":"11308:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":924,"name":"address","nodeType":"ElementaryTypeName","src":"11308:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":928,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":926,"name":"pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"11337:19:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_uint48_$","typeString":"function () view returns (address,uint48)"}},"id":927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11337:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$","typeString":"tuple(address,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"11307:51:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":929,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1690,"src":"11372:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11372:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":931,"name":"newDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":925,"src":"11388:15:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11372:31:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":939,"nodeType":"IfStatement","src":"11368:175:1","trueBody":{"id":938,"nodeType":"Block","src":"11405:138:1","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":934,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1690,"src":"11519:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11519:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":933,"name":"AccessControlInvalidDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1991,"src":"11486:32:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11486:46:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":937,"nodeType":"RevertStatement","src":"11479:53:1"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":940,"name":"_acceptDefaultAdminTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":996,"src":"11552:27:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11552:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":942,"nodeType":"ExpressionStatement","src":"11552:29:1"}]},"baseFunctions":[2061],"documentation":{"id":921,"nodeType":"StructuredDocumentation","src":"11192:47:1","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"cefc1429","implemented":true,"kind":"function","modifiers":[],"name":"acceptDefaultAdminTransfer","nameLocation":"11253:26:1","parameters":{"id":922,"nodeType":"ParameterList","parameters":[],"src":"11279:2:1"},"returnParameters":{"id":923,"nodeType":"ParameterList","parameters":[],"src":"11297:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":996,"nodeType":"FunctionDefinition","src":"11716:581:1","nodes":[],"body":{"id":995,"nodeType":"Block","src":"11772:525:1","nodes":[],"statements":[{"assignments":[950],"declarations":[{"constant":false,"id":950,"mutability":"mutable","name":"$","nameLocation":"11828:1:1","nodeType":"VariableDeclaration","scope":995,"src":"11782:47:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"},"typeName":{"id":949,"nodeType":"UserDefinedTypeName","pathNode":{"id":948,"name":"AccessControlDefaultAdminRulesStorage","nameLocations":["11782:37:1"],"nodeType":"IdentifierPath","referencedDeclaration":405,"src":"11782:37:1"},"referencedDeclaration":405,"src":"11782:37:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"}},"visibility":"internal"}],"id":953,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":951,"name":"_getAccessControlDefaultAdminRulesStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"11832:41:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr_$","typeString":"function () pure returns (struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer)"}},"id":952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11832:43:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11782:93:1"},{"assignments":[955,957],"declarations":[{"constant":false,"id":955,"mutability":"mutable","name":"newAdmin","nameLocation":"11894:8:1","nodeType":"VariableDeclaration","scope":995,"src":"11886:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":954,"name":"address","nodeType":"ElementaryTypeName","src":"11886:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":957,"mutability":"mutable","name":"schedule","nameLocation":"11911:8:1","nodeType":"VariableDeclaration","scope":995,"src":"11904:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":956,"name":"uint48","nodeType":"ElementaryTypeName","src":"11904:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":960,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":958,"name":"pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"11923:19:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_uint48_$","typeString":"function () view returns (address,uint48)"}},"id":959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11923:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$","typeString":"tuple(address,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"11885:59:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11958:25:1","subExpression":{"arguments":[{"id":962,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"11974:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":961,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1197,"src":"11959:14:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11959:24:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11987:29:1","subExpression":{"arguments":[{"id":966,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"12007:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":965,"name":"_hasSchedulePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1211,"src":"11988:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11988:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11958:58:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":975,"nodeType":"IfStatement","src":"11954:144:1","trueBody":{"id":974,"nodeType":"Block","src":"12018:80:1","statements":[{"errorCall":{"arguments":[{"id":971,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":957,"src":"12078:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":970,"name":"AccessControlEnforcedDefaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1999,"src":"12039:38:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint48_$returns$_t_error_$","typeString":"function (uint48) pure returns (error)"}},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12039:48:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":973,"nodeType":"RevertStatement","src":"12032:55:1"}]}},{"expression":{"arguments":[{"id":977,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"12119:18:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":978,"name":"defaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":754,"src":"12139:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12139:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":976,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[713],"referencedDeclaration":713,"src":"12107:11:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12107:47:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":981,"nodeType":"ExpressionStatement","src":"12107:47:1"},{"expression":{"arguments":[{"id":983,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"12175:18:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":984,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"12195:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":982,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[675],"referencedDeclaration":675,"src":"12164:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12164:40:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":986,"nodeType":"ExpressionStatement","src":"12164:40:1"},{"expression":{"id":989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"12214:29:1","subExpression":{"expression":{"id":987,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":950,"src":"12221:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":988,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12223:20:1","memberName":"_pendingDefaultAdmin","nodeType":"MemberAccess","referencedDeclaration":394,"src":"12221:22:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":990,"nodeType":"ExpressionStatement","src":"12214:29:1"},{"expression":{"id":993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"12253:37:1","subExpression":{"expression":{"id":991,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":950,"src":"12260:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":992,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12262:28:1","memberName":"_pendingDefaultAdminSchedule","nodeType":"MemberAccess","referencedDeclaration":396,"src":"12260:30:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":994,"nodeType":"ExpressionStatement","src":"12253:37:1"}]},"documentation":{"id":945,"nodeType":"StructuredDocumentation","src":"11594:117:1","text":" @dev See {acceptDefaultAdminTransfer}.\n Internal function without access restriction."},"implemented":true,"kind":"function","modifiers":[],"name":"_acceptDefaultAdminTransfer","nameLocation":"11725:27:1","parameters":{"id":946,"nodeType":"ParameterList","parameters":[],"src":"11752:2:1"},"returnParameters":{"id":947,"nodeType":"ParameterList","parameters":[],"src":"11772:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":1010,"nodeType":"FunctionDefinition","src":"12486:145:1","nodes":[],"body":{"id":1009,"nodeType":"Block","src":"12580:51:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":1006,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":999,"src":"12615:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1005,"name":"_changeDefaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1039,"src":"12590:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint48_$returns$__$","typeString":"function (uint48)"}},"id":1007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12590:34:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1008,"nodeType":"ExpressionStatement","src":"12590:34:1"}]},"baseFunctions":[2067],"documentation":{"id":997,"nodeType":"StructuredDocumentation","src":"12434:47:1","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"649a5ec7","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":1002,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"12560:18:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1003,"kind":"modifierInvocation","modifierName":{"id":1001,"name":"onlyRole","nameLocations":["12551:8:1"],"nodeType":"IdentifierPath","referencedDeclaration":59,"src":"12551:8:1"},"nodeType":"ModifierInvocation","src":"12551:28:1"}],"name":"changeDefaultAdminDelay","nameLocation":"12495:23:1","parameters":{"id":1000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":999,"mutability":"mutable","name":"newDelay","nameLocation":"12526:8:1","nodeType":"VariableDeclaration","scope":1010,"src":"12519:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":998,"name":"uint48","nodeType":"ElementaryTypeName","src":"12519:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"12518:17:1"},"returnParameters":{"id":1004,"nodeType":"ParameterList","parameters":[],"src":"12580:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1039,"nodeType":"FunctionDefinition","src":"12756:288:1","nodes":[],"body":{"id":1038,"nodeType":"Block","src":"12824:220:1","nodes":[],"statements":[{"assignments":[1017],"declarations":[{"constant":false,"id":1017,"mutability":"mutable","name":"newSchedule","nameLocation":"12841:11:1","nodeType":"VariableDeclaration","scope":1038,"src":"12834:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1016,"name":"uint48","nodeType":"ElementaryTypeName","src":"12834:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":1027,"initialValue":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":1020,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"12873:5:1","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12879:9:1","memberName":"timestamp","nodeType":"MemberAccess","src":"12873:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1018,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7160,"src":"12855:8:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$7160_$","typeString":"type(library SafeCast)"}},"id":1019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12864:8:1","memberName":"toUint48","nodeType":"MemberAccess","referencedDeclaration":6150,"src":"12855:17:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint48_$","typeString":"function (uint256) pure returns (uint48)"}},"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12855:34:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"id":1024,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1013,"src":"12909:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1023,"name":"_delayChangeWait","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1091,"src":"12892:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_uint48_$","typeString":"function (uint48) view returns (uint48)"}},"id":1025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12892:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"12855:63:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"12834:84:1"},{"expression":{"arguments":[{"id":1029,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1013,"src":"12945:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":1030,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1017,"src":"12955:11:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1028,"name":"_setPendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1184,"src":"12928:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint48_$_t_uint48_$returns$__$","typeString":"function (uint48,uint48)"}},"id":1031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12928:39:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1032,"nodeType":"ExpressionStatement","src":"12928:39:1"},{"eventCall":{"arguments":[{"id":1034,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1013,"src":"13015:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":1035,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1017,"src":"13025:11:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1033,"name":"DefaultAdminDelayChangeScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2016,"src":"12982:32:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint48_$_t_uint48_$returns$__$","typeString":"function (uint48,uint48)"}},"id":1036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12982:55:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1037,"nodeType":"EmitStatement","src":"12977:60:1"}]},"documentation":{"id":1011,"nodeType":"StructuredDocumentation","src":"12637:114:1","text":" @dev See {changeDefaultAdminDelay}.\n Internal function without access restriction."},"implemented":true,"kind":"function","modifiers":[],"name":"_changeDefaultAdminDelay","nameLocation":"12765:24:1","parameters":{"id":1014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1013,"mutability":"mutable","name":"newDelay","nameLocation":"12797:8:1","nodeType":"VariableDeclaration","scope":1039,"src":"12790:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1012,"name":"uint48","nodeType":"ElementaryTypeName","src":"12790:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"12789:17:1"},"returnParameters":{"id":1015,"nodeType":"ParameterList","parameters":[],"src":"12824:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":1050,"nodeType":"FunctionDefinition","src":"13102:126:1","nodes":[],"body":{"id":1049,"nodeType":"Block","src":"13183:45:1","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1046,"name":"_rollbackDefaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1060,"src":"13193:26:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13193:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1048,"nodeType":"ExpressionStatement","src":"13193:28:1"}]},"baseFunctions":[2071],"documentation":{"id":1040,"nodeType":"StructuredDocumentation","src":"13050:47:1","text":"@inheritdoc IAccessControlDefaultAdminRules"},"functionSelector":"0aa6220b","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":1043,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"13163:18:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1044,"kind":"modifierInvocation","modifierName":{"id":1042,"name":"onlyRole","nameLocations":["13154:8:1"],"nodeType":"IdentifierPath","referencedDeclaration":59,"src":"13154:8:1"},"nodeType":"ModifierInvocation","src":"13154:28:1"}],"name":"rollbackDefaultAdminDelay","nameLocation":"13111:25:1","parameters":{"id":1041,"nodeType":"ParameterList","parameters":[],"src":"13136:2:1"},"returnParameters":{"id":1045,"nodeType":"ParameterList","parameters":[],"src":"13183:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":1060,"nodeType":"FunctionDefinition","src":"13355:94:1","nodes":[],"body":{"id":1059,"nodeType":"Block","src":"13410:39:1","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"30","id":1055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13437:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13440:1:1","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"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1054,"name":"_setPendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1184,"src":"13420:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint48_$_t_uint48_$returns$__$","typeString":"function (uint48,uint48)"}},"id":1057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13420:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1058,"nodeType":"ExpressionStatement","src":"13420:22:1"}]},"documentation":{"id":1051,"nodeType":"StructuredDocumentation","src":"13234:116:1","text":" @dev See {rollbackDefaultAdminDelay}.\n Internal function without access restriction."},"implemented":true,"kind":"function","modifiers":[],"name":"_rollbackDefaultAdminDelay","nameLocation":"13364:26:1","parameters":{"id":1052,"nodeType":"ParameterList","parameters":[],"src":"13390:2:1"},"returnParameters":{"id":1053,"nodeType":"ParameterList","parameters":[],"src":"13410:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":1091,"nodeType":"FunctionDefinition","src":"13796:1249:1","nodes":[],"body":{"id":1090,"nodeType":"Block","src":"13878:1167:1","nodes":[],"statements":[{"assignments":[1069],"declarations":[{"constant":false,"id":1069,"mutability":"mutable","name":"currentDelay","nameLocation":"13895:12:1","nodeType":"VariableDeclaration","scope":1090,"src":"13888:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1068,"name":"uint48","nodeType":"ElementaryTypeName","src":"13888:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":1072,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1070,"name":"defaultAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":807,"src":"13910:17:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":1071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13910:19:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"13888:41:1"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":1075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1073,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1063,"src":"14848:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1074,"name":"currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"14859:12:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14848:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":1087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1085,"name":"currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"15015:12:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1086,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1063,"src":"15030:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"15015:23:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":1088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14848:190:1","trueExpression":{"arguments":[{"arguments":[{"id":1080,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1063,"src":"14906:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1081,"name":"defaultAdminDelayIncreaseWait","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"14916:29:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":1082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14916:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":1078,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5395,"src":"14897:4:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$5395_$","typeString":"type(library Math)"}},"id":1079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14902:3:1","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":4101,"src":"14897:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14897:51:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1077,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14890:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":1076,"name":"uint48","nodeType":"ElementaryTypeName","src":"14890:6:1","typeDescriptions":{}}},"id":1084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14890:59:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":1067,"id":1089,"nodeType":"Return","src":"14829:209:1"}]},"documentation":{"id":1061,"nodeType":"StructuredDocumentation","src":"13455:336:1","text":" @dev Returns the amount of seconds to wait after the `newDelay` will\n become the new {defaultAdminDelay}.\n The value returned guarantees that if the delay is reduced, it will go into effect\n after a wait that honors the previously set delay.\n See {defaultAdminDelayIncreaseWait}."},"implemented":true,"kind":"function","modifiers":[],"name":"_delayChangeWait","nameLocation":"13805:16:1","parameters":{"id":1064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1063,"mutability":"mutable","name":"newDelay","nameLocation":"13829:8:1","nodeType":"VariableDeclaration","scope":1091,"src":"13822:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1062,"name":"uint48","nodeType":"ElementaryTypeName","src":"13822:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"13821:17:1"},"returnParameters":{"id":1067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1066,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1091,"src":"13870:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1065,"name":"uint48","nodeType":"ElementaryTypeName","src":"13870:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"13869:8:1"},"scope":1212,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1131,"nodeType":"FunctionDefinition","src":"15237:632:1","nodes":[],"body":{"id":1130,"nodeType":"Block","src":"15316:553:1","nodes":[],"statements":[{"assignments":[1101],"declarations":[{"constant":false,"id":1101,"mutability":"mutable","name":"$","nameLocation":"15372:1:1","nodeType":"VariableDeclaration","scope":1130,"src":"15326:47:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"},"typeName":{"id":1100,"nodeType":"UserDefinedTypeName","pathNode":{"id":1099,"name":"AccessControlDefaultAdminRulesStorage","nameLocations":["15326:37:1"],"nodeType":"IdentifierPath","referencedDeclaration":405,"src":"15326:37:1"},"referencedDeclaration":405,"src":"15326:37:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"}},"visibility":"internal"}],"id":1104,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1102,"name":"_getAccessControlDefaultAdminRulesStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"15376:41:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr_$","typeString":"function () pure returns (struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer)"}},"id":1103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15376:43:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"15326:93:1"},{"assignments":[null,1106],"declarations":[null,{"constant":false,"id":1106,"mutability":"mutable","name":"oldSchedule","nameLocation":"15439:11:1","nodeType":"VariableDeclaration","scope":1130,"src":"15432:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1105,"name":"uint48","nodeType":"ElementaryTypeName","src":"15432:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":1109,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1107,"name":"pendingDefaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"15454:19:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_uint48_$","typeString":"function () view returns (address,uint48)"}},"id":1108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15454:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$","typeString":"tuple(address,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"15429:46:1"},{"expression":{"id":1114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1110,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"15486:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":1112,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15488:20:1","memberName":"_pendingDefaultAdmin","nodeType":"MemberAccess","referencedDeclaration":394,"src":"15486:22:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1113,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1094,"src":"15511:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15486:33:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1115,"nodeType":"ExpressionStatement","src":"15486:33:1"},{"expression":{"id":1120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1116,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"15529:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":1118,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15531:28:1","memberName":"_pendingDefaultAdminSchedule","nodeType":"MemberAccess","referencedDeclaration":396,"src":"15529:30:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1119,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1096,"src":"15562:11:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"15529:44:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":1121,"nodeType":"ExpressionStatement","src":"15529:44:1"},{"condition":{"arguments":[{"id":1123,"name":"oldSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1106,"src":"15700:11:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1122,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1197,"src":"15685:14:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":1124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15685:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1129,"nodeType":"IfStatement","src":"15681:182:1","trueBody":{"id":1128,"nodeType":"Block","src":"15714:149:1","statements":[{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1125,"name":"DefaultAdminTransferCanceled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2009,"src":"15822:28:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15822:30:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1127,"nodeType":"EmitStatement","src":"15817:35:1"}]}}]},"documentation":{"id":1092,"nodeType":"StructuredDocumentation","src":"15092:140:1","text":" @dev Setter of the tuple for pending admin and its schedule.\n May emit a DefaultAdminTransferCanceled event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setPendingDefaultAdmin","nameLocation":"15246:23:1","parameters":{"id":1097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1094,"mutability":"mutable","name":"newAdmin","nameLocation":"15278:8:1","nodeType":"VariableDeclaration","scope":1131,"src":"15270:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1093,"name":"address","nodeType":"ElementaryTypeName","src":"15270:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1096,"mutability":"mutable","name":"newSchedule","nameLocation":"15295:11:1","nodeType":"VariableDeclaration","scope":1131,"src":"15288:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1095,"name":"uint48","nodeType":"ElementaryTypeName","src":"15288:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"15269:38:1"},"returnParameters":{"id":1098,"nodeType":"ParameterList","parameters":[],"src":"15316:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":1184,"nodeType":"FunctionDefinition","src":"16023:698:1","nodes":[],"body":{"id":1183,"nodeType":"Block","src":"16094:627:1","nodes":[],"statements":[{"assignments":[1141],"declarations":[{"constant":false,"id":1141,"mutability":"mutable","name":"$","nameLocation":"16150:1:1","nodeType":"VariableDeclaration","scope":1183,"src":"16104:47:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"},"typeName":{"id":1140,"nodeType":"UserDefinedTypeName","pathNode":{"id":1139,"name":"AccessControlDefaultAdminRulesStorage","nameLocations":["16104:37:1"],"nodeType":"IdentifierPath","referencedDeclaration":405,"src":"16104:37:1"},"referencedDeclaration":405,"src":"16104:37:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage"}},"visibility":"internal"}],"id":1144,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1142,"name":"_getAccessControlDefaultAdminRulesStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"16154:41:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr_$","typeString":"function () pure returns (struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer)"}},"id":1143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16154:43:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"16104:93:1"},{"assignments":[1146],"declarations":[{"constant":false,"id":1146,"mutability":"mutable","name":"oldSchedule","nameLocation":"16214:11:1","nodeType":"VariableDeclaration","scope":1183,"src":"16207:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1145,"name":"uint48","nodeType":"ElementaryTypeName","src":"16207:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":1149,"initialValue":{"expression":{"id":1147,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1141,"src":"16228:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":1148,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16230:21:1","memberName":"_pendingDelaySchedule","nodeType":"MemberAccess","referencedDeclaration":404,"src":"16228:23:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"16207:44:1"},{"condition":{"arguments":[{"id":1151,"name":"oldSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1146,"src":"16281:11:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1150,"name":"_isScheduleSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1197,"src":"16266:14:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) pure returns (bool)"}},"id":1152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16266:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1170,"nodeType":"IfStatement","src":"16262:369:1","trueBody":{"id":1169,"nodeType":"Block","src":"16295:336:1","statements":[{"condition":{"arguments":[{"id":1154,"name":"oldSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1146,"src":"16332:11:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":1153,"name":"_hasSchedulePassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1211,"src":"16313:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":1155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16313:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1167,"nodeType":"Block","src":"16465:156:1","statements":[{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1164,"name":"DefaultAdminDelayChangeCanceled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2019,"src":"16573:31:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16573:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1166,"nodeType":"EmitStatement","src":"16568:38:1"}]},"id":1168,"nodeType":"IfStatement","src":"16309:312:1","trueBody":{"id":1163,"nodeType":"Block","src":"16346:113:1","statements":[{"expression":{"id":1161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1156,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1141,"src":"16411:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":1158,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16413:13:1","memberName":"_currentDelay","nodeType":"MemberAccess","referencedDeclaration":398,"src":"16411:15:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":1159,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1141,"src":"16429:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":1160,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16431:13:1","memberName":"_pendingDelay","nodeType":"MemberAccess","referencedDeclaration":402,"src":"16429:15:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"16411:33:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":1162,"nodeType":"ExpressionStatement","src":"16411:33:1"}]}}]}},{"expression":{"id":1175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1171,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1141,"src":"16641:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":1173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16643:13:1","memberName":"_pendingDelay","nodeType":"MemberAccess","referencedDeclaration":402,"src":"16641:15:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1174,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1134,"src":"16659:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"16641:26:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":1176,"nodeType":"ExpressionStatement","src":"16641:26:1"},{"expression":{"id":1181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1177,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1141,"src":"16677:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlDefaultAdminRulesStorage_$405_storage_ptr","typeString":"struct AccessControlDefaultAdminRulesUpgradeable.AccessControlDefaultAdminRulesStorage storage pointer"}},"id":1179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16679:21:1","memberName":"_pendingDelaySchedule","nodeType":"MemberAccess","referencedDeclaration":404,"src":"16677:23:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1180,"name":"newSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1136,"src":"16703:11:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"16677:37:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":1182,"nodeType":"ExpressionStatement","src":"16677:37:1"}]},"documentation":{"id":1132,"nodeType":"StructuredDocumentation","src":"15875:143:1","text":" @dev Setter of the tuple for pending delay and its schedule.\n May emit a DefaultAdminDelayChangeCanceled event."},"implemented":true,"kind":"function","modifiers":[],"name":"_setPendingDelay","nameLocation":"16032:16:1","parameters":{"id":1137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1134,"mutability":"mutable","name":"newDelay","nameLocation":"16056:8:1","nodeType":"VariableDeclaration","scope":1184,"src":"16049:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1133,"name":"uint48","nodeType":"ElementaryTypeName","src":"16049:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":1136,"mutability":"mutable","name":"newSchedule","nameLocation":"16073:11:1","nodeType":"VariableDeclaration","scope":1184,"src":"16066:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1135,"name":"uint48","nodeType":"ElementaryTypeName","src":"16066:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"16048:37:1"},"returnParameters":{"id":1138,"nodeType":"ParameterList","parameters":[],"src":"16094:0:1"},"scope":1212,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":1197,"nodeType":"FunctionDefinition","src":"16866:106:1","nodes":[],"body":{"id":1196,"nodeType":"Block","src":"16935:37:1","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1192,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"16952:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16964:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16952:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1191,"id":1195,"nodeType":"Return","src":"16945:20:1"}]},"documentation":{"id":1185,"nodeType":"StructuredDocumentation","src":"16768:93:1","text":" @dev Defines if an `schedule` is considered set. For consistency purposes."},"implemented":true,"kind":"function","modifiers":[],"name":"_isScheduleSet","nameLocation":"16875:14:1","parameters":{"id":1188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1187,"mutability":"mutable","name":"schedule","nameLocation":"16897:8:1","nodeType":"VariableDeclaration","scope":1197,"src":"16890:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1186,"name":"uint48","nodeType":"ElementaryTypeName","src":"16890:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"16889:17:1"},"returnParameters":{"id":1191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1190,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1197,"src":"16929:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1189,"name":"bool","nodeType":"ElementaryTypeName","src":"16929:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16928:6:1"},"scope":1212,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":1211,"nodeType":"FunctionDefinition","src":"17079:123:1","nodes":[],"body":{"id":1210,"nodeType":"Block","src":"17152:50:1","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1205,"name":"schedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1200,"src":"17169:8:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1206,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"17180:5:1","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17186:9:1","memberName":"timestamp","nodeType":"MemberAccess","src":"17180:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17169:26:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1204,"id":1209,"nodeType":"Return","src":"17162:33:1"}]},"documentation":{"id":1198,"nodeType":"StructuredDocumentation","src":"16978:96:1","text":" @dev Defines if an `schedule` is considered passed. For consistency purposes."},"implemented":true,"kind":"function","modifiers":[],"name":"_hasSchedulePassed","nameLocation":"17088:18:1","parameters":{"id":1201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1200,"mutability":"mutable","name":"schedule","nameLocation":"17114:8:1","nodeType":"VariableDeclaration","scope":1211,"src":"17107:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":1199,"name":"uint48","nodeType":"ElementaryTypeName","src":"17107:6:1","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"17106:17:1"},"returnParameters":{"id":1204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1203,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1211,"src":"17146:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1202,"name":"bool","nodeType":"ElementaryTypeName","src":"17146:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17145:6:1"},"scope":1212,"stateMutability":"view","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":384,"name":"Initializable","nameLocations":["2183:13:1"],"nodeType":"IdentifierPath","referencedDeclaration":1480,"src":"2183:13:1"},"id":385,"nodeType":"InheritanceSpecifier","src":"2183:13:1"},{"baseName":{"id":386,"name":"IAccessControlDefaultAdminRules","nameLocations":["2198:31:1"],"nodeType":"IdentifierPath","referencedDeclaration":2078,"src":"2198:31:1"},"id":387,"nodeType":"InheritanceSpecifier","src":"2198:31:1"},{"baseName":{"id":388,"name":"IERC5313","nameLocations":["2231:8:1"],"nodeType":"IdentifierPath","referencedDeclaration":2199,"src":"2231:8:1"},"id":389,"nodeType":"InheritanceSpecifier","src":"2231:8:1"},{"baseName":{"id":390,"name":"AccessControlUpgradeable","nameLocations":["2241:24:1"],"nodeType":"IdentifierPath","referencedDeclaration":364,"src":"2241:24:1"},"id":391,"nodeType":"InheritanceSpecifier","src":"2241:24:1"}],"canonicalName":"AccessControlDefaultAdminRulesUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":383,"nodeType":"StructuredDocumentation","src":"808:1311:1","text":" @dev Extension of {AccessControl} that allows specifying special rules to manage\n the `DEFAULT_ADMIN_ROLE` holder, which is a sensitive role with special permissions\n over other roles that may potentially have privileged rights in the system.\n If a specific role doesn't have an admin role assigned, the holder of the\n `DEFAULT_ADMIN_ROLE` will have the ability to grant it and revoke it.\n This contract implements the following risk mitigations on top of {AccessControl}:\n * Only one account holds the `DEFAULT_ADMIN_ROLE` since deployment until it's potentially renounced.\n * Enforces a 2-step process to transfer the `DEFAULT_ADMIN_ROLE` to another account.\n * Enforces a configurable delay between the two steps, with the ability to cancel before the transfer is accepted.\n * The delay can be changed by scheduling, see {changeDefaultAdminDelay}.\n * Role transfers must wait at least one block after scheduling before it can be accepted.\n * It is not possible to use another role to manage the `DEFAULT_ADMIN_ROLE`.\n Example usage:\n ```solidity\n contract MyToken is AccessControlDefaultAdminRules {\n constructor() AccessControlDefaultAdminRules(\n 3 days,\n msg.sender // Explicit initial `DEFAULT_ADMIN_ROLE` holder\n ) {}\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1212,364,1748,3774,2199,2078,1831,1708,1480],"name":"AccessControlDefaultAdminRulesUpgradeable","nameLocation":"2138:41:1","scope":1213,"usedErrors":[1229,1232,1758,1761,1991,1994,1999,5405],"usedEvents":[1237,1770,1779,1788,2006,2009,2016,2019]}],"license":"MIT"}},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"id":2,"ast":{"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","id":1481,"exportedSymbols":{"Initializable":[1480]},"nodeType":"SourceUnit","src":"113:9166:2","nodes":[{"id":1214,"nodeType":"PragmaDirective","src":"113:24:2","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1480,"nodeType":"ContractDefinition","src":"2349:6929:2","nodes":[{"id":1223,"nodeType":"StructDefinition","src":"2685:290:2","nodes":[],"canonicalName":"Initializable.InitializableStorage","documentation":{"id":1216,"nodeType":"StructuredDocumentation","src":"2387:293:2","text":" @dev Storage of the initializable contract.\n It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n when using with upgradeable contracts.\n @custom:storage-location erc7201:openzeppelin.storage.Initializable"},"members":[{"constant":false,"id":1219,"mutability":"mutable","name":"_initialized","nameLocation":"2820:12:2","nodeType":"VariableDeclaration","scope":1223,"src":"2813:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1218,"name":"uint64","nodeType":"ElementaryTypeName","src":"2813:6:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":1222,"mutability":"mutable","name":"_initializing","nameLocation":"2955:13:2","nodeType":"VariableDeclaration","scope":1223,"src":"2950:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1221,"name":"bool","nodeType":"ElementaryTypeName","src":"2950:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"InitializableStorage","nameLocation":"2692:20:2","scope":1480,"visibility":"public"},{"id":1226,"nodeType":"VariableDeclaration","src":"3098:115:2","nodes":[],"constant":true,"mutability":"constant","name":"INITIALIZABLE_STORAGE","nameLocation":"3123:21:2","scope":1480,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1224,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3098:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030","id":1225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:66:2","typeDescriptions":{"typeIdentifier":"t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1","typeString":"int_const 1089...(70 digits omitted)...9600"},"value":"0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00"},"visibility":"private"},{"id":1229,"nodeType":"ErrorDefinition","src":"3285:30:2","nodes":[],"documentation":{"id":1227,"nodeType":"StructuredDocumentation","src":"3220:60:2","text":" @dev The contract is already initialized."},"errorSelector":"f92ee8a9","name":"InvalidInitialization","nameLocation":"3291:21:2","parameters":{"id":1228,"nodeType":"ParameterList","parameters":[],"src":"3312:2:2"}},{"id":1232,"nodeType":"ErrorDefinition","src":"3383:24:2","nodes":[],"documentation":{"id":1230,"nodeType":"StructuredDocumentation","src":"3321:57:2","text":" @dev The contract is not initializing."},"errorSelector":"d7e6bcf8","name":"NotInitializing","nameLocation":"3389:15:2","parameters":{"id":1231,"nodeType":"ParameterList","parameters":[],"src":"3404:2:2"}},{"id":1237,"nodeType":"EventDefinition","src":"3508:34:2","nodes":[],"anonymous":false,"documentation":{"id":1233,"nodeType":"StructuredDocumentation","src":"3413:90:2","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2","name":"Initialized","nameLocation":"3514:11:2","parameters":{"id":1236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1235,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"3533:7:2","nodeType":"VariableDeclaration","scope":1237,"src":"3526:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1234,"name":"uint64","nodeType":"ElementaryTypeName","src":"3526:6:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3525:16:2"}},{"id":1320,"nodeType":"ModifierDefinition","src":"4069:1102:2","nodes":[],"body":{"id":1319,"nodeType":"Block","src":"4092:1079:2","nodes":[],"statements":[{"assignments":[1242],"declarations":[{"constant":false,"id":1242,"mutability":"mutable","name":"$","nameLocation":"4187:1:2","nodeType":"VariableDeclaration","scope":1319,"src":"4158:30:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":1241,"nodeType":"UserDefinedTypeName","pathNode":{"id":1240,"name":"InitializableStorage","nameLocations":["4158:20:2"],"nodeType":"IdentifierPath","referencedDeclaration":1223,"src":"4158:20:2"},"referencedDeclaration":1223,"src":"4158:20:2","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":1245,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1243,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"4191:24:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$1223_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":1244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4191:26:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4158:59:2"},{"assignments":[1247],"declarations":[{"constant":false,"id":1247,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"4284:14:2","nodeType":"VariableDeclaration","scope":1319,"src":"4279:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1246,"name":"bool","nodeType":"ElementaryTypeName","src":"4279:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1251,"initialValue":{"id":1250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4301:16:2","subExpression":{"expression":{"id":1248,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1242,"src":"4302:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1249,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4304:13:2","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":1222,"src":"4302:15:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4279:38:2"},{"assignments":[1253],"declarations":[{"constant":false,"id":1253,"mutability":"mutable","name":"initialized","nameLocation":"4334:11:2","nodeType":"VariableDeclaration","scope":1319,"src":"4327:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1252,"name":"uint64","nodeType":"ElementaryTypeName","src":"4327:6:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":1256,"initialValue":{"expression":{"id":1254,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1242,"src":"4348:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1255,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4350:12:2","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":1219,"src":"4348:14:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"4327:35:2"},{"assignments":[1258],"declarations":[{"constant":false,"id":1258,"mutability":"mutable","name":"initialSetup","nameLocation":"4709:12:2","nodeType":"VariableDeclaration","scope":1319,"src":"4704:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1257,"name":"bool","nodeType":"ElementaryTypeName","src":"4704:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1264,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1259,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1253,"src":"4724:11:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4739:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4724:16:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":1262,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"4744:14:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4724:34:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4704:54:2"},{"assignments":[1266],"declarations":[{"constant":false,"id":1266,"mutability":"mutable","name":"construction","nameLocation":"4773:12:2","nodeType":"VariableDeclaration","scope":1319,"src":"4768:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1265,"name":"bool","nodeType":"ElementaryTypeName","src":"4768:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1279,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1267,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1253,"src":"4788:11:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4803:1:2","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4788:16:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":1272,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4816:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$1480","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$1480","typeString":"contract Initializable"}],"id":1271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4808:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1270,"name":"address","nodeType":"ElementaryTypeName","src":"4808:7:2","typeDescriptions":{}}},"id":1273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4808:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4822:4:2","memberName":"code","nodeType":"MemberAccess","src":"4808:18:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4827:6:2","memberName":"length","nodeType":"MemberAccess","src":"4808:25:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4837:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4808:30:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4788:50:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4768:70:2"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4853:13:2","subExpression":{"id":1280,"name":"initialSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1258,"src":"4854:12:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":1283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4870:13:2","subExpression":{"id":1282,"name":"construction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1266,"src":"4871:12:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4853:30:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1289,"nodeType":"IfStatement","src":"4849:91:2","trueBody":{"id":1288,"nodeType":"Block","src":"4885:55:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1285,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1229,"src":"4906:21:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4906:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1287,"nodeType":"RevertStatement","src":"4899:30:2"}]}},{"expression":{"id":1294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1290,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1242,"src":"4949:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1292,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4951:12:2","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":1219,"src":"4949:14:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":1293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4966:1:2","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4949:18:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":1295,"nodeType":"ExpressionStatement","src":"4949:18:2"},{"condition":{"id":1296,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"4981:14:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1304,"nodeType":"IfStatement","src":"4977:67:2","trueBody":{"id":1303,"nodeType":"Block","src":"4997:47:2","statements":[{"expression":{"id":1301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1297,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1242,"src":"5011:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1299,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5013:13:2","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":1222,"src":"5011:15:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5029:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5011:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1302,"nodeType":"ExpressionStatement","src":"5011:22:2"}]}},{"id":1305,"nodeType":"PlaceholderStatement","src":"5053:1:2"},{"condition":{"id":1306,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"5068:14:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1318,"nodeType":"IfStatement","src":"5064:101:2","trueBody":{"id":1317,"nodeType":"Block","src":"5084:81:2","statements":[{"expression":{"id":1311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1307,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1242,"src":"5098:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1309,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5100:13:2","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":1222,"src":"5098:15:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5116:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5098:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1312,"nodeType":"ExpressionStatement","src":"5098:23:2"},{"eventCall":{"arguments":[{"hexValue":"31","id":1314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5152:1:2","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":1313,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"5140:11:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":1315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5140:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1316,"nodeType":"EmitStatement","src":"5135:19:2"}]}}]},"documentation":{"id":1238,"nodeType":"StructuredDocumentation","src":"3548:516:2","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n production.\n Emits an {Initialized} event."},"name":"initializer","nameLocation":"4078:11:2","parameters":{"id":1239,"nodeType":"ParameterList","parameters":[],"src":"4089:2:2"},"virtual":false,"visibility":"internal"},{"id":1367,"nodeType":"ModifierDefinition","src":"6250:431:2","nodes":[],"body":{"id":1366,"nodeType":"Block","src":"6289:392:2","nodes":[],"statements":[{"assignments":[1327],"declarations":[{"constant":false,"id":1327,"mutability":"mutable","name":"$","nameLocation":"6384:1:2","nodeType":"VariableDeclaration","scope":1366,"src":"6355:30:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":1326,"nodeType":"UserDefinedTypeName","pathNode":{"id":1325,"name":"InitializableStorage","nameLocations":["6355:20:2"],"nodeType":"IdentifierPath","referencedDeclaration":1223,"src":"6355:20:2"},"referencedDeclaration":1223,"src":"6355:20:2","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":1330,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1328,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"6388:24:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$1223_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":1329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6388:26:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6355:59:2"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1331,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1327,"src":"6429:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1332,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6431:13:2","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":1222,"src":"6429:15:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":1336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1333,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1327,"src":"6448:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1334,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6450:12:2","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":1219,"src":"6448:14:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1335,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1323,"src":"6466:7:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6448:25:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6429:44:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1342,"nodeType":"IfStatement","src":"6425:105:2","trueBody":{"id":1341,"nodeType":"Block","src":"6475:55:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1338,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1229,"src":"6496:21:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6496:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1340,"nodeType":"RevertStatement","src":"6489:30:2"}]}},{"expression":{"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1343,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1327,"src":"6539:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1345,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6541:12:2","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":1219,"src":"6539:14:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1346,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1323,"src":"6556:7:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6539:24:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":1348,"nodeType":"ExpressionStatement","src":"6539:24:2"},{"expression":{"id":1353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1349,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1327,"src":"6573:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1351,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6575:13:2","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":1222,"src":"6573:15:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6591:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6573:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1354,"nodeType":"ExpressionStatement","src":"6573:22:2"},{"id":1355,"nodeType":"PlaceholderStatement","src":"6605:1:2"},{"expression":{"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1356,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1327,"src":"6616:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6618:13:2","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":1222,"src":"6616:15:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6634:5:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6616:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1361,"nodeType":"ExpressionStatement","src":"6616:23:2"},{"eventCall":{"arguments":[{"id":1363,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1323,"src":"6666:7:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":1362,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"6654:11:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":1364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6654:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1365,"nodeType":"EmitStatement","src":"6649:25:2"}]},"documentation":{"id":1321,"nodeType":"StructuredDocumentation","src":"5177:1068:2","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n Emits an {Initialized} event."},"name":"reinitializer","nameLocation":"6259:13:2","parameters":{"id":1324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1323,"mutability":"mutable","name":"version","nameLocation":"6280:7:2","nodeType":"VariableDeclaration","scope":1367,"src":"6273:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1322,"name":"uint64","nodeType":"ElementaryTypeName","src":"6273:6:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6272:16:2"},"virtual":false,"visibility":"internal"},{"id":1375,"nodeType":"ModifierDefinition","src":"6891:76:2","nodes":[],"body":{"id":1374,"nodeType":"Block","src":"6919:48:2","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1370,"name":"_checkInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1388,"src":"6929:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6929:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1372,"nodeType":"ExpressionStatement","src":"6929:20:2"},{"id":1373,"nodeType":"PlaceholderStatement","src":"6959:1:2"}]},"documentation":{"id":1368,"nodeType":"StructuredDocumentation","src":"6687:199:2","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."},"name":"onlyInitializing","nameLocation":"6900:16:2","parameters":{"id":1369,"nodeType":"ParameterList","parameters":[],"src":"6916:2:2"},"virtual":false,"visibility":"internal"},{"id":1388,"nodeType":"FunctionDefinition","src":"7082:141:2","nodes":[],"body":{"id":1387,"nodeType":"Block","src":"7134:89:2","nodes":[],"statements":[{"condition":{"id":1381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7148:18:2","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1379,"name":"_isInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1456,"src":"7149:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":1380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7149:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1386,"nodeType":"IfStatement","src":"7144:73:2","trueBody":{"id":1385,"nodeType":"Block","src":"7168:49:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1382,"name":"NotInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1232,"src":"7189:15:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7189:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1384,"nodeType":"RevertStatement","src":"7182:24:2"}]}}]},"documentation":{"id":1376,"nodeType":"StructuredDocumentation","src":"6973:104:2","text":" @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkInitializing","nameLocation":"7091:18:2","parameters":{"id":1377,"nodeType":"ParameterList","parameters":[],"src":"7109:2:2"},"returnParameters":{"id":1378,"nodeType":"ParameterList","parameters":[],"src":"7134:0:2"},"scope":1480,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1434,"nodeType":"FunctionDefinition","src":"7709:422:2","nodes":[],"body":{"id":1433,"nodeType":"Block","src":"7758:373:2","nodes":[],"statements":[{"assignments":[1394],"declarations":[{"constant":false,"id":1394,"mutability":"mutable","name":"$","nameLocation":"7853:1:2","nodeType":"VariableDeclaration","scope":1433,"src":"7824:30:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":1393,"nodeType":"UserDefinedTypeName","pathNode":{"id":1392,"name":"InitializableStorage","nameLocations":["7824:20:2"],"nodeType":"IdentifierPath","referencedDeclaration":1223,"src":"7824:20:2"},"referencedDeclaration":1223,"src":"7824:20:2","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":1397,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1395,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"7857:24:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$1223_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":1396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7857:26:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7824:59:2"},{"condition":{"expression":{"id":1398,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1394,"src":"7898:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1399,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7900:13:2","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":1222,"src":"7898:15:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1404,"nodeType":"IfStatement","src":"7894:76:2","trueBody":{"id":1403,"nodeType":"Block","src":"7915:55:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1400,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1229,"src":"7936:21:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7936:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1402,"nodeType":"RevertStatement","src":"7929:30:2"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":1412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1405,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1394,"src":"7983:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1406,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7985:12:2","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":1219,"src":"7983:14:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":1409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8006:6:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":1408,"name":"uint64","nodeType":"ElementaryTypeName","src":"8006:6:2","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":1407,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8001:4:2","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8001:12:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":1411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8014:3:2","memberName":"max","nodeType":"MemberAccess","src":"8001:16:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"7983:34:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1432,"nodeType":"IfStatement","src":"7979:146:2","trueBody":{"id":1431,"nodeType":"Block","src":"8019:106:2","statements":[{"expression":{"id":1421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1413,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1394,"src":"8033:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1415,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8035:12:2","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":1219,"src":"8033:14:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":1418,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8055:6:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":1417,"name":"uint64","nodeType":"ElementaryTypeName","src":"8055:6:2","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":1416,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8050:4:2","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8050:12:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":1420,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8063:3:2","memberName":"max","nodeType":"MemberAccess","src":"8050:16:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"8033:33:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":1422,"nodeType":"ExpressionStatement","src":"8033:33:2"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":1426,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8102:6:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":1425,"name":"uint64","nodeType":"ElementaryTypeName","src":"8102:6:2","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":1424,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8097:4:2","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8097:12:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8110:3:2","memberName":"max","nodeType":"MemberAccess","src":"8097:16:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":1423,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"8085:11:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":1429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8085:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1430,"nodeType":"EmitStatement","src":"8080:34:2"}]}}]},"documentation":{"id":1389,"nodeType":"StructuredDocumentation","src":"7229:475:2","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."},"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"7718:20:2","parameters":{"id":1390,"nodeType":"ParameterList","parameters":[],"src":"7738:2:2"},"returnParameters":{"id":1391,"nodeType":"ParameterList","parameters":[],"src":"7758:0:2"},"scope":1480,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":1445,"nodeType":"FunctionDefinition","src":"8241:128:2","nodes":[],"body":{"id":1444,"nodeType":"Block","src":"8306:63:2","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1440,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"8323:24:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$1223_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":1441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8323:26:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1442,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8350:12:2","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":1219,"src":"8323:39:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":1439,"id":1443,"nodeType":"Return","src":"8316:46:2"}]},"documentation":{"id":1435,"nodeType":"StructuredDocumentation","src":"8137:99:2","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"8250:22:2","parameters":{"id":1436,"nodeType":"ParameterList","parameters":[],"src":"8272:2:2"},"returnParameters":{"id":1439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1438,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1445,"src":"8298:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1437,"name":"uint64","nodeType":"ElementaryTypeName","src":"8298:6:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8297:8:2"},"scope":1480,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":1456,"nodeType":"FunctionDefinition","src":"8485:120:2","nodes":[],"body":{"id":1455,"nodeType":"Block","src":"8541:64:2","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1451,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"8558:24:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$1223_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":1452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8558:26:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":1453,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8585:13:2","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":1222,"src":"8558:40:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1450,"id":1454,"nodeType":"Return","src":"8551:47:2"}]},"documentation":{"id":1446,"nodeType":"StructuredDocumentation","src":"8375:105:2","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"8494:15:2","parameters":{"id":1447,"nodeType":"ParameterList","parameters":[],"src":"8509:2:2"},"returnParameters":{"id":1450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1449,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1456,"src":"8535:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1448,"name":"bool","nodeType":"ElementaryTypeName","src":"8535:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8534:6:2"},"scope":1480,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":1465,"nodeType":"FunctionDefinition","src":"8819:122:2","nodes":[],"body":{"id":1464,"nodeType":"Block","src":"8896:45:2","nodes":[],"statements":[{"expression":{"id":1462,"name":"INITIALIZABLE_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1226,"src":"8913:21:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1461,"id":1463,"nodeType":"Return","src":"8906:28:2"}]},"documentation":{"id":1457,"nodeType":"StructuredDocumentation","src":"8611:203:2","text":" @dev Pointer to storage slot. Allows integrators to override it with a custom storage location.\n NOTE: Consider following the ERC-7201 formula to derive storage locations."},"implemented":true,"kind":"function","modifiers":[],"name":"_initializableStorageSlot","nameLocation":"8828:25:2","parameters":{"id":1458,"nodeType":"ParameterList","parameters":[],"src":"8853:2:2"},"returnParameters":{"id":1461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1460,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1465,"src":"8887:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1459,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8887:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8886:9:2"},"scope":1480,"stateMutability":"pure","virtual":true,"visibility":"internal"},{"id":1479,"nodeType":"FunctionDefinition","src":"9071:205:2","nodes":[],"body":{"id":1478,"nodeType":"Block","src":"9161:115:2","nodes":[],"statements":[{"assignments":[1473],"declarations":[{"constant":false,"id":1473,"mutability":"mutable","name":"slot","nameLocation":"9179:4:2","nodeType":"VariableDeclaration","scope":1478,"src":"9171:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1472,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9171:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1476,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1474,"name":"_initializableStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1465,"src":"9186:25:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes32_$","typeString":"function () pure returns (bytes32)"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9186:27:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9171:42:2"},{"AST":{"nativeSrc":"9232:38:2","nodeType":"YulBlock","src":"9232:38:2","statements":[{"nativeSrc":"9246:14:2","nodeType":"YulAssignment","src":"9246:14:2","value":{"name":"slot","nativeSrc":"9256:4:2","nodeType":"YulIdentifier","src":"9256:4:2"},"variableNames":[{"name":"$.slot","nativeSrc":"9246:6:2","nodeType":"YulIdentifier","src":"9246:6:2"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":1470,"isOffset":false,"isSlot":true,"src":"9246:6:2","suffix":"slot","valueSize":1},{"declaration":1473,"isOffset":false,"isSlot":false,"src":"9256:4:2","valueSize":1}],"id":1477,"nodeType":"InlineAssembly","src":"9223:47:2"}]},"documentation":{"id":1466,"nodeType":"StructuredDocumentation","src":"8947:67:2","text":" @dev Returns a pointer to the storage namespace."},"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializableStorage","nameLocation":"9080:24:2","parameters":{"id":1467,"nodeType":"ParameterList","parameters":[],"src":"9104:2:2"},"returnParameters":{"id":1471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1470,"mutability":"mutable","name":"$","nameLocation":"9158:1:2","nodeType":"VariableDeclaration","scope":1479,"src":"9129:30:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":1469,"nodeType":"UserDefinedTypeName","pathNode":{"id":1468,"name":"InitializableStorage","nameLocations":["9129:20:2"],"nodeType":"IdentifierPath","referencedDeclaration":1223,"src":"9129:20:2"},"referencedDeclaration":1223,"src":"9129:20:2","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$1223_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"src":"9128:32:2"},"scope":1480,"stateMutability":"pure","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1215,"nodeType":"StructuredDocumentation","src":"139:2209:2","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,"linearizedBaseContracts":[1480],"name":"Initializable","nameLocation":"2367:13:2","scope":1481,"usedErrors":[1229,1232],"usedEvents":[1237]}],"license":"MIT"}},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"id":3,"ast":{"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol","id":1663,"exportedSymbols":{"ERC1967Utils":[2503],"IERC1822Proxiable":[2209],"Initializable":[1480],"UUPSUpgradeable":[1662]},"nodeType":"SourceUnit","src":"115:6458:3","nodes":[{"id":1482,"nodeType":"PragmaDirective","src":"115:24:3","nodes":[],"literals":["solidity","^","0.8",".22"]},{"id":1484,"nodeType":"ImportDirective","src":"141:88:3","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","nameLocation":"-1:-1:-1","scope":1663,"sourceUnit":2210,"symbolAliases":[{"foreign":{"id":1483,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"149:17:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1486,"nodeType":"ImportDirective","src":"230:84:3","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","nameLocation":"-1:-1:-1","scope":1663,"sourceUnit":2504,"symbolAliases":[{"foreign":{"id":1485,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2503,"src":"238:12:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1488,"nodeType":"ImportDirective","src":"315:50:3","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"./Initializable.sol","nameLocation":"-1:-1:-1","scope":1663,"sourceUnit":1481,"symbolAliases":[{"foreign":{"id":1487,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1480,"src":"323:13:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1662,"nodeType":"ContractDefinition","src":"986:5586:3","nodes":[{"id":1500,"nodeType":"VariableDeclaration","src":"1128:48:3","nodes":[],"constant":false,"documentation":{"id":1494,"nodeType":"StructuredDocumentation","src":"1062:61:3","text":"@custom:oz-upgrades-unsafe-allow state-variable-immutable"},"mutability":"immutable","name":"__self","nameLocation":"1154:6:3","scope":1662,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1495,"name":"address","nodeType":"ElementaryTypeName","src":"1128:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":1498,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1171:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$1662","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$1662","typeString":"contract UUPSUpgradeable"}],"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1163:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1496,"name":"address","nodeType":"ElementaryTypeName","src":"1163:7:3","typeDescriptions":{}}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1163:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":1504,"nodeType":"VariableDeclaration","src":"1819:58:3","nodes":[],"constant":true,"documentation":{"id":1501,"nodeType":"StructuredDocumentation","src":"1183:631:3","text":" @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n during an upgrade."},"functionSelector":"ad3cb1cc","mutability":"constant","name":"UPGRADE_INTERFACE_VERSION","nameLocation":"1842:25:3","scope":1662,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1502,"name":"string","nodeType":"ElementaryTypeName","src":"1819:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"352e302e30","id":1503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1870:7:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c","typeString":"literal_string \"5.0.0\""},"value":"5.0.0"},"visibility":"public"},{"id":1507,"nodeType":"ErrorDefinition","src":"1954:36:3","nodes":[],"documentation":{"id":1505,"nodeType":"StructuredDocumentation","src":"1884:65:3","text":" @dev The call is from an unauthorized context."},"errorSelector":"e07c8dba","name":"UUPSUnauthorizedCallContext","nameLocation":"1960:27:3","parameters":{"id":1506,"nodeType":"ParameterList","parameters":[],"src":"1987:2:3"}},{"id":1512,"nodeType":"ErrorDefinition","src":"2069:49:3","nodes":[],"documentation":{"id":1508,"nodeType":"StructuredDocumentation","src":"1996:68:3","text":" @dev The storage `slot` is unsupported as a UUID."},"errorSelector":"aa1d49a4","name":"UUPSUnsupportedProxiableUUID","nameLocation":"2075:28:3","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1510,"mutability":"mutable","name":"slot","nameLocation":"2112:4:3","nodeType":"VariableDeclaration","scope":1512,"src":"2104:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1509,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2104:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2103:14:3"}},{"id":1520,"nodeType":"ModifierDefinition","src":"2624:62:3","nodes":[],"body":{"id":1519,"nodeType":"Block","src":"2645:41:3","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1515,"name":"_checkProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"2655:11:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2655:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1517,"nodeType":"ExpressionStatement","src":"2655:13:3"},{"id":1518,"nodeType":"PlaceholderStatement","src":"2678:1:3"}]},"documentation":{"id":1513,"nodeType":"StructuredDocumentation","src":"2124:495:3","text":" @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC-1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC-1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail."},"name":"onlyProxy","nameLocation":"2633:9:3","parameters":{"id":1514,"nodeType":"ParameterList","parameters":[],"src":"2642:2:3"},"virtual":false,"visibility":"internal"},{"id":1528,"nodeType":"ModifierDefinition","src":"2892:72:3","nodes":[],"body":{"id":1527,"nodeType":"Block","src":"2916:48:3","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1523,"name":"_checkNotDelegated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1610,"src":"2926:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2926:20:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1525,"nodeType":"ExpressionStatement","src":"2926:20:3"},{"id":1526,"nodeType":"PlaceholderStatement","src":"2956:1:3"}]},"documentation":{"id":1521,"nodeType":"StructuredDocumentation","src":"2692:195:3","text":" @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies."},"name":"notDelegated","nameLocation":"2901:12:3","parameters":{"id":1522,"nodeType":"ParameterList","parameters":[],"src":"2913:2:3"},"virtual":false,"visibility":"internal"},{"id":1534,"nodeType":"FunctionDefinition","src":"2970:67:3","nodes":[],"body":{"id":1533,"nodeType":"Block","src":"3030:7:3","nodes":[],"statements":[]},"implemented":true,"kind":"function","modifiers":[{"id":1531,"kind":"modifierInvocation","modifierName":{"id":1530,"name":"onlyInitializing","nameLocations":["3013:16:3"],"nodeType":"IdentifierPath","referencedDeclaration":1375,"src":"3013:16:3"},"nodeType":"ModifierInvocation","src":"3013:16:3"}],"name":"__UUPSUpgradeable_init","nameLocation":"2979:22:3","parameters":{"id":1529,"nodeType":"ParameterList","parameters":[],"src":"3001:2:3"},"returnParameters":{"id":1532,"nodeType":"ParameterList","parameters":[],"src":"3030:0:3"},"scope":1662,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1540,"nodeType":"FunctionDefinition","src":"3043:77:3","nodes":[],"body":{"id":1539,"nodeType":"Block","src":"3113:7:3","nodes":[],"statements":[]},"implemented":true,"kind":"function","modifiers":[{"id":1537,"kind":"modifierInvocation","modifierName":{"id":1536,"name":"onlyInitializing","nameLocations":["3096:16:3"],"nodeType":"IdentifierPath","referencedDeclaration":1375,"src":"3096:16:3"},"nodeType":"ModifierInvocation","src":"3096:16:3"}],"name":"__UUPSUpgradeable_init_unchained","nameLocation":"3052:32:3","parameters":{"id":1535,"nodeType":"ParameterList","parameters":[],"src":"3084:2:3"},"returnParameters":{"id":1538,"nodeType":"ParameterList","parameters":[],"src":"3113:0:3"},"scope":1662,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1552,"nodeType":"FunctionDefinition","src":"3708:134:3","nodes":[],"body":{"id":1551,"nodeType":"Block","src":"3786:56:3","nodes":[],"statements":[{"expression":{"expression":{"id":1548,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2503,"src":"3803:12:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$2503_$","typeString":"type(library ERC1967Utils)"}},"id":1549,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3816:19:3","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":2224,"src":"3803:32:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1547,"id":1550,"nodeType":"Return","src":"3796:39:3"}]},"baseFunctions":[2208],"documentation":{"id":1541,"nodeType":"StructuredDocumentation","src":"3125:578:3","text":" @dev Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"functionSelector":"52d1902d","implemented":true,"kind":"function","modifiers":[{"id":1544,"kind":"modifierInvocation","modifierName":{"id":1543,"name":"notDelegated","nameLocations":["3755:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":1528,"src":"3755:12:3"},"nodeType":"ModifierInvocation","src":"3755:12:3"}],"name":"proxiableUUID","nameLocation":"3717:13:3","parameters":{"id":1542,"nodeType":"ParameterList","parameters":[],"src":"3730:2:3"},"returnParameters":{"id":1547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1546,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1552,"src":"3777:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1545,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3777:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3776:9:3"},"scope":1662,"stateMutability":"view","virtual":true,"visibility":"external"},{"id":1572,"nodeType":"FunctionDefinition","src":"4161:214:3","nodes":[],"body":{"id":1571,"nodeType":"Block","src":"4266:109:3","nodes":[],"statements":[{"expression":{"arguments":[{"id":1563,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1555,"src":"4294:17:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1562,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1616,"src":"4276:17:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4276:36:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1565,"nodeType":"ExpressionStatement","src":"4276:36:3"},{"expression":{"arguments":[{"id":1567,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1555,"src":"4344:17:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1568,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1557,"src":"4363:4:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1566,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1661,"src":"4322:21:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":1569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4322:46:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1570,"nodeType":"ExpressionStatement","src":"4322:46:3"}]},"documentation":{"id":1553,"nodeType":"StructuredDocumentation","src":"3848:308:3","text":" @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"4f1ef286","implemented":true,"kind":"function","modifiers":[{"id":1560,"kind":"modifierInvocation","modifierName":{"id":1559,"name":"onlyProxy","nameLocations":["4256:9:3"],"nodeType":"IdentifierPath","referencedDeclaration":1520,"src":"4256:9:3"},"nodeType":"ModifierInvocation","src":"4256:9:3"}],"name":"upgradeToAndCall","nameLocation":"4170:16:3","parameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1555,"mutability":"mutable","name":"newImplementation","nameLocation":"4195:17:3","nodeType":"VariableDeclaration","scope":1572,"src":"4187:25:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1554,"name":"address","nodeType":"ElementaryTypeName","src":"4187:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1557,"mutability":"mutable","name":"data","nameLocation":"4227:4:3","nodeType":"VariableDeclaration","scope":1572,"src":"4214:17:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1556,"name":"bytes","nodeType":"ElementaryTypeName","src":"4214:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4186:46:3"},"returnParameters":{"id":1561,"nodeType":"ParameterList","parameters":[],"src":"4266:0:3"},"scope":1662,"stateMutability":"payable","virtual":true,"visibility":"public"},{"id":1594,"nodeType":"FunctionDefinition","src":"4578:312:3","nodes":[],"body":{"id":1593,"nodeType":"Block","src":"4623:267:3","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1578,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4658:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$1662","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$1662","typeString":"contract UUPSUpgradeable"}],"id":1577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4650:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"4650:7:3","typeDescriptions":{}}},"id":1579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4650:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1580,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1500,"src":"4667:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4650:23:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1582,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2503,"src":"4728:12:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$2503_$","typeString":"type(library ERC1967Utils)"}},"id":1583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4741:17:3","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":2255,"src":"4728:30:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4728:32:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1585,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1500,"src":"4764:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4728:42:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4650:120:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1592,"nodeType":"IfStatement","src":"4633:251:3","trueBody":{"id":1591,"nodeType":"Block","src":"4823:61:3","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1588,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1507,"src":"4844:27:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4844:29:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1590,"nodeType":"RevertStatement","src":"4837:36:3"}]}}]},"documentation":{"id":1573,"nodeType":"StructuredDocumentation","src":"4381:192:3","text":" @dev Reverts if the execution is not performed via delegatecall or the execution\n context is not of a proxy with an ERC-1967 compliant implementation pointing to self."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkProxy","nameLocation":"4587:11:3","parameters":{"id":1574,"nodeType":"ParameterList","parameters":[],"src":"4598:2:3"},"returnParameters":{"id":1575,"nodeType":"ParameterList","parameters":[],"src":"4623:0:3"},"scope":1662,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1610,"nodeType":"FunctionDefinition","src":"5007:213:3","nodes":[],"body":{"id":1609,"nodeType":"Block","src":"5059:161:3","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1600,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5081:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$1662","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$1662","typeString":"contract UUPSUpgradeable"}],"id":1599,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5073:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1598,"name":"address","nodeType":"ElementaryTypeName","src":"5073:7:3","typeDescriptions":{}}},"id":1601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5073:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1602,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1500,"src":"5090:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5073:23:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1608,"nodeType":"IfStatement","src":"5069:145:3","trueBody":{"id":1607,"nodeType":"Block","src":"5098:116:3","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1604,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1507,"src":"5174:27:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5174:29:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1606,"nodeType":"RevertStatement","src":"5167:36:3"}]}}]},"documentation":{"id":1595,"nodeType":"StructuredDocumentation","src":"4896:106:3","text":" @dev Reverts if the execution is performed via delegatecall.\n See {notDelegated}."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkNotDelegated","nameLocation":"5016:18:3","parameters":{"id":1596,"nodeType":"ParameterList","parameters":[],"src":"5034:2:3"},"returnParameters":{"id":1597,"nodeType":"ParameterList","parameters":[],"src":"5059:0:3"},"scope":1662,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1616,"nodeType":"FunctionDefinition","src":"5603:71:3","nodes":[],"documentation":{"id":1611,"nodeType":"StructuredDocumentation","src":"5226:372:3","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal onlyOwner {}\n ```"},"implemented":false,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"5612:17:3","parameters":{"id":1614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1613,"mutability":"mutable","name":"newImplementation","nameLocation":"5638:17:3","nodeType":"VariableDeclaration","scope":1616,"src":"5630:25:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1612,"name":"address","nodeType":"ElementaryTypeName","src":"5630:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5629:27:3"},"returnParameters":{"id":1615,"nodeType":"ParameterList","parameters":[],"src":"5673:0:3"},"scope":1662,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":1661,"nodeType":"FunctionDefinition","src":"6032:538:3","nodes":[],"body":{"id":1660,"nodeType":"Block","src":"6117:453:3","nodes":[],"statements":[{"clauses":[{"block":{"id":1649,"nodeType":"Block","src":"6207:212:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1632,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"6225:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":1633,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2503,"src":"6233:12:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$2503_$","typeString":"type(library ERC1967Utils)"}},"id":1634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6246:19:3","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":2224,"src":"6233:32:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6225:40:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1641,"nodeType":"IfStatement","src":"6221:120:3","trueBody":{"id":1640,"nodeType":"Block","src":"6267:74:3","statements":[{"errorCall":{"arguments":[{"id":1637,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"6321:4:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1636,"name":"UUPSUnsupportedProxiableUUID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1512,"src":"6292:28:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":1638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6292:34:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1639,"nodeType":"RevertStatement","src":"6285:41:3"}]}},{"expression":{"arguments":[{"id":1645,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1619,"src":"6384:17:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1646,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1621,"src":"6403:4:3","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":1642,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2503,"src":"6354:12:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$2503_$","typeString":"type(library ERC1967Utils)"}},"id":1644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6367:16:3","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":2318,"src":"6354:29:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":1647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6354:54:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1648,"nodeType":"ExpressionStatement","src":"6354:54:3"}]},"errorName":"","id":1650,"nodeType":"TryCatchClause","parameters":{"id":1631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1630,"mutability":"mutable","name":"slot","nameLocation":"6201:4:3","nodeType":"VariableDeclaration","scope":1650,"src":"6193:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1629,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6193:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6192:14:3"},"src":"6184:235:3"},{"block":{"id":1657,"nodeType":"Block","src":"6426:138:3","statements":[{"errorCall":{"arguments":[{"id":1654,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1619,"src":"6535:17:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1651,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2503,"src":"6493:12:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$2503_$","typeString":"type(library ERC1967Utils)"}},"id":1653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6506:28:3","memberName":"ERC1967InvalidImplementation","nodeType":"MemberAccess","referencedDeclaration":2229,"src":"6493:41:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6493:60:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1656,"nodeType":"RevertStatement","src":"6486:67:3"}]},"errorName":"","id":1658,"nodeType":"TryCatchClause","src":"6420:144:3"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1625,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1619,"src":"6149:17:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1624,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2209,"src":"6131:17:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$2209_$","typeString":"type(contract IERC1822Proxiable)"}},"id":1626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6131:36:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$2209","typeString":"contract IERC1822Proxiable"}},"id":1627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6168:13:3","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":2208,"src":"6131:50:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":1628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6131:52:3","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1659,"nodeType":"TryStatement","src":"6127:437:3"}]},"documentation":{"id":1617,"nodeType":"StructuredDocumentation","src":"5680:347:3","text":" @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n is expected to be the implementation slot in ERC-1967.\n Emits an {IERC1967-Upgraded} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"6041:21:3","parameters":{"id":1622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1619,"mutability":"mutable","name":"newImplementation","nameLocation":"6071:17:3","nodeType":"VariableDeclaration","scope":1661,"src":"6063:25:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1618,"name":"address","nodeType":"ElementaryTypeName","src":"6063:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1621,"mutability":"mutable","name":"data","nameLocation":"6103:4:3","nodeType":"VariableDeclaration","scope":1661,"src":"6090:17:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1620,"name":"bytes","nodeType":"ElementaryTypeName","src":"6090:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6062:46:3"},"returnParameters":{"id":1623,"nodeType":"ParameterList","parameters":[],"src":"6117:0:3"},"scope":1662,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":1490,"name":"Initializable","nameLocations":["1023:13:3"],"nodeType":"IdentifierPath","referencedDeclaration":1480,"src":"1023:13:3"},"id":1491,"nodeType":"InheritanceSpecifier","src":"1023:13:3"},{"baseName":{"id":1492,"name":"IERC1822Proxiable","nameLocations":["1038:17:3"],"nodeType":"IdentifierPath","referencedDeclaration":2209,"src":"1038:17:3"},"id":1493,"nodeType":"InheritanceSpecifier","src":"1038:17:3"}],"canonicalName":"UUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1489,"nodeType":"StructuredDocumentation","src":"367:618:3","text":" @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism."},"fullyImplemented":false,"linearizedBaseContracts":[1662,2209,1480],"name":"UUPSUpgradeable","nameLocation":"1004:15:3","scope":1663,"usedErrors":[1229,1232,1507,1512,2229,2242,3065,3358],"usedEvents":[1237,2172]}],"license":"MIT"}},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"id":4,"ast":{"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol","id":1709,"exportedSymbols":{"ContextUpgradeable":[1708],"Initializable":[1480]},"nodeType":"SourceUnit","src":"101:1093:4","nodes":[{"id":1664,"nodeType":"PragmaDirective","src":"101:24:4","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1666,"nodeType":"ImportDirective","src":"126:63:4","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":1709,"sourceUnit":1481,"symbolAliases":[{"foreign":{"id":1665,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1480,"src":"134:13:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1708,"nodeType":"ContractDefinition","src":"688:505:4","nodes":[{"id":1675,"nodeType":"FunctionDefinition","src":"748:59:4","nodes":[],"body":{"id":1674,"nodeType":"Block","src":"800:7:4","nodes":[],"statements":[]},"implemented":true,"kind":"function","modifiers":[{"id":1672,"kind":"modifierInvocation","modifierName":{"id":1671,"name":"onlyInitializing","nameLocations":["783:16:4"],"nodeType":"IdentifierPath","referencedDeclaration":1375,"src":"783:16:4"},"nodeType":"ModifierInvocation","src":"783:16:4"}],"name":"__Context_init","nameLocation":"757:14:4","parameters":{"id":1670,"nodeType":"ParameterList","parameters":[],"src":"771:2:4"},"returnParameters":{"id":1673,"nodeType":"ParameterList","parameters":[],"src":"800:0:4"},"scope":1708,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1681,"nodeType":"FunctionDefinition","src":"813:69:4","nodes":[],"body":{"id":1680,"nodeType":"Block","src":"875:7:4","nodes":[],"statements":[]},"implemented":true,"kind":"function","modifiers":[{"id":1678,"kind":"modifierInvocation","modifierName":{"id":1677,"name":"onlyInitializing","nameLocations":["858:16:4"],"nodeType":"IdentifierPath","referencedDeclaration":1375,"src":"858:16:4"},"nodeType":"ModifierInvocation","src":"858:16:4"}],"name":"__Context_init_unchained","nameLocation":"822:24:4","parameters":{"id":1676,"nodeType":"ParameterList","parameters":[],"src":"846:2:4"},"returnParameters":{"id":1679,"nodeType":"ParameterList","parameters":[],"src":"875:0:4"},"scope":1708,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1690,"nodeType":"FunctionDefinition","src":"887:96:4","nodes":[],"body":{"id":1689,"nodeType":"Block","src":"949:34:4","nodes":[],"statements":[{"expression":{"expression":{"id":1686,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"966:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"970:6:4","memberName":"sender","nodeType":"MemberAccess","src":"966:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1685,"id":1688,"nodeType":"Return","src":"959:17:4"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"896:10:4","parameters":{"id":1682,"nodeType":"ParameterList","parameters":[],"src":"906:2:4"},"returnParameters":{"id":1685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1684,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1690,"src":"940:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1683,"name":"address","nodeType":"ElementaryTypeName","src":"940:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"939:9:4"},"scope":1708,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1699,"nodeType":"FunctionDefinition","src":"989:99:4","nodes":[],"body":{"id":1698,"nodeType":"Block","src":"1056:32:4","nodes":[],"statements":[{"expression":{"expression":{"id":1695,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1073:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1077:4:4","memberName":"data","nodeType":"MemberAccess","src":"1073:8:4","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1694,"id":1697,"nodeType":"Return","src":"1066:15:4"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"998:8:4","parameters":{"id":1691,"nodeType":"ParameterList","parameters":[],"src":"1006:2:4"},"returnParameters":{"id":1694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1699,"src":"1040:14:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1692,"name":"bytes","nodeType":"ElementaryTypeName","src":"1040:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1039:16:4"},"scope":1708,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":1707,"nodeType":"FunctionDefinition","src":"1094:97:4","nodes":[],"body":{"id":1706,"nodeType":"Block","src":"1166:25:4","nodes":[],"statements":[{"expression":{"hexValue":"30","id":1704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1183:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1703,"id":1705,"nodeType":"Return","src":"1176:8:4"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"1103:20:4","parameters":{"id":1700,"nodeType":"ParameterList","parameters":[],"src":"1123:2:4"},"returnParameters":{"id":1703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1702,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1707,"src":"1157:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1701,"name":"uint256","nodeType":"ElementaryTypeName","src":"1157:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1156:9:4"},"scope":1708,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":1668,"name":"Initializable","nameLocations":["728:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":1480,"src":"728:13:4"},"id":1669,"nodeType":"InheritanceSpecifier","src":"728:13:4"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1667,"nodeType":"StructuredDocumentation","src":"191:496:4","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,"linearizedBaseContracts":[1708,1480],"name":"ContextUpgradeable","nameLocation":"706:18:4","scope":1709,"usedErrors":[1229,1232],"usedEvents":[1237]}],"license":"MIT"}},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"id":5,"ast":{"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol","id":1749,"exportedSymbols":{"ERC165Upgradeable":[1748],"IERC165":[3774],"Initializable":[1480]},"nodeType":"SourceUnit","src":"114:1037:5","nodes":[{"id":1710,"nodeType":"PragmaDirective","src":"114:24:5","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":1712,"nodeType":"ImportDirective","src":"140:80:5","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","nameLocation":"-1:-1:-1","scope":1749,"sourceUnit":3775,"symbolAliases":[{"foreign":{"id":1711,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3774,"src":"148:7:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1714,"nodeType":"ImportDirective","src":"221:66:5","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":1749,"sourceUnit":1481,"symbolAliases":[{"foreign":{"id":1713,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1480,"src":"229:13:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1748,"nodeType":"ContractDefinition","src":"769:381:5","nodes":[{"id":1725,"nodeType":"FunctionDefinition","src":"837:58:5","nodes":[],"body":{"id":1724,"nodeType":"Block","src":"888:7:5","nodes":[],"statements":[]},"implemented":true,"kind":"function","modifiers":[{"id":1722,"kind":"modifierInvocation","modifierName":{"id":1721,"name":"onlyInitializing","nameLocations":["871:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":1375,"src":"871:16:5"},"nodeType":"ModifierInvocation","src":"871:16:5"}],"name":"__ERC165_init","nameLocation":"846:13:5","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[],"src":"859:2:5"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[],"src":"888:0:5"},"scope":1748,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1731,"nodeType":"FunctionDefinition","src":"901:68:5","nodes":[],"body":{"id":1730,"nodeType":"Block","src":"962:7:5","nodes":[],"statements":[]},"implemented":true,"kind":"function","modifiers":[{"id":1728,"kind":"modifierInvocation","modifierName":{"id":1727,"name":"onlyInitializing","nameLocations":["945:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":1375,"src":"945:16:5"},"nodeType":"ModifierInvocation","src":"945:16:5"}],"name":"__ERC165_init_unchained","nameLocation":"910:23:5","parameters":{"id":1726,"nodeType":"ParameterList","parameters":[],"src":"933:2:5"},"returnParameters":{"id":1729,"nodeType":"ParameterList","parameters":[],"src":"962:0:5"},"scope":1748,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1747,"nodeType":"FunctionDefinition","src":"1002:146:5","nodes":[],"body":{"id":1746,"nodeType":"Block","src":"1084:64:5","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1739,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1734,"src":"1101:11:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1741,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3774,"src":"1121:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$3774_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$3774_$","typeString":"type(contract IERC165)"}],"id":1740,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1116:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1116:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$3774","typeString":"type(contract IERC165)"}},"id":1743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1130:11:5","memberName":"interfaceId","nodeType":"MemberAccess","src":"1116:25:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1101:40:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1738,"id":1745,"nodeType":"Return","src":"1094:47:5"}]},"baseFunctions":[3773],"documentation":{"id":1732,"nodeType":"StructuredDocumentation","src":"974:23:5","text":"@inheritdoc IERC165"},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1011:17:5","parameters":{"id":1735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1734,"mutability":"mutable","name":"interfaceId","nameLocation":"1036:11:5","nodeType":"VariableDeclaration","scope":1747,"src":"1029:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1733,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1029:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1028:20:5"},"returnParameters":{"id":1738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1737,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1747,"src":"1078:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1736,"name":"bool","nodeType":"ElementaryTypeName","src":"1078:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1077:6:5"},"scope":1748,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":1716,"name":"Initializable","nameLocations":["808:13:5"],"nodeType":"IdentifierPath","referencedDeclaration":1480,"src":"808:13:5"},"id":1717,"nodeType":"InheritanceSpecifier","src":"808:13:5"},{"baseName":{"id":1718,"name":"IERC165","nameLocations":["823:7:5"],"nodeType":"IdentifierPath","referencedDeclaration":3774,"src":"823:7:5"},"id":1719,"nodeType":"InheritanceSpecifier","src":"823:7:5"}],"canonicalName":"ERC165Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1715,"nodeType":"StructuredDocumentation","src":"289:479:5","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"linearizedBaseContracts":[1748,3774,1480],"name":"ERC165Upgradeable","nameLocation":"787:17:5","scope":1749,"usedErrors":[1229,1232],"usedEvents":[1237]}],"license":"MIT"}},"lib/protocol/packages/core/contracts/common/implementation/AncillaryData.sol":{"id":29,"ast":{"absolutePath":"lib/protocol/packages/core/contracts/common/implementation/AncillaryData.sol","id":7569,"exportedSymbols":{"AncillaryData":[7568]},"nodeType":"SourceUnit","src":"42:7184:29","nodes":[{"id":7162,"nodeType":"PragmaDirective","src":"42:23:29","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":7568,"nodeType":"ContractDefinition","src":"663:6562:29","nodes":[{"id":7303,"nodeType":"FunctionDefinition","src":"897:1306:29","nodes":[],"body":{"id":7302,"nodeType":"Block","src":"974:1229:29","nodes":[],"statements":[{"id":7301,"nodeType":"UncheckedBlock","src":"984:1213:29","statements":[{"assignments":[7171],"declarations":[{"constant":false,"id":7171,"mutability":"mutable","name":"x","nameLocation":"1016:1:29","nodeType":"VariableDeclaration","scope":7301,"src":"1008:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7170,"name":"uint256","nodeType":"ElementaryTypeName","src":"1008:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7176,"initialValue":{"arguments":[{"id":7174,"name":"bytesIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7165,"src":"1028:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1020:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7172,"name":"uint256","nodeType":"ElementaryTypeName","src":"1020:7:29","typeDescriptions":{}}},"id":7175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1020:16:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1008:28:29"},{"expression":{"id":7181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7177,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1084:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7178,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1088:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030303030303030303030303030303030303030303030303030303030306666666666666666666666666666666666666666666666666666666666666666","id":7179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1092:66:29","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff"},"src":"1088:70:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1084:74:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7182,"nodeType":"ExpressionStatement","src":"1084:74:29"},{"expression":{"id":7195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7183,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1172:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7184,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1177:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7185,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1182:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":7188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":7186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1186:1:29","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":7187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1189:2:29","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"1186:5:29","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}},"src":"1182:9:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7190,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1181:11:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1177:15:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7192,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1176:17:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030303030303030303030303030666666666666666666666666666666663030303030303030303030303030303066666666666666666666666666666666","id":7193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1196:66:29","typeDescriptions":{"typeIdentifier":"t_rational_6277101735386680763495507056286727952657427581105975853055_by_1","typeString":"int_const 6277...(50 digits omitted)...3055"},"value":"0x0000000000000000ffffffffffffffff0000000000000000ffffffffffffffff"},"src":"1176:86:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1172:90:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7196,"nodeType":"ExpressionStatement","src":"1172:90:29"},{"expression":{"id":7209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7197,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1276:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7198,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1281:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7199,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1286:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":7202,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":7200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1290:1:29","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":7201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1293:2:29","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"1290:5:29","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"1286:9:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7204,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1285:11:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1281:15:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7206,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1280:17:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030303030306666666666666666303030303030303066666666666666663030303030303030666666666666666630303030303030306666666666666666","id":7207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1300:66:29","typeDescriptions":{"typeIdentifier":"t_rational_26959946660873538060741835960174461801791452538186943042387869433855_by_1","typeString":"int_const 2695...(60 digits omitted)...3855"},"value":"0x00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff"},"src":"1280:86:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1276:90:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7210,"nodeType":"ExpressionStatement","src":"1276:90:29"},{"expression":{"id":7223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7211,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1380:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7212,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1385:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7213,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1390:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"id":7216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":7214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1394:1:29","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":7215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1397:2:29","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"1394:5:29","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}},"src":"1390:9:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7218,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1389:11:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1385:15:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7220,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1384:17:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030666666663030303066666666303030306666666630303030666666663030303066666666303030306666666630303030666666663030303066666666","id":7221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1404:66:29","typeDescriptions":{"typeIdentifier":"t_rational_1766820105243087041267848467410591083712559083657179364930612997358944255_by_1","typeString":"int_const 1766...(65 digits omitted)...4255"},"value":"0x0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff"},"src":"1384:86:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1380:90:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7224,"nodeType":"ExpressionStatement","src":"1380:90:29"},{"expression":{"id":7237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7225,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1484:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7226,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1489:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7227,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1494:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":7230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":7228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1498:1:29","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":7229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1501:1:29","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1498:4:29","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"src":"1494:8:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7232,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1493:10:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1489:14:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7234,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1488:16:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830306666303066663030666630306666303066663030666630306666303066663030666630306666303066663030666630306666303066663030666630306666","id":7235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1507:66:29","typeDescriptions":{"typeIdentifier":"t_rational_450552876409790643671482431940419874915447411150352389258589821042463539455_by_1","typeString":"int_const 4505...(67 digits omitted)...9455"},"value":"0x00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff"},"src":"1488:85:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1484:89:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7238,"nodeType":"ExpressionStatement","src":"1484:89:29"},{"expression":{"id":7251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7239,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1587:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7240,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1592:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7241,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1597:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"id":7244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":7242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1601:1:29","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":7243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1604:1:29","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1601:4:29","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}},"src":"1597:8:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7246,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1596:10:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1592:14:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7248,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1591:16:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830663066306630663066306630663066306630663066306630663066306630663066306630663066306630663066306630663066306630663066306630663066","id":7249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1610:66:29","typeDescriptions":{"typeIdentifier":"t_rational_6811299366900952671974763824040465167839410862684739061144563765171360567055_by_1","typeString":"int_const 6811...(68 digits omitted)...7055"},"value":"0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"},"src":"1591:85:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1587:89:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7252,"nodeType":"ExpressionStatement","src":"1587:89:29"},{"assignments":[7254],"declarations":[{"constant":false,"id":7254,"mutability":"mutable","name":"h","nameLocation":"1725:1:29","nodeType":"VariableDeclaration","scope":7301,"src":"1717:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7253,"name":"uint256","nodeType":"ElementaryTypeName","src":"1717:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7261,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7255,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1730:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830383038303830383038303830383038303830383038303830383038303830383038303830383038303830383038303830383038303830383038303830383038","id":7256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1734:66:29","typeDescriptions":{"typeIdentifier":"t_rational_3632692995680508091719874039488248089514352460098527499277100674758058969096_by_1","typeString":"int_const 3632...(68 digits omitted)...9096"},"value":"0x0808080808080808080808080808080808080808080808080808080808080808"},"src":"1730:70:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7258,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1729:72:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"38","id":7259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1804:1:29","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1729:76:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1717:88:29"},{"assignments":[7263],"declarations":[{"constant":false,"id":7263,"mutability":"mutable","name":"i","nameLocation":"1827:1:29","nodeType":"VariableDeclaration","scope":7301,"src":"1819:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7262,"name":"uint256","nodeType":"ElementaryTypeName","src":"1819:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7270,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7264,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1832:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830343034303430343034303430343034303430343034303430343034303430343034303430343034303430343034303430343034303430343034303430343034","id":7265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1836:66:29","typeDescriptions":{"typeIdentifier":"t_rational_1816346497840254045859937019744124044757176230049263749638550337379029484548_by_1","typeString":"int_const 1816...(68 digits omitted)...4548"},"value":"0x0404040404040404040404040404040404040404040404040404040404040404"},"src":"1832:70:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7267,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1831:72:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"34","id":7268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1906:1:29","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1831:76:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1819:88:29"},{"assignments":[7272],"declarations":[{"constant":false,"id":7272,"mutability":"mutable","name":"j","nameLocation":"1929:1:29","nodeType":"VariableDeclaration","scope":7301,"src":"1921:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7271,"name":"uint256","nodeType":"ElementaryTypeName","src":"1921:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7279,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7273,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"1934:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032","id":7274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1938:66:29","typeDescriptions":{"typeIdentifier":"t_rational_908173248920127022929968509872062022378588115024631874819275168689514742274_by_1","typeString":"int_const 9081...(67 digits omitted)...2274"},"value":"0x0202020202020202020202020202020202020202020202020202020202020202"},"src":"1934:70:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7276,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1933:72:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":7277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2008:1:29","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1933:76:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1921:88:29"},{"expression":{"id":7294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7280,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"2023:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7281,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"2027:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7282,"name":"h","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7254,"src":"2032:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7283,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7263,"src":"2037:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"id":7284,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7272,"src":"2041:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2037:5:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7286,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2036:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2032:11:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7288,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2031:13:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"30783237","id":7289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2047:4:29","typeDescriptions":{"typeIdentifier":"t_rational_39_by_1","typeString":"int_const 39"},"value":"0x27"},"src":"2031:20:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2027:24:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"307833303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330","id":7292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2054:66:29","typeDescriptions":{"typeIdentifier":"t_rational_21796157974083048550319244236929488537086114760591164995662604048548353814576_by_1","typeString":"int_const 2179...(69 digits omitted)...4576"},"value":"0x3030303030303030303030303030303030303030303030303030303030303030"},"src":"2027:93:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2023:97:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7295,"nodeType":"ExpressionStatement","src":"2023:97:29"},{"expression":{"arguments":[{"id":7298,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7171,"src":"2184:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7297,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2176:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7296,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2176:7:29","typeDescriptions":{}}},"id":7299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2176:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7169,"id":7300,"nodeType":"Return","src":"2169:17:29"}]}]},"implemented":true,"kind":"function","modifiers":[],"name":"toUtf8Bytes32Bottom","nameLocation":"906:19:29","parameters":{"id":7166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7165,"mutability":"mutable","name":"bytesIn","nameLocation":"934:7:29","nodeType":"VariableDeclaration","scope":7303,"src":"926:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7164,"name":"bytes32","nodeType":"ElementaryTypeName","src":"926:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"925:17:29"},"returnParameters":{"id":7169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7168,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7303,"src":"965:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7167,"name":"bytes32","nodeType":"ElementaryTypeName","src":"965:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"964:9:29"},"scope":7568,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":7324,"nodeType":"FunctionDefinition","src":"2586:182:29","nodes":[],"body":{"id":7323,"nodeType":"Block","src":"2661:107:29","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":7316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7314,"name":"bytesIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7306,"src":"2715:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2726:3:29","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"2715:14:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7313,"name":"toUtf8Bytes32Bottom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7303,"src":"2695:19:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":7317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2695:35:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":7319,"name":"bytesIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7306,"src":"2752:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7318,"name":"toUtf8Bytes32Bottom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7303,"src":"2732:19:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":7320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2732:28:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7311,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2678:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7312,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2682:12:29","memberName":"encodePacked","nodeType":"MemberAccess","src":"2678:16:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2678:83:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":7310,"id":7322,"nodeType":"Return","src":"2671:90:29"}]},"documentation":{"id":7304,"nodeType":"StructuredDocumentation","src":"2209:372:29","text":" @notice Returns utf8-encoded bytes32 string that can be read via web3.utils.hexToUtf8.\n @dev Will return bytes32 in all lower case hex characters and without the leading 0x.\n This has minor changes from the toUtf8BytesAddress to control for the size of the input.\n @param bytesIn bytes32 to encode.\n @return utf8 encoded bytes32."},"implemented":true,"kind":"function","modifiers":[],"name":"toUtf8Bytes","nameLocation":"2595:11:29","parameters":{"id":7307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7306,"mutability":"mutable","name":"bytesIn","nameLocation":"2615:7:29","nodeType":"VariableDeclaration","scope":7324,"src":"2607:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7305,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2607:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2606:17:29"},"returnParameters":{"id":7310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7309,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7324,"src":"2647:12:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7308,"name":"bytes","nodeType":"ElementaryTypeName","src":"2647:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2646:14:29"},"scope":7568,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":7357,"nodeType":"FunctionDefinition","src":"3145:218:29","nodes":[],"body":{"id":7356,"nodeType":"Block","src":"3221:142:29","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":7343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":7339,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7327,"src":"3303:1:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7338,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3295:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes20_$","typeString":"type(bytes20)"},"typeName":{"id":7337,"name":"bytes20","nodeType":"ElementaryTypeName","src":"3295:7:29","typeDescriptions":{}}},"id":7340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3295:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"id":7336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3287:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7335,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3287:7:29","typeDescriptions":{}}},"id":7341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3287:19:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":7342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3310:3:29","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3287:26:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7334,"name":"toUtf8Bytes32Bottom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7303,"src":"3267:19:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":7344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3267:47:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"arguments":[{"id":7350,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7327,"src":"3351:1:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3343:7:29","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes20_$","typeString":"type(bytes20)"},"typeName":{"id":7348,"name":"bytes20","nodeType":"ElementaryTypeName","src":"3343:7:29","typeDescriptions":{}}},"id":7351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3343:10:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"id":7347,"name":"toUtf8Bytes32Bottom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7303,"src":"3323:19:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":7352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3323:31:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3316:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes8_$","typeString":"type(bytes8)"},"typeName":{"id":7345,"name":"bytes8","nodeType":"ElementaryTypeName","src":"3316:6:29","typeDescriptions":{}}},"id":7353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3316:39:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes8","typeString":"bytes8"}],"expression":{"id":7332,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3250:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3254:12:29","memberName":"encodePacked","nodeType":"MemberAccess","src":"3250:16:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3250:106:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":7331,"id":7355,"nodeType":"Return","src":"3231:125:29"}]},"documentation":{"id":7325,"nodeType":"StructuredDocumentation","src":"2774:366:29","text":" @notice Returns utf8-encoded address that can be read via web3.utils.hexToUtf8.\n Source: https://ethereum.stackexchange.com/questions/8346/convert-address-to-string/8447#8447\n @dev Will return address in all lower case characters and without the leading 0x.\n @param x address to encode.\n @return utf8 encoded address bytes."},"implemented":true,"kind":"function","modifiers":[],"name":"toUtf8BytesAddress","nameLocation":"3154:18:29","parameters":{"id":7328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7327,"mutability":"mutable","name":"x","nameLocation":"3181:1:29","nodeType":"VariableDeclaration","scope":7357,"src":"3173:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7326,"name":"address","nodeType":"ElementaryTypeName","src":"3173:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3172:11:29"},"returnParameters":{"id":7331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7330,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7357,"src":"3207:12:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7329,"name":"bytes","nodeType":"ElementaryTypeName","src":"3207:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3206:14:29"},"scope":7568,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":7450,"nodeType":"FunctionDefinition","src":"3569:546:29","nodes":[],"body":{"id":7449,"nodeType":"Block","src":"3642:473:29","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7365,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7360,"src":"3656:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3661:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3656:6:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7371,"nodeType":"IfStatement","src":"3652:47:29","trueBody":{"id":7370,"nodeType":"Block","src":"3664:35:29","statements":[{"expression":{"hexValue":"30","id":7368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3685:3:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"functionReturnParameters":7364,"id":7369,"nodeType":"Return","src":"3678:10:29"}]}},{"assignments":[7373],"declarations":[{"constant":false,"id":7373,"mutability":"mutable","name":"j","nameLocation":"3716:1:29","nodeType":"VariableDeclaration","scope":7449,"src":"3708:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7372,"name":"uint256","nodeType":"ElementaryTypeName","src":"3708:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7375,"initialValue":{"id":7374,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7360,"src":"3720:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3708:13:29"},{"assignments":[7377],"declarations":[{"constant":false,"id":7377,"mutability":"mutable","name":"len","nameLocation":"3739:3:29","nodeType":"VariableDeclaration","scope":7449,"src":"3731:11:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7376,"name":"uint256","nodeType":"ElementaryTypeName","src":"3731:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7378,"nodeType":"VariableDeclarationStatement","src":"3731:11:29"},{"body":{"id":7389,"nodeType":"Block","src":"3767:51:29","statements":[{"expression":{"id":7383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3781:5:29","subExpression":{"id":7382,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7377,"src":"3781:3:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7384,"nodeType":"ExpressionStatement","src":"3781:5:29"},{"expression":{"id":7387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7385,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7373,"src":"3800:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":7386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3805:2:29","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"3800:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7388,"nodeType":"ExpressionStatement","src":"3800:7:29"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7379,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7373,"src":"3759:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3764:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3759:6:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7390,"nodeType":"WhileStatement","src":"3752:66:29"},{"assignments":[7392],"declarations":[{"constant":false,"id":7392,"mutability":"mutable","name":"bstr","nameLocation":"3840:4:29","nodeType":"VariableDeclaration","scope":7449,"src":"3827:17:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7391,"name":"bytes","nodeType":"ElementaryTypeName","src":"3827:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7397,"initialValue":{"arguments":[{"id":7395,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7377,"src":"3857:3:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3847:9:29","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":7393,"name":"bytes","nodeType":"ElementaryTypeName","src":"3851:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":7396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3847:14:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3827:34:29"},{"assignments":[7399],"declarations":[{"constant":false,"id":7399,"mutability":"mutable","name":"k","nameLocation":"3879:1:29","nodeType":"VariableDeclaration","scope":7449,"src":"3871:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7398,"name":"uint256","nodeType":"ElementaryTypeName","src":"3871:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7401,"initialValue":{"id":7400,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7377,"src":"3883:3:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3871:15:29"},{"body":{"id":7445,"nodeType":"Block","src":"3911:177:29","statements":[{"expression":{"id":7409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7405,"name":"k","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7399,"src":"3925:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7406,"name":"k","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7399,"src":"3929:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3933:1:29","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3929:5:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3925:9:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7410,"nodeType":"ExpressionStatement","src":"3925:9:29"},{"assignments":[7412],"declarations":[{"constant":false,"id":7412,"mutability":"mutable","name":"temp","nameLocation":"3954:4:29","nodeType":"VariableDeclaration","scope":7445,"src":"3948:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7411,"name":"uint8","nodeType":"ElementaryTypeName","src":"3948:5:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":7427,"initialValue":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3438","id":7413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3962:2:29","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7416,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7360,"src":"3973:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7417,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7360,"src":"3978:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130","id":7418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3982:2:29","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"3978:6:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7420,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3977:8:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":7421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3988:2:29","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"3977:13:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3973:17:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3967:5:29","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":7414,"name":"uint8","nodeType":"ElementaryTypeName","src":"3967:5:29","typeDescriptions":{}}},"id":7424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3967:24:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3962:29:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":7426,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3961:31:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"3948:44:29"},{"assignments":[7429],"declarations":[{"constant":false,"id":7429,"mutability":"mutable","name":"b1","nameLocation":"4013:2:29","nodeType":"VariableDeclaration","scope":7445,"src":"4006:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":7428,"name":"bytes1","nodeType":"ElementaryTypeName","src":"4006:6:29","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"id":7434,"initialValue":{"arguments":[{"id":7432,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7412,"src":"4025:4:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":7431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4018:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":7430,"name":"bytes1","nodeType":"ElementaryTypeName","src":"4018:6:29","typeDescriptions":{}}},"id":7433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4018:12:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"VariableDeclarationStatement","src":"4006:24:29"},{"expression":{"id":7439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7435,"name":"bstr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7392,"src":"4044:4:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7437,"indexExpression":{"id":7436,"name":"k","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7399,"src":"4049:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4044:7:29","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7438,"name":"b1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7429,"src":"4054:2:29","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"4044:12:29","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":7440,"nodeType":"ExpressionStatement","src":"4044:12:29"},{"expression":{"id":7443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7441,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7360,"src":"4070:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":7442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4075:2:29","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"4070:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7444,"nodeType":"ExpressionStatement","src":"4070:7:29"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7402,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7360,"src":"3903:1:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3908:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3903:6:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7446,"nodeType":"WhileStatement","src":"3896:192:29"},{"expression":{"id":7447,"name":"bstr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7392,"src":"4104:4:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":7364,"id":7448,"nodeType":"Return","src":"4097:11:29"}]},"documentation":{"id":7358,"nodeType":"StructuredDocumentation","src":"3369:195:29","text":" @notice Converts a uint into a base-10, UTF-8 representation stored in a `string` type.\n @dev This method is based off of this code: https://stackoverflow.com/a/65707309."},"implemented":true,"kind":"function","modifiers":[],"name":"toUtf8BytesUint","nameLocation":"3578:15:29","parameters":{"id":7361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7360,"mutability":"mutable","name":"x","nameLocation":"3602:1:29","nodeType":"VariableDeclaration","scope":7450,"src":"3594:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7359,"name":"uint256","nodeType":"ElementaryTypeName","src":"3594:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3593:11:29"},"returnParameters":{"id":7364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7363,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7450,"src":"3628:12:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7362,"name":"bytes","nodeType":"ElementaryTypeName","src":"3628:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3627:14:29"},"scope":7568,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":7478,"nodeType":"FunctionDefinition","src":"4121:330:29","nodes":[],"body":{"id":7477,"nodeType":"Block","src":"4287:164:29","nodes":[],"statements":[{"assignments":[7462],"declarations":[{"constant":false,"id":7462,"mutability":"mutable","name":"prefix","nameLocation":"4310:6:29","nodeType":"VariableDeclaration","scope":7477,"src":"4297:19:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7461,"name":"bytes","nodeType":"ElementaryTypeName","src":"4297:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7467,"initialValue":{"arguments":[{"id":7464,"name":"currentAncillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"4335:20:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7465,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7454,"src":"4357:3:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7463,"name":"constructPrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"4319:15:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,bytes memory) pure returns (bytes memory)"}},"id":7466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4319:42:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4297:64:29"},{"expression":{"arguments":[{"id":7470,"name":"currentAncillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"4395:20:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7471,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7462,"src":"4417:6:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":7473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7456,"src":"4437:5:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7472,"name":"toUtf8Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7324,"src":"4425:11:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes32) pure returns (bytes memory)"}},"id":7474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4425:18:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":7468,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4378:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4382:12:29","memberName":"encodePacked","nodeType":"MemberAccess","src":"4378:16:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4378:66:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":7460,"id":7476,"nodeType":"Return","src":"4371:73:29"}]},"implemented":true,"kind":"function","modifiers":[],"name":"appendKeyValueBytes32","nameLocation":"4130:21:29","parameters":{"id":7457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7452,"mutability":"mutable","name":"currentAncillaryData","nameLocation":"4174:20:29","nodeType":"VariableDeclaration","scope":7478,"src":"4161:33:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7451,"name":"bytes","nodeType":"ElementaryTypeName","src":"4161:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7454,"mutability":"mutable","name":"key","nameLocation":"4217:3:29","nodeType":"VariableDeclaration","scope":7478,"src":"4204:16:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7453,"name":"bytes","nodeType":"ElementaryTypeName","src":"4204:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7456,"mutability":"mutable","name":"value","nameLocation":"4238:5:29","nodeType":"VariableDeclaration","scope":7478,"src":"4230:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7455,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4230:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4151:98:29"},"returnParameters":{"id":7460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7459,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7478,"src":"4273:12:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7458,"name":"bytes","nodeType":"ElementaryTypeName","src":"4273:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4272:14:29"},"scope":7568,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":7507,"nodeType":"FunctionDefinition","src":"5184:337:29","nodes":[],"body":{"id":7506,"nodeType":"Block","src":"5350:171:29","nodes":[],"statements":[{"assignments":[7491],"declarations":[{"constant":false,"id":7491,"mutability":"mutable","name":"prefix","nameLocation":"5373:6:29","nodeType":"VariableDeclaration","scope":7506,"src":"5360:19:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7490,"name":"bytes","nodeType":"ElementaryTypeName","src":"5360:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7496,"initialValue":{"arguments":[{"id":7493,"name":"currentAncillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7481,"src":"5398:20:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7494,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7483,"src":"5420:3:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7492,"name":"constructPrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"5382:15:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,bytes memory) pure returns (bytes memory)"}},"id":7495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5382:42:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5360:64:29"},{"expression":{"arguments":[{"id":7499,"name":"currentAncillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7481,"src":"5458:20:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7500,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7491,"src":"5480:6:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":7502,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7485,"src":"5507:5:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7501,"name":"toUtf8BytesAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7357,"src":"5488:18:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes_memory_ptr_$","typeString":"function (address) pure returns (bytes memory)"}},"id":7503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5488:25:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":7497,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5441:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5445:12:29","memberName":"encodePacked","nodeType":"MemberAccess","src":"5441:16:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5441:73:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":7489,"id":7505,"nodeType":"Return","src":"5434:80:29"}]},"documentation":{"id":7479,"nodeType":"StructuredDocumentation","src":"4457:722:29","text":" @notice Adds \"key:value\" to `currentAncillaryData` where `value` is an address that first needs to be converted\n to utf8 bytes. For example, if `utf8(currentAncillaryData)=\"k1:v1\"`, then this function will return\n `utf8(k1:v1,key:value)`, and if `currentAncillaryData` is blank, then this will return `utf8(key:value)`.\n @param currentAncillaryData This bytes data should ideally be able to be utf8-decoded, but its OK if not.\n @param key Again, this bytes data should ideally be able to be utf8-decoded, but its OK if not.\n @param value An address to set as the value in the key:value pair to append to `currentAncillaryData`.\n @return Newly appended ancillary data."},"implemented":true,"kind":"function","modifiers":[],"name":"appendKeyValueAddress","nameLocation":"5193:21:29","parameters":{"id":7486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7481,"mutability":"mutable","name":"currentAncillaryData","nameLocation":"5237:20:29","nodeType":"VariableDeclaration","scope":7507,"src":"5224:33:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7480,"name":"bytes","nodeType":"ElementaryTypeName","src":"5224:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7483,"mutability":"mutable","name":"key","nameLocation":"5280:3:29","nodeType":"VariableDeclaration","scope":7507,"src":"5267:16:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7482,"name":"bytes","nodeType":"ElementaryTypeName","src":"5267:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7485,"mutability":"mutable","name":"value","nameLocation":"5301:5:29","nodeType":"VariableDeclaration","scope":7507,"src":"5293:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7484,"name":"address","nodeType":"ElementaryTypeName","src":"5293:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5214:98:29"},"returnParameters":{"id":7489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7488,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7507,"src":"5336:12:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7487,"name":"bytes","nodeType":"ElementaryTypeName","src":"5336:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5335:14:29"},"scope":7568,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":7536,"nodeType":"FunctionDefinition","src":"6246:331:29","nodes":[],"body":{"id":7535,"nodeType":"Block","src":"6409:168:29","nodes":[],"statements":[{"assignments":[7520],"declarations":[{"constant":false,"id":7520,"mutability":"mutable","name":"prefix","nameLocation":"6432:6:29","nodeType":"VariableDeclaration","scope":7535,"src":"6419:19:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7519,"name":"bytes","nodeType":"ElementaryTypeName","src":"6419:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7525,"initialValue":{"arguments":[{"id":7522,"name":"currentAncillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7510,"src":"6457:20:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7523,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7512,"src":"6479:3:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7521,"name":"constructPrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"6441:15:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,bytes memory) pure returns (bytes memory)"}},"id":7524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6441:42:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6419:64:29"},{"expression":{"arguments":[{"id":7528,"name":"currentAncillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7510,"src":"6517:20:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7529,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7520,"src":"6539:6:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":7531,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7514,"src":"6563:5:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7530,"name":"toUtf8BytesUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7450,"src":"6547:15:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"}},"id":7532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6547:22:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":7526,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6500:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6504:12:29","memberName":"encodePacked","nodeType":"MemberAccess","src":"6500:16:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6500:70:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":7518,"id":7534,"nodeType":"Return","src":"6493:77:29"}]},"documentation":{"id":7508,"nodeType":"StructuredDocumentation","src":"5527:714:29","text":" @notice Adds \"key:value\" to `currentAncillaryData` where `value` is a uint that first needs to be converted\n to utf8 bytes. For example, if `utf8(currentAncillaryData)=\"k1:v1\"`, then this function will return\n `utf8(k1:v1,key:value)`, and if `currentAncillaryData` is blank, then this will return `utf8(key:value)`.\n @param currentAncillaryData This bytes data should ideally be able to be utf8-decoded, but its OK if not.\n @param key Again, this bytes data should ideally be able to be utf8-decoded, but its OK if not.\n @param value A uint to set as the value in the key:value pair to append to `currentAncillaryData`.\n @return Newly appended ancillary data."},"implemented":true,"kind":"function","modifiers":[],"name":"appendKeyValueUint","nameLocation":"6255:18:29","parameters":{"id":7515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7510,"mutability":"mutable","name":"currentAncillaryData","nameLocation":"6296:20:29","nodeType":"VariableDeclaration","scope":7536,"src":"6283:33:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7509,"name":"bytes","nodeType":"ElementaryTypeName","src":"6283:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7512,"mutability":"mutable","name":"key","nameLocation":"6339:3:29","nodeType":"VariableDeclaration","scope":7536,"src":"6326:16:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7511,"name":"bytes","nodeType":"ElementaryTypeName","src":"6326:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7514,"mutability":"mutable","name":"value","nameLocation":"6360:5:29","nodeType":"VariableDeclaration","scope":7536,"src":"6352:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7513,"name":"uint256","nodeType":"ElementaryTypeName","src":"6352:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6273:98:29"},"returnParameters":{"id":7518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7517,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7536,"src":"6395:12:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7516,"name":"bytes","nodeType":"ElementaryTypeName","src":"6395:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6394:14:29"},"scope":7568,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":7567,"nodeType":"FunctionDefinition","src":"6928:295:29","nodes":[],"body":{"id":7566,"nodeType":"Block","src":"7043:180:29","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7546,"name":"currentAncillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7539,"src":"7057:20:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7078:6:29","memberName":"length","nodeType":"MemberAccess","src":"7057:27:29","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":"7087:1:29","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7057:31:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7564,"nodeType":"Block","src":"7159:58:29","statements":[{"expression":{"arguments":[{"id":7560,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7541,"src":"7197:3:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3a","id":7561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7202:3:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c","typeString":"literal_string \":\""},"value":":"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c","typeString":"literal_string \":\""}],"expression":{"id":7558,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7180:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7184:12:29","memberName":"encodePacked","nodeType":"MemberAccess","src":"7180:16:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7180:26:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":7545,"id":7563,"nodeType":"Return","src":"7173:33:29"}]},"id":7565,"nodeType":"IfStatement","src":"7053:164:29","trueBody":{"id":7557,"nodeType":"Block","src":"7090:63:29","statements":[{"expression":{"arguments":[{"hexValue":"2c","id":7552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7128:3:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb","typeString":"literal_string \",\""},"value":","},{"id":7553,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7541,"src":"7133:3:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3a","id":7554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7138:3:29","typeDescriptions":{"typeIdentifier":"t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c","typeString":"literal_string \":\""},"value":":"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb","typeString":"literal_string \",\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c","typeString":"literal_string \":\""}],"expression":{"id":7550,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7111:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7115:12:29","memberName":"encodePacked","nodeType":"MemberAccess","src":"7111:16:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7111:31:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":7545,"id":7556,"nodeType":"Return","src":"7104:38:29"}]}}]},"documentation":{"id":7537,"nodeType":"StructuredDocumentation","src":"6583:340:29","text":" @notice Helper method that returns the left hand side of a \"key:value\" pair plus the colon \":\" and a leading\n comma \",\" if the `currentAncillaryData` is not empty. The return value is intended to be prepended as a prefix to\n some utf8 value that is ultimately added to a comma-delimited, key-value dictionary."},"implemented":true,"kind":"function","modifiers":[],"name":"constructPrefix","nameLocation":"6937:15:29","parameters":{"id":7542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7539,"mutability":"mutable","name":"currentAncillaryData","nameLocation":"6966:20:29","nodeType":"VariableDeclaration","scope":7567,"src":"6953:33:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7538,"name":"bytes","nodeType":"ElementaryTypeName","src":"6953:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7541,"mutability":"mutable","name":"key","nameLocation":"7001:3:29","nodeType":"VariableDeclaration","scope":7567,"src":"6988:16:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7540,"name":"bytes","nodeType":"ElementaryTypeName","src":"6988:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6952:53:29"},"returnParameters":{"id":7545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7544,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7567,"src":"7029:12:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7543,"name":"bytes","nodeType":"ElementaryTypeName","src":"7029:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7028:14:29"},"scope":7568,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"AncillaryData","contractDependencies":[],"contractKind":"library","documentation":{"id":7163,"nodeType":"StructuredDocumentation","src":"67:595:29","text":" @title Library for encoding and decoding ancillary data for DVM price requests.\n @notice We assume that on-chain ancillary data can be formatted directly from bytes to utf8 encoding via\n web3.utils.hexToUtf8, and that clients will parse the utf8-encoded ancillary data as a comma-delimitted key-value\n dictionary. Therefore, this library provides internal methods that aid appending to ancillary data from Solidity\n smart contracts. More details on UMA's ancillary data guidelines below:\n https://docs.google.com/document/d/1zhKKjgY1BupBGPPrY_WOJvui0B6DMcd-xDR8-9-SPDw/edit"},"fullyImplemented":true,"linearizedBaseContracts":[7568],"name":"AncillaryData","nameLocation":"671:13:29","scope":7569,"usedErrors":[],"usedEvents":[]}],"license":"AGPL-3.0-only"}},"lib/protocol/packages/core/contracts/common/implementation/Lockable.sol":{"id":30,"ast":{"absolutePath":"lib/protocol/packages/core/contracts/common/implementation/Lockable.sol","id":7646,"exportedSymbols":{"Lockable":[7645]},"nodeType":"SourceUnit","src":"42:3216:30","nodes":[{"id":7570,"nodeType":"PragmaDirective","src":"42:23:30","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":7645,"nodeType":"ContractDefinition","src":"405:2852:30","nodes":[{"id":7573,"nodeType":"VariableDeclaration","src":"429:24:30","nodes":[],"constant":false,"mutability":"mutable","name":"_notEntered","nameLocation":"442:11:30","scope":7645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7572,"name":"bool","nodeType":"ElementaryTypeName","src":"429:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"id":7581,"nodeType":"FunctionDefinition","src":"460:439:30","nodes":[],"body":{"id":7580,"nodeType":"Block","src":"474:425:30","nodes":[],"statements":[{"expression":{"id":7578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7576,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7573,"src":"874:11:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":7577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"888:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"874:18:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7579,"nodeType":"ExpressionStatement","src":"874:18:30"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":7574,"nodeType":"ParameterList","parameters":[],"src":"471:2:30"},"returnParameters":{"id":7575,"nodeType":"ParameterList","parameters":[],"src":"474:0:30"},"scope":7645,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":7595,"nodeType":"ModifierDefinition","src":"1283:128:30","nodes":[],"body":{"id":7594,"nodeType":"Block","src":"1307:104:30","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7584,"name":"_preEntranceCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7612,"src":"1317:17:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":7585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1317:19:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7586,"nodeType":"ExpressionStatement","src":"1317:19:30"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7587,"name":"_preEntranceSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7620,"src":"1346:15:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1346:17:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7589,"nodeType":"ExpressionStatement","src":"1346:17:30"},{"id":7590,"nodeType":"PlaceholderStatement","src":"1373:1:30"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7591,"name":"_postEntranceReset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7628,"src":"1384:18:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1384:20:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7593,"nodeType":"ExpressionStatement","src":"1384:20:30"}]},"documentation":{"id":7582,"nodeType":"StructuredDocumentation","src":"905:373:30","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\n prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\n function that does the actual state modification."},"name":"nonReentrant","nameLocation":"1292:12:30","parameters":{"id":7583,"nodeType":"ParameterList","parameters":[],"src":"1304:2:30"},"virtual":false,"visibility":"internal"},{"id":7603,"nodeType":"ModifierDefinition","src":"1565:75:30","nodes":[],"body":{"id":7602,"nodeType":"Block","src":"1593:47:30","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7598,"name":"_preEntranceCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7612,"src":"1603:17:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":7599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1603:19:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7600,"nodeType":"ExpressionStatement","src":"1603:19:30"},{"id":7601,"nodeType":"PlaceholderStatement","src":"1632:1:30"}]},"documentation":{"id":7596,"nodeType":"StructuredDocumentation","src":"1417:143:30","text":" @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method."},"name":"nonReentrantView","nameLocation":"1574:16:30","parameters":{"id":7597,"nodeType":"ParameterList","parameters":[],"src":"1590:2:30"},"virtual":false,"visibility":"internal"},{"id":7612,"nodeType":"FunctionDefinition","src":"2143:186:30","nodes":[],"body":{"id":7611,"nodeType":"Block","src":"2186:143:30","nodes":[],"statements":[{"expression":{"arguments":[{"id":7607,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7573,"src":"2275:11:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5265656e7472616e637947756172643a207265656e7472616e742063616c6c","id":7608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2288:33:30","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619","typeString":"literal_string \"ReentrancyGuard: reentrant call\""},"value":"ReentrancyGuard: reentrant call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619","typeString":"literal_string \"ReentrancyGuard: reentrant call\""}],"id":7606,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2267:7:30","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2267:55:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7610,"nodeType":"ExpressionStatement","src":"2267:55:30"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_preEntranceCheck","nameLocation":"2152:17:30","parameters":{"id":7604,"nodeType":"ParameterList","parameters":[],"src":"2169:2:30"},"returnParameters":{"id":7605,"nodeType":"ParameterList","parameters":[],"src":"2186:0:30"},"scope":7645,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":7620,"nodeType":"FunctionDefinition","src":"2335:136:30","nodes":[],"body":{"id":7619,"nodeType":"Block","src":"2371:100:30","nodes":[],"statements":[{"expression":{"id":7617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7615,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7573,"src":"2445:11:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":7616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2459:5:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2445:19:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7618,"nodeType":"ExpressionStatement","src":"2445:19:30"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_preEntranceSet","nameLocation":"2344:15:30","parameters":{"id":7613,"nodeType":"ParameterList","parameters":[],"src":"2359:2:30"},"returnParameters":{"id":7614,"nodeType":"ParameterList","parameters":[],"src":"2371:0:30"},"scope":7645,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":7628,"nodeType":"FunctionDefinition","src":"2477:206:30","nodes":[],"body":{"id":7627,"nodeType":"Block","src":"2516:167:30","nodes":[],"statements":[{"expression":{"id":7625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7623,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7573,"src":"2658:11:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":7624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2672:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2658:18:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7626,"nodeType":"ExpressionStatement","src":"2658:18:30"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_postEntranceReset","nameLocation":"2486:18:30","parameters":{"id":7621,"nodeType":"ParameterList","parameters":[],"src":"2504:2:30"},"returnParameters":{"id":7622,"nodeType":"ParameterList","parameters":[],"src":"2516:0:30"},"scope":7645,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":7636,"nodeType":"FunctionDefinition","src":"3082:84:30","nodes":[],"body":{"id":7635,"nodeType":"Block","src":"3131:35:30","nodes":[],"statements":[{"expression":{"id":7633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7631,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7573,"src":"3141:11:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":7632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3155:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3141:18:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7634,"nodeType":"ExpressionStatement","src":"3141:18:30"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_startReentrantGuardDisabled","nameLocation":"3091:28:30","parameters":{"id":7629,"nodeType":"ParameterList","parameters":[],"src":"3119:2:30"},"returnParameters":{"id":7630,"nodeType":"ParameterList","parameters":[],"src":"3131:0:30"},"scope":7645,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":7644,"nodeType":"FunctionDefinition","src":"3172:83:30","nodes":[],"body":{"id":7643,"nodeType":"Block","src":"3219:36:30","nodes":[],"statements":[{"expression":{"id":7641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7639,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7573,"src":"3229:11:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":7640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3243:5:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3229:19:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7642,"nodeType":"ExpressionStatement","src":"3229:19:30"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_endReentrantGuardDisabled","nameLocation":"3181:26:30","parameters":{"id":7637,"nodeType":"ParameterList","parameters":[],"src":"3207:2:30"},"returnParameters":{"id":7638,"nodeType":"ParameterList","parameters":[],"src":"3219:0:30"},"scope":7645,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Lockable","contractDependencies":[],"contractKind":"contract","documentation":{"id":7571,"nodeType":"StructuredDocumentation","src":"67:337:30","text":" @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\n is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\n and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol."},"fullyImplemented":true,"linearizedBaseContracts":[7645],"name":"Lockable","nameLocation":"414:8:30","scope":7646,"usedErrors":[],"usedEvents":[]}],"license":"AGPL-3.0-only"}},"lib/protocol/packages/core/contracts/data-verification-mechanism/implementation/Constants.sol":{"id":31,"ast":{"absolutePath":"lib/protocol/packages/core/contracts/data-verification-mechanism/implementation/Constants.sol","id":7700,"exportedSymbols":{"OptimisticOracleConstraints":[7699],"OracleInterfaces":[7694]},"nodeType":"SourceUnit","src":"42:1725:31","nodes":[{"id":7647,"nodeType":"PragmaDirective","src":"42:23:31","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":7694,"nodeType":"ContractDefinition","src":"170:969:31","nodes":[{"id":7651,"nodeType":"VariableDeclaration","src":"201:41:31","nodes":[],"constant":true,"functionSelector":"f24a534e","mutability":"constant","name":"Oracle","nameLocation":"225:6:31","scope":7694,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7649,"name":"bytes32","nodeType":"ElementaryTypeName","src":"201:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"4f7261636c65","id":7650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"234:8:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_1a4461ab9f0dcef4a35a8660e8bbb361ae4c140fabb5b8c363bd6282ded34a90","typeString":"literal_string \"Oracle\""},"value":"Oracle"},"visibility":"public"},{"id":7654,"nodeType":"VariableDeclaration","src":"248:67:31","nodes":[],"constant":true,"functionSelector":"4f4a180b","mutability":"constant","name":"IdentifierWhitelist","nameLocation":"272:19:31","scope":7694,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7652,"name":"bytes32","nodeType":"ElementaryTypeName","src":"248:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"4964656e74696669657257686974656c697374","id":7653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"294:21:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_00d9d04470dd3fd336d150abd987b1b33f1c6b92e935259bb901f4c9ca28ddf4","typeString":"literal_string \"IdentifierWhitelist\""},"value":"IdentifierWhitelist"},"visibility":"public"},{"id":7657,"nodeType":"VariableDeclaration","src":"321:39:31","nodes":[],"constant":true,"functionSelector":"42e90c33","mutability":"constant","name":"Store","nameLocation":"345:5:31","scope":7694,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7655,"name":"bytes32","nodeType":"ElementaryTypeName","src":"321:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"53746f7265","id":7656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"353:7:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_f9742a6ab27efbeed38a3a36aac403fe0810a4cdb9e8328d15bdcd1c87e76672","typeString":"literal_string \"Store\""},"value":"Store"},"visibility":"public"},{"id":7660,"nodeType":"VariableDeclaration","src":"366:75:31","nodes":[],"constant":true,"functionSelector":"2a71e5b3","mutability":"constant","name":"FinancialContractsAdmin","nameLocation":"390:23:31","scope":7694,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7658,"name":"bytes32","nodeType":"ElementaryTypeName","src":"366:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"46696e616e6369616c436f6e74726163747341646d696e","id":7659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"416:25:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_bdecf6c7158bdf4679c9cd47427254674db861278f5aafe09a81927b0ddf85aa","typeString":"literal_string \"FinancialContractsAdmin\""},"value":"FinancialContractsAdmin"},"visibility":"public"},{"id":7663,"nodeType":"VariableDeclaration","src":"447:45:31","nodes":[],"constant":true,"functionSelector":"7db9743b","mutability":"constant","name":"Registry","nameLocation":"471:8:31","scope":7694,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7661,"name":"bytes32","nodeType":"ElementaryTypeName","src":"447:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"5265676973747279","id":7662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"482:10:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_8c53ae70b0aa86068023c633abcdda89c433a8a76949ea111f756c171fa23663","typeString":"literal_string \"Registry\""},"value":"Registry"},"visibility":"public"},{"id":7666,"nodeType":"VariableDeclaration","src":"498:67:31","nodes":[],"constant":true,"functionSelector":"598dd097","mutability":"constant","name":"CollateralWhitelist","nameLocation":"522:19:31","scope":7694,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7664,"name":"bytes32","nodeType":"ElementaryTypeName","src":"498:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"436f6c6c61746572616c57686974656c697374","id":7665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"544:21:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_e9a52feae6648b39bfdb0a8523b0b3da0307731129fd6f0d46a73b43c2989f8f","typeString":"literal_string \"CollateralWhitelist\""},"value":"CollateralWhitelist"},"visibility":"public"},{"id":7669,"nodeType":"VariableDeclaration","src":"571:61:31","nodes":[],"constant":true,"functionSelector":"1a4dbd1c","mutability":"constant","name":"OptimisticOracle","nameLocation":"595:16:31","scope":7694,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7667,"name":"bytes32","nodeType":"ElementaryTypeName","src":"571:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"4f7074696d69737469634f7261636c65","id":7668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"614:18:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_1b7f4a3af71357fd741bc7828f83ec6c49403c71c1a6875664530cb681f8b070","typeString":"literal_string \"OptimisticOracle\""},"value":"OptimisticOracle"},"visibility":"public"},{"id":7672,"nodeType":"VariableDeclaration","src":"638:65:31","nodes":[],"constant":true,"functionSelector":"473e7ccd","mutability":"constant","name":"OptimisticOracleV2","nameLocation":"662:18:31","scope":7694,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7670,"name":"bytes32","nodeType":"ElementaryTypeName","src":"638:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"4f7074696d69737469634f7261636c655632","id":7671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"683:20:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_616fa5636fbd5fcd7247bf502d2e39a0e864454c814e1628b3406d6d76dcc2d8","typeString":"literal_string \"OptimisticOracleV2\""},"value":"OptimisticOracleV2"},"visibility":"public"},{"id":7675,"nodeType":"VariableDeclaration","src":"709:65:31","nodes":[],"constant":true,"functionSelector":"f02f8e83","mutability":"constant","name":"OptimisticOracleV3","nameLocation":"733:18:31","scope":7694,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7673,"name":"bytes32","nodeType":"ElementaryTypeName","src":"709:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"4f7074696d69737469634f7261636c655633","id":7674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"754:20:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_97036b2b113c0bfaf3bfccc255bef8592a4b28b32635d93a9bec71299cd1e2c1","typeString":"literal_string \"OptimisticOracleV3\""},"value":"OptimisticOracleV3"},"visibility":"public"},{"id":7678,"nodeType":"VariableDeclaration","src":"780:41:31","nodes":[],"constant":true,"functionSelector":"5fa2ef10","mutability":"constant","name":"Bridge","nameLocation":"804:6:31","scope":7694,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7676,"name":"bytes32","nodeType":"ElementaryTypeName","src":"780:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"427269646765","id":7677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"813:8:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_7aa5ae620294318af92bf4e2b2a729646c932a80312a5fa630da993a2ef5cc10","typeString":"literal_string \"Bridge\""},"value":"Bridge"},"visibility":"public"},{"id":7681,"nodeType":"VariableDeclaration","src":"827:57:31","nodes":[],"constant":true,"functionSelector":"079b6c63","mutability":"constant","name":"GenericHandler","nameLocation":"851:14:31","scope":7694,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7679,"name":"bytes32","nodeType":"ElementaryTypeName","src":"827:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"47656e6572696348616e646c6572","id":7680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"868:16:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_0c852b6e1eb3d094b8b7ec20be5fb44aea5686ca74f54e2589153de1c87b6302","typeString":"literal_string \"GenericHandler\""},"value":"GenericHandler"},"visibility":"public"},{"id":7684,"nodeType":"VariableDeclaration","src":"890:73:31","nodes":[],"constant":true,"functionSelector":"4596ac9b","mutability":"constant","name":"SkinnyOptimisticOracle","nameLocation":"914:22:31","scope":7694,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7682,"name":"bytes32","nodeType":"ElementaryTypeName","src":"890:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"536b696e6e794f7074696d69737469634f7261636c65","id":7683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"939:24:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_5783227a49dac1b3d7d5d8e80d9d37463f506ddc1045b867688aa7568f7d856b","typeString":"literal_string \"SkinnyOptimisticOracle\""},"value":"SkinnyOptimisticOracle"},"visibility":"public"},{"id":7687,"nodeType":"VariableDeclaration","src":"969:57:31","nodes":[],"constant":true,"functionSelector":"1a0fbfb3","mutability":"constant","name":"ChildMessenger","nameLocation":"993:14:31","scope":7694,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7685,"name":"bytes32","nodeType":"ElementaryTypeName","src":"969:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"4368696c644d657373656e676572","id":7686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1010:16:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_6677d1b6637fcf983cd26dcc1dc81de432550efa8c3484b1099189803b59f9e9","typeString":"literal_string \"ChildMessenger\""},"value":"ChildMessenger"},"visibility":"public"},{"id":7690,"nodeType":"VariableDeclaration","src":"1032:47:31","nodes":[],"constant":true,"functionSelector":"7608ea2f","mutability":"constant","name":"OracleHub","nameLocation":"1056:9:31","scope":7694,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7688,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1032:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"4f7261636c65487562","id":7689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1068:11:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ae3a082c61a7379e2280f3356a5131507d9829d222d853bfa7c9fe1200dd040","typeString":"literal_string \"OracleHub\""},"value":"OracleHub"},"visibility":"public"},{"id":7693,"nodeType":"VariableDeclaration","src":"1085:51:31","nodes":[],"constant":true,"functionSelector":"8adca47f","mutability":"constant","name":"OracleSpoke","nameLocation":"1109:11:31","scope":7694,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7691,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1085:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"4f7261636c6553706f6b65","id":7692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1123:13:31","typeDescriptions":{"typeIdentifier":"t_stringliteral_fa6c3ccbd43e09dd0b7bf91a760bebaf6409bb7669b007983fb1993c9a18948d","typeString":"literal_string \"OracleSpoke\""},"value":"OracleSpoke"},"visibility":"public"}],"abstract":false,"baseContracts":[],"canonicalName":"OracleInterfaces","contractDependencies":[],"contractKind":"library","documentation":{"id":7648,"nodeType":"StructuredDocumentation","src":"67:102:31","text":" @title Stores common interface names used throughout the DVM by registration in the Finder."},"fullyImplemented":true,"linearizedBaseContracts":[7694],"name":"OracleInterfaces","nameLocation":"178:16:31","scope":7700,"usedErrors":[],"usedEvents":[]},{"id":7699,"nodeType":"ContractDefinition","src":"1235:531:31","nodes":[{"id":7698,"nodeType":"VariableDeclaration","src":"1713:50:31","nodes":[],"constant":true,"functionSelector":"c371dda7","mutability":"constant","name":"ancillaryBytesLimit","nameLocation":"1737:19:31","scope":7699,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7696,"name":"uint256","nodeType":"ElementaryTypeName","src":"1713:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"38313932","id":7697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1759:4:31","typeDescriptions":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"},"value":"8192"},"visibility":"public"}],"abstract":false,"baseContracts":[],"canonicalName":"OptimisticOracleConstraints","contractDependencies":[],"contractKind":"library","documentation":{"id":7695,"nodeType":"StructuredDocumentation","src":"1141:93:31","text":" @title Commonly re-used values for contracts associated with the OptimisticOracle."},"fullyImplemented":true,"linearizedBaseContracts":[7699],"name":"OptimisticOracleConstraints","nameLocation":"1243:27:31","scope":7700,"usedErrors":[],"usedEvents":[]}],"license":"AGPL-3.0-only"}},"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/FinderInterface.sol":{"id":32,"ast":{"absolutePath":"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/FinderInterface.sol","id":7720,"exportedSymbols":{"FinderInterface":[7719]},"nodeType":"SourceUnit","src":"42:960:32","nodes":[{"id":7701,"nodeType":"PragmaDirective","src":"42:23:32","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":7719,"nodeType":"ContractDefinition","src":"212:789:32","nodes":[{"id":7710,"nodeType":"FunctionDefinition","src":"549:100:32","nodes":[],"documentation":{"id":7703,"nodeType":"StructuredDocumentation","src":"244:300:32","text":" @notice Updates the address of the contract that implements `interfaceName`.\n @param interfaceName bytes32 encoding of the interface name that is either changed or registered.\n @param implementationAddress address of the deployed contract that implements the interface."},"functionSelector":"31f9665e","implemented":false,"kind":"function","modifiers":[],"name":"changeImplementationAddress","nameLocation":"558:27:32","parameters":{"id":7708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7705,"mutability":"mutable","name":"interfaceName","nameLocation":"594:13:32","nodeType":"VariableDeclaration","scope":7710,"src":"586:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7704,"name":"bytes32","nodeType":"ElementaryTypeName","src":"586:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7707,"mutability":"mutable","name":"implementationAddress","nameLocation":"617:21:32","nodeType":"VariableDeclaration","scope":7710,"src":"609:29:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7706,"name":"address","nodeType":"ElementaryTypeName","src":"609:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"585:54:32"},"returnParameters":{"id":7709,"nodeType":"ParameterList","parameters":[],"src":"648:0:32"},"scope":7719,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":7718,"nodeType":"FunctionDefinition","src":"910:89:32","nodes":[],"documentation":{"id":7711,"nodeType":"StructuredDocumentation","src":"655:250:32","text":" @notice Gets the address of the contract that implements the given `interfaceName`.\n @param interfaceName queried interface.\n @return implementationAddress address of the deployed contract that implements the interface."},"functionSelector":"aafd5e40","implemented":false,"kind":"function","modifiers":[],"name":"getImplementationAddress","nameLocation":"919:24:32","parameters":{"id":7714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7713,"mutability":"mutable","name":"interfaceName","nameLocation":"952:13:32","nodeType":"VariableDeclaration","scope":7718,"src":"944:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7712,"name":"bytes32","nodeType":"ElementaryTypeName","src":"944:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"943:23:32"},"returnParameters":{"id":7717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7716,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7718,"src":"990:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7715,"name":"address","nodeType":"ElementaryTypeName","src":"990:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"989:9:32"},"scope":7719,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"FinderInterface","contractDependencies":[],"contractKind":"interface","documentation":{"id":7702,"nodeType":"StructuredDocumentation","src":"67:144:32","text":" @title Provides addresses of the live contracts implementing certain interfaces.\n @dev Examples are the Oracle or Store interfaces."},"fullyImplemented":false,"linearizedBaseContracts":[7719],"name":"FinderInterface","nameLocation":"222:15:32","scope":7720,"usedErrors":[],"usedEvents":[]}],"license":"AGPL-3.0-only"}},"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/IdentifierWhitelistInterface.sol":{"id":33,"ast":{"absolutePath":"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/IdentifierWhitelistInterface.sol","id":7744,"exportedSymbols":{"IdentifierWhitelistInterface":[7743]},"nodeType":"SourceUnit","src":"42:1112:33","nodes":[{"id":7721,"nodeType":"PragmaDirective","src":"42:23:33","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":7743,"nodeType":"ContractDefinition","src":"175:978:33","nodes":[{"id":7728,"nodeType":"FunctionDefinition","src":"467:61:33","nodes":[],"documentation":{"id":7723,"nodeType":"StructuredDocumentation","src":"220:242:33","text":" @notice Adds the provided identifier as a supported identifier.\n @dev Price requests using this identifier will succeed after this call.\n @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD."},"functionSelector":"10a7e201","implemented":false,"kind":"function","modifiers":[],"name":"addSupportedIdentifier","nameLocation":"476:22:33","parameters":{"id":7726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7725,"mutability":"mutable","name":"identifier","nameLocation":"507:10:33","nodeType":"VariableDeclaration","scope":7728,"src":"499:18:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7724,"name":"bytes32","nodeType":"ElementaryTypeName","src":"499:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"498:20:33"},"returnParameters":{"id":7727,"nodeType":"ParameterList","parameters":[],"src":"527:0:33"},"scope":7743,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":7734,"nodeType":"FunctionDefinition","src":"778:64:33","nodes":[],"documentation":{"id":7729,"nodeType":"StructuredDocumentation","src":"534:239:33","text":" @notice Removes the identifier from the whitelist.\n @dev Price requests using this identifier will no longer succeed after this call.\n @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD."},"functionSelector":"8e0d3ca7","implemented":false,"kind":"function","modifiers":[],"name":"removeSupportedIdentifier","nameLocation":"787:25:33","parameters":{"id":7732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7731,"mutability":"mutable","name":"identifier","nameLocation":"821:10:33","nodeType":"VariableDeclaration","scope":7734,"src":"813:18:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7730,"name":"bytes32","nodeType":"ElementaryTypeName","src":"813:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"812:20:33"},"returnParameters":{"id":7733,"nodeType":"ParameterList","parameters":[],"src":"841:0:33"},"scope":7743,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":7742,"nodeType":"FunctionDefinition","src":"1071:80:33","nodes":[],"documentation":{"id":7735,"nodeType":"StructuredDocumentation","src":"848:218:33","text":" @notice Checks whether an identifier is on the whitelist.\n @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD.\n @return bool if the identifier is supported (or not)."},"functionSelector":"90978d1b","implemented":false,"kind":"function","modifiers":[],"name":"isIdentifierSupported","nameLocation":"1080:21:33","parameters":{"id":7738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7737,"mutability":"mutable","name":"identifier","nameLocation":"1110:10:33","nodeType":"VariableDeclaration","scope":7742,"src":"1102:18:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7736,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1102:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1101:20:33"},"returnParameters":{"id":7741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7740,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7742,"src":"1145:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7739,"name":"bool","nodeType":"ElementaryTypeName","src":"1145:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1144:6:33"},"scope":7743,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IdentifierWhitelistInterface","contractDependencies":[],"contractKind":"interface","documentation":{"id":7722,"nodeType":"StructuredDocumentation","src":"67:107:33","text":" @title Interface for whitelists of supported identifiers that the oracle can provide prices for."},"fullyImplemented":false,"linearizedBaseContracts":[7743],"name":"IdentifierWhitelistInterface","nameLocation":"185:28:33","scope":7744,"usedErrors":[],"usedEvents":[]}],"license":"AGPL-3.0-only"}},"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/OracleAncillaryInterface.sol":{"id":34,"ast":{"absolutePath":"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/OracleAncillaryInterface.sol","id":7782,"exportedSymbols":{"OracleAncillaryInterface":[7781]},"nodeType":"SourceUnit","src":"42:2306:34","nodes":[{"id":7745,"nodeType":"PragmaDirective","src":"42:23:34","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":7781,"nodeType":"ContractDefinition","src":"243:2104:34","nodes":[{"id":7756,"nodeType":"FunctionDefinition","src":"788:129:34","nodes":[],"documentation":{"id":7747,"nodeType":"StructuredDocumentation","src":"292:490:34","text":" @notice Enqueues a request (if a request isn't already present) for the given `identifier`, `time` pair.\n @dev Time must be in the past and the identifier must be supported.\n @param identifier uniquely identifies the price requested. eg BTC/USD (encoded as bytes32) could be requested.\n @param ancillaryData arbitrary data appended to a price request to give the voters more info from the caller.\n @param time unix timestamp for the price request."},"functionSelector":"216666a4","implemented":false,"kind":"function","modifiers":[],"name":"requestPrice","nameLocation":"797:12:34","parameters":{"id":7754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7749,"mutability":"mutable","name":"identifier","nameLocation":"827:10:34","nodeType":"VariableDeclaration","scope":7756,"src":"819:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7748,"name":"bytes32","nodeType":"ElementaryTypeName","src":"819:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7751,"mutability":"mutable","name":"time","nameLocation":"855:4:34","nodeType":"VariableDeclaration","scope":7756,"src":"847:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7750,"name":"uint256","nodeType":"ElementaryTypeName","src":"847:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7753,"mutability":"mutable","name":"ancillaryData","nameLocation":"882:13:34","nodeType":"VariableDeclaration","scope":7756,"src":"869:26:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7752,"name":"bytes","nodeType":"ElementaryTypeName","src":"869:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"809:92:34"},"returnParameters":{"id":7755,"nodeType":"ParameterList","parameters":[],"src":"916:0:34"},"scope":7781,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":7768,"nodeType":"FunctionDefinition","src":"1476:145:34","nodes":[],"documentation":{"id":7757,"nodeType":"StructuredDocumentation","src":"923:548:34","text":" @notice Whether the price for `identifier` and `time` is available.\n @dev Time must be in the past and the identifier must be supported.\n @param identifier uniquely identifies the price requested. eg BTC/USD (encoded as bytes32) could be requested.\n @param time unix timestamp for the price request.\n @param ancillaryData arbitrary data appended to a price request to give the voters more info from the caller.\n @return bool if the DVM has resolved to a price for the given identifier and timestamp."},"functionSelector":"b551cd50","implemented":false,"kind":"function","modifiers":[],"name":"hasPrice","nameLocation":"1485:8:34","parameters":{"id":7764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7759,"mutability":"mutable","name":"identifier","nameLocation":"1511:10:34","nodeType":"VariableDeclaration","scope":7768,"src":"1503:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7758,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1503:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7761,"mutability":"mutable","name":"time","nameLocation":"1539:4:34","nodeType":"VariableDeclaration","scope":7768,"src":"1531:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7760,"name":"uint256","nodeType":"ElementaryTypeName","src":"1531:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7763,"mutability":"mutable","name":"ancillaryData","nameLocation":"1566:13:34","nodeType":"VariableDeclaration","scope":7768,"src":"1553:26:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7762,"name":"bytes","nodeType":"ElementaryTypeName","src":"1553:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1493:92:34"},"returnParameters":{"id":7767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7766,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7768,"src":"1615:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7765,"name":"bool","nodeType":"ElementaryTypeName","src":"1615:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1614:6:34"},"scope":7781,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":7780,"nodeType":"FunctionDefinition","src":"2198:147:34","nodes":[],"documentation":{"id":7769,"nodeType":"StructuredDocumentation","src":"1627:565:34","text":" @notice Gets the price for `identifier` and `time` if it has already been requested and resolved.\n @dev If the price is not available, the method reverts.\n @param identifier uniquely identifies the price requested. eg BTC/USD (encoded as bytes32) could be requested.\n @param time unix timestamp for the price request.\n @param ancillaryData arbitrary data appended to a price request to give the voters more info from the caller.\n @return int256 representing the resolved price for the given identifier and timestamp."},"functionSelector":"719c6d56","implemented":false,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"2207:8:34","parameters":{"id":7776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7771,"mutability":"mutable","name":"identifier","nameLocation":"2233:10:34","nodeType":"VariableDeclaration","scope":7780,"src":"2225:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7770,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2225:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7773,"mutability":"mutable","name":"time","nameLocation":"2261:4:34","nodeType":"VariableDeclaration","scope":7780,"src":"2253:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7772,"name":"uint256","nodeType":"ElementaryTypeName","src":"2253:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7775,"mutability":"mutable","name":"ancillaryData","nameLocation":"2288:13:34","nodeType":"VariableDeclaration","scope":7780,"src":"2275:26:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7774,"name":"bytes","nodeType":"ElementaryTypeName","src":"2275:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2215:92:34"},"returnParameters":{"id":7779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7778,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7780,"src":"2337:6:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7777,"name":"int256","nodeType":"ElementaryTypeName","src":"2337:6:34","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2336:8:34"},"scope":7781,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":true,"baseContracts":[],"canonicalName":"OracleAncillaryInterface","contractDependencies":[],"contractKind":"contract","documentation":{"id":7746,"nodeType":"StructuredDocumentation","src":"67:175:34","text":" @title Financial contract facing Oracle interface.\n @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface."},"fullyImplemented":false,"linearizedBaseContracts":[7781],"name":"OracleAncillaryInterface","nameLocation":"261:24:34","scope":7782,"usedErrors":[],"usedEvents":[]}],"license":"AGPL-3.0-only"}},"src/common/implementation/AddressLegacy.sol":{"id":35,"ast":{"absolutePath":"src/common/implementation/AddressLegacy.sol","id":7801,"exportedSymbols":{"AddressLegacy":[7800]},"nodeType":"SourceUnit","src":"211:1640:35","nodes":[{"id":7783,"nodeType":"PragmaDirective","src":"211:23:35","nodes":[],"literals":["solidity","^","0.8",".1"]},{"id":7800,"nodeType":"ContractDefinition","src":"304:1546:35","nodes":[{"id":7799,"nodeType":"FunctionDefinition","src":"1528:320:35","nodes":[],"body":{"id":7798,"nodeType":"Block","src":"1594:254:35","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7792,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7787,"src":"1818:7:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1826:4:35","memberName":"code","nodeType":"MemberAccess","src":"1818:12:35","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1831:6:35","memberName":"length","nodeType":"MemberAccess","src":"1818:19:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1840:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1818:23:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7791,"id":7797,"nodeType":"Return","src":"1811:30:35"}]},"documentation":{"id":7785,"nodeType":"StructuredDocumentation","src":"332:1191:35","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 ===="},"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1537:10:35","parameters":{"id":7788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7787,"mutability":"mutable","name":"account","nameLocation":"1556:7:35","nodeType":"VariableDeclaration","scope":7799,"src":"1548:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7786,"name":"address","nodeType":"ElementaryTypeName","src":"1548:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1547:17:35"},"returnParameters":{"id":7791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7790,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7799,"src":"1588:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7789,"name":"bool","nodeType":"ElementaryTypeName","src":"1588:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1587:6:35"},"scope":7800,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"AddressLegacy","contractDependencies":[],"contractKind":"library","documentation":{"id":7784,"nodeType":"StructuredDocumentation","src":"236:67:35","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"linearizedBaseContracts":[7800],"name":"AddressLegacy","nameLocation":"312:13:35","scope":7801,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"src/common/implementation/AddressWhitelist.sol":{"id":36,"ast":{"absolutePath":"src/common/implementation/AddressWhitelist.sol","id":8066,"exportedSymbols":{"AddressWhitelist":[8065],"AddressWhitelistInterface":[8359],"ERC165":[3567],"Lockable":[7645],"Ownable":[1979]},"nodeType":"SourceUnit","src":"356:4493:36","nodes":[{"id":7802,"nodeType":"PragmaDirective","src":"356:23:36","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":7804,"nodeType":"ImportDirective","src":"381:86:36","nodes":[],"absolutePath":"src/common/interfaces/AddressWhitelistInterface.sol","file":"../interfaces/AddressWhitelistInterface.sol","nameLocation":"-1:-1:-1","scope":8066,"sourceUnit":8360,"symbolAliases":[{"foreign":{"id":7803,"name":"AddressWhitelistInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8359,"src":"389:25:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":7806,"nodeType":"ImportDirective","src":"468:78:36","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","nameLocation":"-1:-1:-1","scope":8066,"sourceUnit":3568,"symbolAliases":[{"foreign":{"id":7805,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3567,"src":"476:6:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":7808,"nodeType":"ImportDirective","src":"547:67:36","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","nameLocation":"-1:-1:-1","scope":8066,"sourceUnit":1980,"symbolAliases":[{"foreign":{"id":7807,"name":"Ownable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1979,"src":"555:7:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":7810,"nodeType":"ImportDirective","src":"615:75:36","nodes":[],"absolutePath":"lib/protocol/packages/core/contracts/common/implementation/Lockable.sol","file":"@uma/contracts/common/implementation/Lockable.sol","nameLocation":"-1:-1:-1","scope":8066,"sourceUnit":7646,"symbolAliases":[{"foreign":{"id":7809,"name":"Lockable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7645,"src":"623:8:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":8065,"nodeType":"ContractDefinition","src":"804:4044:36","nodes":[{"id":7823,"nodeType":"EnumDefinition","src":"892:57:36","nodes":[],"canonicalName":"AddressWhitelist.Status","members":[{"id":7820,"name":"None","nameLocation":"914:4:36","nodeType":"EnumValue","src":"914:4:36"},{"id":7821,"name":"In","nameLocation":"928:2:36","nodeType":"EnumValue","src":"928:2:36"},{"id":7822,"name":"Out","nameLocation":"940:3:36","nodeType":"EnumValue","src":"940:3:36"}],"name":"Status","nameLocation":"897:6:36"},{"id":7828,"nodeType":"VariableDeclaration","src":"955:43:36","nodes":[],"constant":false,"functionSelector":"9b19251a","mutability":"mutable","name":"whitelist","nameLocation":"989:9:36","scope":8065,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_Status_$7823_$","typeString":"mapping(address => enum AddressWhitelist.Status)"},"typeName":{"id":7827,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":7824,"name":"address","nodeType":"ElementaryTypeName","src":"963:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"955:26:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_Status_$7823_$","typeString":"mapping(address => enum AddressWhitelist.Status)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":7826,"nodeType":"UserDefinedTypeName","pathNode":{"id":7825,"name":"Status","nameLocations":["974:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":7823,"src":"974:6:36"},"referencedDeclaration":7823,"src":"974:6:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}}},"visibility":"public"},{"id":7831,"nodeType":"VariableDeclaration","src":"1005:33:36","nodes":[],"constant":false,"functionSelector":"37797c08","mutability":"mutable","name":"whitelistIndices","nameLocation":"1022:16:36","scope":8065,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[]"},"typeName":{"baseType":{"id":7829,"name":"address","nodeType":"ElementaryTypeName","src":"1005:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7830,"nodeType":"ArrayTypeName","src":"1005:9:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"public"},{"id":7835,"nodeType":"EventDefinition","src":"1045:53:36","nodes":[],"anonymous":false,"eventSelector":"a850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab03","name":"AddedToWhitelist","nameLocation":"1051:16:36","parameters":{"id":7834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7833,"indexed":true,"mutability":"mutable","name":"addedAddress","nameLocation":"1084:12:36","nodeType":"VariableDeclaration","scope":7835,"src":"1068:28:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7832,"name":"address","nodeType":"ElementaryTypeName","src":"1068:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1067:30:36"}},{"id":7839,"nodeType":"EventDefinition","src":"1103:59:36","nodes":[],"anonymous":false,"eventSelector":"cdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df757","name":"RemovedFromWhitelist","nameLocation":"1109:20:36","parameters":{"id":7838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7837,"indexed":true,"mutability":"mutable","name":"removedAddress","nameLocation":"1146:14:36","nodeType":"VariableDeclaration","scope":7839,"src":"1130:30:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7836,"name":"address","nodeType":"ElementaryTypeName","src":"1130:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1129:32:36"}},{"id":7848,"nodeType":"FunctionDefinition","src":"1322:36:36","nodes":[],"body":{"id":7847,"nodeType":"Block","src":"1356:2:36","nodes":[],"statements":[]},"documentation":{"id":7840,"nodeType":"StructuredDocumentation","src":"1168:149:36","text":" @notice Constructor to initialize the contract.\n @dev This makes it compatible with v5.x of OpenZeppelin's Ownable contract."},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"expression":{"id":7843,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1344:3:36","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1348:6:36","memberName":"sender","nodeType":"MemberAccess","src":"1344:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":7845,"kind":"baseConstructorSpecifier","modifierName":{"id":7842,"name":"Ownable","nameLocations":["1336:7:36"],"nodeType":"IdentifierPath","referencedDeclaration":1979,"src":"1336:7:36"},"nodeType":"ModifierInvocation","src":"1336:19:36"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":7841,"nodeType":"ParameterList","parameters":[],"src":"1333:2:36"},"returnParameters":{"id":7846,"nodeType":"ParameterList","parameters":[],"src":"1356:0:36"},"scope":8065,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":7894,"nodeType":"FunctionDefinition","src":"1478:488:36","nodes":[],"body":{"id":7893,"nodeType":"Block","src":"1563:403:36","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"},"id":7864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":7859,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7828,"src":"1626:9:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_Status_$7823_$","typeString":"mapping(address => enum AddressWhitelist.Status)"}},"id":7861,"indexExpression":{"id":7860,"name":"newElement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7851,"src":"1636:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1626:21:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":7862,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7823,"src":"1651:6:36","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$7823_$","typeString":"type(enum AddressWhitelist.Status)"}},"id":7863,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1658:2:36","memberName":"In","nodeType":"MemberAccess","referencedDeclaration":7821,"src":"1651:9:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"src":"1626:34:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7867,"nodeType":"IfStatement","src":"1622:71:36","trueBody":{"id":7866,"nodeType":"Block","src":"1662:31:36","statements":[{"functionReturnParameters":7858,"id":7865,"nodeType":"Return","src":"1676:7:36"}]}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"},"id":7873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":7868,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7828,"src":"1776:9:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_Status_$7823_$","typeString":"mapping(address => enum AddressWhitelist.Status)"}},"id":7870,"indexExpression":{"id":7869,"name":"newElement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7851,"src":"1786:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1776:21:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":7871,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7823,"src":"1801:6:36","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$7823_$","typeString":"type(enum AddressWhitelist.Status)"}},"id":7872,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1808:4:36","memberName":"None","nodeType":"MemberAccess","referencedDeclaration":7820,"src":"1801:11:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"src":"1776:36:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7881,"nodeType":"IfStatement","src":"1772:100:36","trueBody":{"id":7880,"nodeType":"Block","src":"1814:58:36","statements":[{"expression":{"arguments":[{"id":7877,"name":"newElement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7851,"src":"1850:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7874,"name":"whitelistIndices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7831,"src":"1828:16:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1845:4:36","memberName":"push","nodeType":"MemberAccess","src":"1828:21:36","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":7878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1828:33:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7879,"nodeType":"ExpressionStatement","src":"1828:33:36"}]}},{"expression":{"id":7887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7882,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7828,"src":"1882:9:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_Status_$7823_$","typeString":"mapping(address => enum AddressWhitelist.Status)"}},"id":7884,"indexExpression":{"id":7883,"name":"newElement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7851,"src":"1892:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1882:21:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":7885,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7823,"src":"1906:6:36","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$7823_$","typeString":"type(enum AddressWhitelist.Status)"}},"id":7886,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1913:2:36","memberName":"In","nodeType":"MemberAccess","referencedDeclaration":7821,"src":"1906:9:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"src":"1882:33:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"id":7888,"nodeType":"ExpressionStatement","src":"1882:33:36"},{"eventCall":{"arguments":[{"id":7890,"name":"newElement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7851,"src":"1948:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7889,"name":"AddedToWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7835,"src":"1931:16:36","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1931:28:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7892,"nodeType":"EmitStatement","src":"1926:33:36"}]},"baseFunctions":[8335],"documentation":{"id":7849,"nodeType":"StructuredDocumentation","src":"1364:109:36","text":" @notice Adds an address to the whitelist.\n @param newElement the new address to add."},"functionSelector":"e43252d7","implemented":true,"kind":"function","modifiers":[{"id":7855,"kind":"modifierInvocation","modifierName":{"id":7854,"name":"nonReentrant","nameLocations":["1540:12:36"],"nodeType":"IdentifierPath","referencedDeclaration":7595,"src":"1540:12:36"},"nodeType":"ModifierInvocation","src":"1540:12:36"},{"id":7857,"kind":"modifierInvocation","modifierName":{"id":7856,"name":"onlyOwner","nameLocations":["1553:9:36"],"nodeType":"IdentifierPath","referencedDeclaration":1890,"src":"1553:9:36"},"nodeType":"ModifierInvocation","src":"1553:9:36"}],"name":"addToWhitelist","nameLocation":"1487:14:36","overrides":{"id":7853,"nodeType":"OverrideSpecifier","overrides":[],"src":"1531:8:36"},"parameters":{"id":7852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7851,"mutability":"mutable","name":"newElement","nameLocation":"1510:10:36","nodeType":"VariableDeclaration","scope":7894,"src":"1502:18:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7850,"name":"address","nodeType":"ElementaryTypeName","src":"1502:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1501:20:36"},"returnParameters":{"id":7858,"nodeType":"ParameterList","parameters":[],"src":"1563:0:36"},"scope":8065,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":7925,"nodeType":"FunctionDefinition","src":"2104:277:36","nodes":[],"body":{"id":7924,"nodeType":"Block","src":"2199:182:36","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"},"id":7910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":7905,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7828,"src":"2213:9:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_Status_$7823_$","typeString":"mapping(address => enum AddressWhitelist.Status)"}},"id":7907,"indexExpression":{"id":7906,"name":"elementToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7897,"src":"2223:15:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2213:26:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":7908,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7823,"src":"2243:6:36","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$7823_$","typeString":"type(enum AddressWhitelist.Status)"}},"id":7909,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2250:3:36","memberName":"Out","nodeType":"MemberAccess","referencedDeclaration":7822,"src":"2243:10:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"src":"2213:40:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7923,"nodeType":"IfStatement","src":"2209:166:36","trueBody":{"id":7922,"nodeType":"Block","src":"2255:120:36","statements":[{"expression":{"id":7916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7911,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7828,"src":"2269:9:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_Status_$7823_$","typeString":"mapping(address => enum AddressWhitelist.Status)"}},"id":7913,"indexExpression":{"id":7912,"name":"elementToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7897,"src":"2279:15:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2269:26:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":7914,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7823,"src":"2298:6:36","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$7823_$","typeString":"type(enum AddressWhitelist.Status)"}},"id":7915,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2305:3:36","memberName":"Out","nodeType":"MemberAccess","referencedDeclaration":7822,"src":"2298:10:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"src":"2269:39:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"id":7917,"nodeType":"ExpressionStatement","src":"2269:39:36"},{"eventCall":{"arguments":[{"id":7919,"name":"elementToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7897,"src":"2348:15:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7918,"name":"RemovedFromWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7839,"src":"2327:20:36","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2327:37:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7921,"nodeType":"EmitStatement","src":"2322:42:36"}]}}]},"baseFunctions":[8340],"documentation":{"id":7895,"nodeType":"StructuredDocumentation","src":"1972:127:36","text":" @notice Removes an address from the whitelist.\n @param elementToRemove the existing address to remove."},"functionSelector":"8ab1d681","implemented":true,"kind":"function","modifiers":[{"id":7901,"kind":"modifierInvocation","modifierName":{"id":7900,"name":"nonReentrant","nameLocations":["2176:12:36"],"nodeType":"IdentifierPath","referencedDeclaration":7595,"src":"2176:12:36"},"nodeType":"ModifierInvocation","src":"2176:12:36"},{"id":7903,"kind":"modifierInvocation","modifierName":{"id":7902,"name":"onlyOwner","nameLocations":["2189:9:36"],"nodeType":"IdentifierPath","referencedDeclaration":1890,"src":"2189:9:36"},"nodeType":"ModifierInvocation","src":"2189:9:36"}],"name":"removeFromWhitelist","nameLocation":"2113:19:36","overrides":{"id":7899,"nodeType":"OverrideSpecifier","overrides":[],"src":"2167:8:36"},"parameters":{"id":7898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7897,"mutability":"mutable","name":"elementToRemove","nameLocation":"2141:15:36","nodeType":"VariableDeclaration","scope":7925,"src":"2133:23:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7896,"name":"address","nodeType":"ElementaryTypeName","src":"2133:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2132:25:36"},"returnParameters":{"id":7904,"nodeType":"ParameterList","parameters":[],"src":"2199:0:36"},"scope":8065,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":7944,"nodeType":"FunctionDefinition","src":"2587:170:36","nodes":[],"body":{"id":7943,"nodeType":"Block","src":"2695:62:36","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"},"id":7941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":7936,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7828,"src":"2712:9:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_Status_$7823_$","typeString":"mapping(address => enum AddressWhitelist.Status)"}},"id":7938,"indexExpression":{"id":7937,"name":"elementToCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7928,"src":"2722:14:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2712:25:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":7939,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7823,"src":"2741:6:36","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$7823_$","typeString":"type(enum AddressWhitelist.Status)"}},"id":7940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2748:2:36","memberName":"In","nodeType":"MemberAccess","referencedDeclaration":7821,"src":"2741:9:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"src":"2712:38:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7935,"id":7942,"nodeType":"Return","src":"2705:45:36"}]},"baseFunctions":[8347],"documentation":{"id":7926,"nodeType":"StructuredDocumentation","src":"2387:195:36","text":" @notice Checks whether an address is on the whitelist.\n @param elementToCheck the address to check.\n @return True if `elementToCheck` is on the whitelist, or False."},"functionSelector":"3a3ab672","implemented":true,"kind":"function","modifiers":[{"id":7932,"kind":"modifierInvocation","modifierName":{"id":7931,"name":"nonReentrantView","nameLocations":["2663:16:36"],"nodeType":"IdentifierPath","referencedDeclaration":7603,"src":"2663:16:36"},"nodeType":"ModifierInvocation","src":"2663:16:36"}],"name":"isOnWhitelist","nameLocation":"2596:13:36","overrides":{"id":7930,"nodeType":"OverrideSpecifier","overrides":[],"src":"2654:8:36"},"parameters":{"id":7929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7928,"mutability":"mutable","name":"elementToCheck","nameLocation":"2618:14:36","nodeType":"VariableDeclaration","scope":7944,"src":"2610:22:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7927,"name":"address","nodeType":"ElementaryTypeName","src":"2610:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2609:24:36"},"returnParameters":{"id":7935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7944,"src":"2689:4:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7933,"name":"bool","nodeType":"ElementaryTypeName","src":"2689:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2688:6:36"},"scope":8065,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":8033,"nodeType":"FunctionDefinition","src":"3310:752:36","nodes":[],"body":{"id":8032,"nodeType":"Block","src":"3417:645:36","nodes":[],"statements":[{"assignments":[7955],"declarations":[{"constant":false,"id":7955,"mutability":"mutable","name":"activeCount","nameLocation":"3480:11:36","nodeType":"VariableDeclaration","scope":8032,"src":"3472:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7954,"name":"uint256","nodeType":"ElementaryTypeName","src":"3472:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7957,"initialValue":{"hexValue":"30","id":7956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3494:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3472:23:36"},{"body":{"id":7982,"nodeType":"Block","src":"3559:119:36","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"},"id":7976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":7969,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7828,"src":"3577:9:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_Status_$7823_$","typeString":"mapping(address => enum AddressWhitelist.Status)"}},"id":7973,"indexExpression":{"baseExpression":{"id":7970,"name":"whitelistIndices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7831,"src":"3587:16:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7972,"indexExpression":{"id":7971,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7959,"src":"3604:1:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3587:19:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3577:30:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":7974,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7823,"src":"3611:6:36","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$7823_$","typeString":"type(enum AddressWhitelist.Status)"}},"id":7975,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3618:2:36","memberName":"In","nodeType":"MemberAccess","referencedDeclaration":7821,"src":"3611:9:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"src":"3577:43:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7981,"nodeType":"IfStatement","src":"3573:95:36","trueBody":{"id":7980,"nodeType":"Block","src":"3622:46:36","statements":[{"expression":{"id":7978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3640:13:36","subExpression":{"id":7977,"name":"activeCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"3640:11:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7979,"nodeType":"ExpressionStatement","src":"3640:13:36"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7962,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7959,"src":"3525:1:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":7963,"name":"whitelistIndices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7831,"src":"3529:16:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3546:6:36","memberName":"length","nodeType":"MemberAccess","src":"3529:23:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3525:27:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7983,"initializationExpression":{"assignments":[7959],"declarations":[{"constant":false,"id":7959,"mutability":"mutable","name":"i","nameLocation":"3518:1:36","nodeType":"VariableDeclaration","scope":7983,"src":"3510:9:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7958,"name":"uint256","nodeType":"ElementaryTypeName","src":"3510:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7961,"initialValue":{"hexValue":"30","id":7960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3522:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3510:13:36"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":7967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3554:3:36","subExpression":{"id":7966,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7959,"src":"3554:1:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7968,"nodeType":"ExpressionStatement","src":"3554:3:36"},"nodeType":"ForStatement","src":"3505:173:36"},{"expression":{"id":7990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7984,"name":"activeWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7952,"src":"3718:15:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7988,"name":"activeCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"3750:11:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7987,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3736:13:36","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":7985,"name":"address","nodeType":"ElementaryTypeName","src":"3740:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7986,"nodeType":"ArrayTypeName","src":"3740:9:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":7989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3736:26:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"3718:44:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":7991,"nodeType":"ExpressionStatement","src":"3718:44:36"},{"expression":{"id":7994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7992,"name":"activeCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"3772:11:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":7993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3786:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3772:15:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7995,"nodeType":"ExpressionStatement","src":"3772:15:36"},{"body":{"id":8030,"nodeType":"Block","src":"3851:205:36","statements":[{"assignments":[8008],"declarations":[{"constant":false,"id":8008,"mutability":"mutable","name":"addr","nameLocation":"3873:4:36","nodeType":"VariableDeclaration","scope":8030,"src":"3865:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8007,"name":"address","nodeType":"ElementaryTypeName","src":"3865:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8012,"initialValue":{"baseExpression":{"id":8009,"name":"whitelistIndices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7831,"src":"3880:16:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8011,"indexExpression":{"id":8010,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7997,"src":"3897:1:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3880:19:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3865:34:36"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"},"id":8018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":8013,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7828,"src":"3917:9:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_enum$_Status_$7823_$","typeString":"mapping(address => enum AddressWhitelist.Status)"}},"id":8015,"indexExpression":{"id":8014,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8008,"src":"3927:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3917:15:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8016,"name":"Status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7823,"src":"3936:6:36","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Status_$7823_$","typeString":"type(enum AddressWhitelist.Status)"}},"id":8017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3943:2:36","memberName":"In","nodeType":"MemberAccess","referencedDeclaration":7821,"src":"3936:9:36","typeDescriptions":{"typeIdentifier":"t_enum$_Status_$7823","typeString":"enum AddressWhitelist.Status"}},"src":"3917:28:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8029,"nodeType":"IfStatement","src":"3913:133:36","trueBody":{"id":8028,"nodeType":"Block","src":"3947:99:36","statements":[{"expression":{"id":8023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8019,"name":"activeWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7952,"src":"3965:15:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":8021,"indexExpression":{"id":8020,"name":"activeCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"3981:11:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3965:28:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8022,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8008,"src":"3996:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3965:35:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8024,"nodeType":"ExpressionStatement","src":"3965:35:36"},{"expression":{"id":8026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4018:13:36","subExpression":{"id":8025,"name":"activeCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"4018:11:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8027,"nodeType":"ExpressionStatement","src":"4018:13:36"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8000,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7997,"src":"3817:1:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8001,"name":"whitelistIndices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7831,"src":"3821:16:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3838:6:36","memberName":"length","nodeType":"MemberAccess","src":"3821:23:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3817:27:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8031,"initializationExpression":{"assignments":[7997],"declarations":[{"constant":false,"id":7997,"mutability":"mutable","name":"i","nameLocation":"3810:1:36","nodeType":"VariableDeclaration","scope":8031,"src":"3802:9:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7996,"name":"uint256","nodeType":"ElementaryTypeName","src":"3802:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7999,"initialValue":{"hexValue":"30","id":7998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3814:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3802:13:36"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":8005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3846:3:36","subExpression":{"id":8004,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7997,"src":"3846:1:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8006,"nodeType":"ExpressionStatement","src":"3846:3:36"},"nodeType":"ForStatement","src":"3797:259:36"}]},"baseFunctions":[8353],"documentation":{"id":7945,"nodeType":"StructuredDocumentation","src":"2763:542:36","text":" @notice Gets all addresses that are currently included in the whitelist.\n @dev Note: This method skips over, but still iterates through addresses. It is possible for this call to run out\n of gas if a large number of addresses have been removed. To reduce the likelihood of this unlikely scenario, we\n can modify the implementation so that when addresses are removed, the last addresses in the array is moved to\n the empty index.\n @return activeWhitelist the list of addresses on the whitelist."},"functionSelector":"d01f63f5","implemented":true,"kind":"function","modifiers":[{"id":7949,"kind":"modifierInvocation","modifierName":{"id":7948,"name":"nonReentrantView","nameLocations":["3357:16:36"],"nodeType":"IdentifierPath","referencedDeclaration":7603,"src":"3357:16:36"},"nodeType":"ModifierInvocation","src":"3357:16:36"}],"name":"getWhitelist","nameLocation":"3319:12:36","overrides":{"id":7947,"nodeType":"OverrideSpecifier","overrides":[],"src":"3348:8:36"},"parameters":{"id":7946,"nodeType":"ParameterList","parameters":[],"src":"3331:2:36"},"returnParameters":{"id":7953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7952,"mutability":"mutable","name":"activeWhitelist","nameLocation":"3400:15:36","nodeType":"VariableDeclaration","scope":8033,"src":"3383:32:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7950,"name":"address","nodeType":"ElementaryTypeName","src":"3383:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7951,"nodeType":"ArrayTypeName","src":"3383:9:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3382:34:36"},"scope":8065,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":8042,"nodeType":"FunctionDefinition","src":"4260:95:36","nodes":[],"body":{"id":8041,"nodeType":"Block","src":"4327:28:36","nodes":[],"statements":[{"expression":{"hexValue":"74727565","id":8039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4344:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8038,"id":8040,"nodeType":"Return","src":"4337:11:36"}]},"baseFunctions":[8358],"documentation":{"id":8034,"nodeType":"StructuredDocumentation","src":"4068:187:36","text":" @notice Checks if the whitelist is enabled.\n @dev For this implementation, the whitelist is always considered enabled.\n @return enabled Always returns true."},"functionSelector":"184d69ab","implemented":true,"kind":"function","modifiers":[],"name":"isWhitelistEnabled","nameLocation":"4269:18:36","parameters":{"id":8035,"nodeType":"ParameterList","parameters":[],"src":"4287:2:36"},"returnParameters":{"id":8038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8037,"mutability":"mutable","name":"enabled","nameLocation":"4318:7:36","nodeType":"VariableDeclaration","scope":8042,"src":"4313:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8036,"name":"bool","nodeType":"ElementaryTypeName","src":"4313:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4312:14:36"},"scope":8065,"stateMutability":"pure","virtual":false,"visibility":"external"},{"id":8064,"nodeType":"FunctionDefinition","src":"4633:213:36","nodes":[],"body":{"id":8063,"nodeType":"Block","src":"4724:122:36","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8051,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8045,"src":"4741:11:36","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":8053,"name":"AddressWhitelistInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8359,"src":"4761:25:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressWhitelistInterface_$8359_$","typeString":"type(contract AddressWhitelistInterface)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_AddressWhitelistInterface_$8359_$","typeString":"type(contract AddressWhitelistInterface)"}],"id":8052,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4756:4:36","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4756:31:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_AddressWhitelistInterface_$8359","typeString":"type(contract AddressWhitelistInterface)"}},"id":8055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4788:11:36","memberName":"interfaceId","nodeType":"MemberAccess","src":"4756:43:36","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4741:58:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":8059,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8045,"src":"4827:11:36","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":8057,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4803:5:36","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AddressWhitelist_$8065_$","typeString":"type(contract super AddressWhitelist)"}},"id":8058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4809:17:36","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":3566,"src":"4803:23:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":8060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4803:36:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4741:98:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8050,"id":8062,"nodeType":"Return","src":"4734:105:36"}]},"baseFunctions":[3566],"documentation":{"id":8043,"nodeType":"StructuredDocumentation","src":"4361:267:36","text":" @notice Returns true if this contract implements the interface defined by interfaceId.\n @param interfaceId The interface identifier, as specified in ERC-165.\n @return True if the contract implements the interface defined by interfaceId."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"4642:17:36","overrides":{"id":8047,"nodeType":"OverrideSpecifier","overrides":[],"src":"4700:8:36"},"parameters":{"id":8046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8045,"mutability":"mutable","name":"interfaceId","nameLocation":"4667:11:36","nodeType":"VariableDeclaration","scope":8064,"src":"4660:18:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":8044,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4660:6:36","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"4659:20:36"},"returnParameters":{"id":8050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8049,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8064,"src":"4718:4:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8048,"name":"bool","nodeType":"ElementaryTypeName","src":"4718:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4717:6:36"},"scope":8065,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":7812,"name":"AddressWhitelistInterface","nameLocations":["833:25:36"],"nodeType":"IdentifierPath","referencedDeclaration":8359,"src":"833:25:36"},"id":7813,"nodeType":"InheritanceSpecifier","src":"833:25:36"},{"baseName":{"id":7814,"name":"Ownable","nameLocations":["860:7:36"],"nodeType":"IdentifierPath","referencedDeclaration":1979,"src":"860:7:36"},"id":7815,"nodeType":"InheritanceSpecifier","src":"860:7:36"},{"baseName":{"id":7816,"name":"Lockable","nameLocations":["869:8:36"],"nodeType":"IdentifierPath","referencedDeclaration":7645,"src":"869:8:36"},"id":7817,"nodeType":"InheritanceSpecifier","src":"869:8:36"},{"baseName":{"id":7818,"name":"ERC165","nameLocations":["879:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":3567,"src":"879:6:36"},"id":7819,"nodeType":"InheritanceSpecifier","src":"879:6:36"}],"canonicalName":"AddressWhitelist","contractDependencies":[],"contractKind":"contract","documentation":{"id":7811,"nodeType":"StructuredDocumentation","src":"692:111:36","text":" @title A contract to track a whitelist of addresses.\n @custom:security-contact bugs@umaproject.org"},"fullyImplemented":true,"linearizedBaseContracts":[8065,3567,3774,7645,1979,3345,8359],"name":"AddressWhitelist","nameLocation":"813:16:36","scope":8066,"usedErrors":[1845,1850],"usedEvents":[1856,7835,7839]}],"license":"AGPL-3.0-only"}},"src/common/implementation/DisabledAddressWhitelist.sol":{"id":37,"ast":{"absolutePath":"src/common/implementation/DisabledAddressWhitelist.sol","id":8153,"exportedSymbols":{"AddressWhitelistInterface":[8359],"DisabledAddressWhitelist":[8152],"ERC165":[3567]},"nodeType":"SourceUnit","src":"42:1645:37","nodes":[{"id":8067,"nodeType":"PragmaDirective","src":"42:23:37","nodes":[],"literals":["solidity","^","0.8",".4"]},{"id":8069,"nodeType":"ImportDirective","src":"67:78:37","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","nameLocation":"-1:-1:-1","scope":8153,"sourceUnit":3568,"symbolAliases":[{"foreign":{"id":8068,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3567,"src":"75:6:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":8071,"nodeType":"ImportDirective","src":"146:86:37","nodes":[],"absolutePath":"src/common/interfaces/AddressWhitelistInterface.sol","file":"../interfaces/AddressWhitelistInterface.sol","nameLocation":"-1:-1:-1","scope":8153,"sourceUnit":8360,"symbolAliases":[{"foreign":{"id":8070,"name":"AddressWhitelistInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8359,"src":"154:25:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":8152,"nodeType":"ContractDefinition","src":"472:1214:37","nodes":[{"id":8078,"nodeType":"ErrorDefinition","src":"549:44:37","nodes":[],"errorSelector":"3d1e9669","name":"CannotAddToDisabledAddressWhitelist","nameLocation":"555:35:37","parameters":{"id":8077,"nodeType":"ParameterList","parameters":[],"src":"590:2:37"}},{"id":8080,"nodeType":"ErrorDefinition","src":"598:49:37","nodes":[],"errorSelector":"d338e071","name":"CannotRemoveFromDisabledAddressWhitelist","nameLocation":"604:40:37","parameters":{"id":8079,"nodeType":"ParameterList","parameters":[],"src":"644:2:37"}},{"id":8089,"nodeType":"FunctionDefinition","src":"653:108:37","nodes":[],"body":{"id":8088,"nodeType":"Block","src":"700:61:37","nodes":[],"statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8085,"name":"CannotAddToDisabledAddressWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8078,"src":"717:35:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"717:37:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8087,"nodeType":"RevertStatement","src":"710:44:37"}]},"baseFunctions":[8335],"functionSelector":"e43252d7","implemented":true,"kind":"function","modifiers":[],"name":"addToWhitelist","nameLocation":"662:14:37","parameters":{"id":8083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8082,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8089,"src":"677:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8081,"name":"address","nodeType":"ElementaryTypeName","src":"677:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"676:9:37"},"returnParameters":{"id":8084,"nodeType":"ParameterList","parameters":[],"src":"700:0:37"},"scope":8152,"stateMutability":"pure","virtual":false,"visibility":"external"},{"id":8098,"nodeType":"FunctionDefinition","src":"767:118:37","nodes":[],"body":{"id":8097,"nodeType":"Block","src":"819:66:37","nodes":[],"statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8094,"name":"CannotRemoveFromDisabledAddressWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8080,"src":"836:40:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"836:42:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8096,"nodeType":"RevertStatement","src":"829:49:37"}]},"baseFunctions":[8340],"functionSelector":"8ab1d681","implemented":true,"kind":"function","modifiers":[],"name":"removeFromWhitelist","nameLocation":"776:19:37","parameters":{"id":8092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8091,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8098,"src":"796:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8090,"name":"address","nodeType":"ElementaryTypeName","src":"796:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"795:9:37"},"returnParameters":{"id":8093,"nodeType":"ParameterList","parameters":[],"src":"819:0:37"},"scope":8152,"stateMutability":"pure","virtual":false,"visibility":"external"},{"id":8108,"nodeType":"FunctionDefinition","src":"891:89:37","nodes":[],"body":{"id":8107,"nodeType":"Block","src":"952:28:37","nodes":[],"statements":[{"expression":{"hexValue":"74727565","id":8105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"969:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8104,"id":8106,"nodeType":"Return","src":"962:11:37"}]},"baseFunctions":[8347],"functionSelector":"3a3ab672","implemented":true,"kind":"function","modifiers":[],"name":"isOnWhitelist","nameLocation":"900:13:37","parameters":{"id":8101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8100,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8108,"src":"914:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8099,"name":"address","nodeType":"ElementaryTypeName","src":"914:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"913:9:37"},"returnParameters":{"id":8104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8103,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8108,"src":"946:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8102,"name":"bool","nodeType":"ElementaryTypeName","src":"946:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"945:6:37"},"scope":8152,"stateMutability":"pure","virtual":false,"visibility":"external"},{"id":8121,"nodeType":"FunctionDefinition","src":"986:105:37","nodes":[],"body":{"id":8120,"nodeType":"Block","src":"1051:40:37","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"30","id":8117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1082:1:37","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":8116,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1068:13:37","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":8114,"name":"address","nodeType":"ElementaryTypeName","src":"1072:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8115,"nodeType":"ArrayTypeName","src":"1072:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":8118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1068:16:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":8113,"id":8119,"nodeType":"Return","src":"1061:23:37"}]},"baseFunctions":[8353],"functionSelector":"d01f63f5","implemented":true,"kind":"function","modifiers":[],"name":"getWhitelist","nameLocation":"995:12:37","parameters":{"id":8109,"nodeType":"ParameterList","parameters":[],"src":"1007:2:37"},"returnParameters":{"id":8113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8112,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8121,"src":"1033:16:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":8110,"name":"address","nodeType":"ElementaryTypeName","src":"1033:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8111,"nodeType":"ArrayTypeName","src":"1033:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1032:18:37"},"scope":8152,"stateMutability":"pure","virtual":false,"visibility":"external"},{"id":8129,"nodeType":"FunctionDefinition","src":"1097:96:37","nodes":[],"body":{"id":8128,"nodeType":"Block","src":"1164:29:37","nodes":[],"statements":[{"expression":{"hexValue":"66616c7365","id":8126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1181:5:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8125,"id":8127,"nodeType":"Return","src":"1174:12:37"}]},"baseFunctions":[8358],"functionSelector":"184d69ab","implemented":true,"kind":"function","modifiers":[],"name":"isWhitelistEnabled","nameLocation":"1106:18:37","parameters":{"id":8122,"nodeType":"ParameterList","parameters":[],"src":"1124:2:37"},"returnParameters":{"id":8125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8124,"mutability":"mutable","name":"enabled","nameLocation":"1155:7:37","nodeType":"VariableDeclaration","scope":8129,"src":"1150:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8123,"name":"bool","nodeType":"ElementaryTypeName","src":"1150:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1149:14:37"},"scope":8152,"stateMutability":"pure","virtual":false,"visibility":"external"},{"id":8151,"nodeType":"FunctionDefinition","src":"1471:213:37","nodes":[],"body":{"id":8150,"nodeType":"Block","src":"1562:122:37","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8138,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8132,"src":"1579:11:37","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":8140,"name":"AddressWhitelistInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8359,"src":"1599:25:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressWhitelistInterface_$8359_$","typeString":"type(contract AddressWhitelistInterface)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_AddressWhitelistInterface_$8359_$","typeString":"type(contract AddressWhitelistInterface)"}],"id":8139,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1594:4:37","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1594:31:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_AddressWhitelistInterface_$8359","typeString":"type(contract AddressWhitelistInterface)"}},"id":8142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1626:11:37","memberName":"interfaceId","nodeType":"MemberAccess","src":"1594:43:37","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1579:58:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":8146,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8132,"src":"1665:11:37","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":8144,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1641:5:37","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_DisabledAddressWhitelist_$8152_$","typeString":"type(contract super DisabledAddressWhitelist)"}},"id":8145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1647:17:37","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":3566,"src":"1641:23:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":8147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1641:36:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1579:98:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8137,"id":8149,"nodeType":"Return","src":"1572:105:37"}]},"baseFunctions":[3566],"documentation":{"id":8130,"nodeType":"StructuredDocumentation","src":"1199:267:37","text":" @notice Returns true if this contract implements the interface defined by interfaceId.\n @param interfaceId The interface identifier, as specified in ERC-165.\n @return True if the contract implements the interface defined by interfaceId."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1480:17:37","overrides":{"id":8134,"nodeType":"OverrideSpecifier","overrides":[],"src":"1538:8:37"},"parameters":{"id":8133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8132,"mutability":"mutable","name":"interfaceId","nameLocation":"1505:11:37","nodeType":"VariableDeclaration","scope":8151,"src":"1498:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":8131,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1498:6:37","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1497:20:37"},"returnParameters":{"id":8137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8136,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8151,"src":"1556:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8135,"name":"bool","nodeType":"ElementaryTypeName","src":"1556:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1555:6:37"},"scope":8152,"stateMutability":"view","virtual":true,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":8073,"name":"AddressWhitelistInterface","nameLocations":["509:25:37"],"nodeType":"IdentifierPath","referencedDeclaration":8359,"src":"509:25:37"},"id":8074,"nodeType":"InheritanceSpecifier","src":"509:25:37"},{"baseName":{"id":8075,"name":"ERC165","nameLocations":["536:6:37"],"nodeType":"IdentifierPath","referencedDeclaration":3567,"src":"536:6:37"},"id":8076,"nodeType":"InheritanceSpecifier","src":"536:6:37"}],"canonicalName":"DisabledAddressWhitelist","contractDependencies":[],"contractKind":"contract","documentation":{"id":8072,"nodeType":"StructuredDocumentation","src":"234:237:37","text":" @notice This contract is an implementation of AddressWhitelistInterface where the whitelist is permanently disabled.\n @dev All addresses are considered to be on this whitelist.\n @custom:security-contact bugs@umaproject.org"},"fullyImplemented":true,"linearizedBaseContracts":[8152,3567,3774,8359],"name":"DisabledAddressWhitelist","nameLocation":"481:24:37","scope":8153,"usedErrors":[8078,8080],"usedEvents":[]}],"license":"AGPL-3.0-only"}},"src/common/implementation/LockableUpgradeable.sol":{"id":38,"ast":{"absolutePath":"src/common/implementation/LockableUpgradeable.sol","id":8245,"exportedSymbols":{"Initializable":[1480],"LockableUpgradeable":[8244]},"nodeType":"SourceUnit","src":"261:3972:38","nodes":[{"id":8154,"nodeType":"PragmaDirective","src":"261:24:38","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":8156,"nodeType":"ImportDirective","src":"287:96:38","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":8245,"sourceUnit":1481,"symbolAliases":[{"foreign":{"id":8155,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1480,"src":"295:13:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":8244,"nodeType":"ContractDefinition","src":"723:3509:38","nodes":[{"id":8161,"nodeType":"ErrorDefinition","src":"784:37:38","nodes":[],"errorSelector":"3ee5aeb5","name":"ReentrancyGuardReentrantCall","nameLocation":"790:28:38","parameters":{"id":8160,"nodeType":"ParameterList","parameters":[],"src":"818:2:38"}},{"id":8163,"nodeType":"VariableDeclaration","src":"827:24:38","nodes":[],"constant":false,"mutability":"mutable","name":"_notEntered","nameLocation":"840:11:38","scope":8244,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8162,"name":"bool","nodeType":"ElementaryTypeName","src":"827:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"id":8174,"nodeType":"FunctionDefinition","src":"934:489:38","nodes":[],"body":{"id":8173,"nodeType":"Block","src":"998:425:38","nodes":[],"statements":[{"expression":{"id":8171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8169,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8163,"src":"1398:11:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":8170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1412:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1398:18:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8172,"nodeType":"ExpressionStatement","src":"1398:18:38"}]},"documentation":{"id":8164,"nodeType":"StructuredDocumentation","src":"858:71:38","text":" @notice initializes the LockableUpgradeable contract"},"implemented":true,"kind":"function","modifiers":[{"id":8167,"kind":"modifierInvocation","modifierName":{"id":8166,"name":"onlyInitializing","nameLocations":["981:16:38"],"nodeType":"IdentifierPath","referencedDeclaration":1375,"src":"981:16:38"},"nodeType":"ModifierInvocation","src":"981:16:38"}],"name":"__LockableUpgradeable_init","nameLocation":"943:26:38","parameters":{"id":8165,"nodeType":"ParameterList","parameters":[],"src":"969:2:38"},"returnParameters":{"id":8168,"nodeType":"ParameterList","parameters":[],"src":"998:0:38"},"scope":8244,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":8188,"nodeType":"ModifierDefinition","src":"1807:128:38","nodes":[],"body":{"id":8187,"nodeType":"Block","src":"1831:104:38","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8177,"name":"_preEntranceCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8206,"src":"1841:17:38","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":8178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1841:19:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8179,"nodeType":"ExpressionStatement","src":"1841:19:38"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8180,"name":"_preEntranceSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8214,"src":"1870:15:38","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1870:17:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8182,"nodeType":"ExpressionStatement","src":"1870:17:38"},{"id":8183,"nodeType":"PlaceholderStatement","src":"1897:1:38"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8184,"name":"_postEntranceReset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8222,"src":"1908:18:38","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1908:20:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8186,"nodeType":"ExpressionStatement","src":"1908:20:38"}]},"documentation":{"id":8175,"nodeType":"StructuredDocumentation","src":"1429:373:38","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\n prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\n function that does the actual state modification."},"name":"nonReentrant","nameLocation":"1816:12:38","parameters":{"id":8176,"nodeType":"ParameterList","parameters":[],"src":"1828:2:38"},"virtual":false,"visibility":"internal"},{"id":8196,"nodeType":"ModifierDefinition","src":"2089:75:38","nodes":[],"body":{"id":8195,"nodeType":"Block","src":"2117:47:38","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8191,"name":"_preEntranceCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8206,"src":"2127:17:38","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":8192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2127:19:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8193,"nodeType":"ExpressionStatement","src":"2127:19:38"},{"id":8194,"nodeType":"PlaceholderStatement","src":"2156:1:38"}]},"documentation":{"id":8189,"nodeType":"StructuredDocumentation","src":"1941:143:38","text":" @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method."},"name":"nonReentrantView","nameLocation":"2098:16:38","parameters":{"id":8190,"nodeType":"ParameterList","parameters":[],"src":"2114:2:38"},"virtual":false,"visibility":"internal"},{"id":8206,"nodeType":"FunctionDefinition","src":"2667:183:38","nodes":[],"body":{"id":8205,"nodeType":"Block","src":"2710:140:38","nodes":[],"statements":[{"expression":{"arguments":[{"id":8200,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8163,"src":"2799:11:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":8201,"name":"ReentrancyGuardReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8161,"src":"2812:28:38","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2812:30:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":8199,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2791:7:38","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":8203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2791:52:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8204,"nodeType":"ExpressionStatement","src":"2791:52:38"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_preEntranceCheck","nameLocation":"2676:17:38","parameters":{"id":8197,"nodeType":"ParameterList","parameters":[],"src":"2693:2:38"},"returnParameters":{"id":8198,"nodeType":"ParameterList","parameters":[],"src":"2710:0:38"},"scope":8244,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":8214,"nodeType":"FunctionDefinition","src":"2856:136:38","nodes":[],"body":{"id":8213,"nodeType":"Block","src":"2892:100:38","nodes":[],"statements":[{"expression":{"id":8211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8209,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8163,"src":"2966:11:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":8210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2980:5:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2966:19:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8212,"nodeType":"ExpressionStatement","src":"2966:19:38"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_preEntranceSet","nameLocation":"2865:15:38","parameters":{"id":8207,"nodeType":"ParameterList","parameters":[],"src":"2880:2:38"},"returnParameters":{"id":8208,"nodeType":"ParameterList","parameters":[],"src":"2892:0:38"},"scope":8244,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":8222,"nodeType":"FunctionDefinition","src":"2998:206:38","nodes":[],"body":{"id":8221,"nodeType":"Block","src":"3037:167:38","nodes":[],"statements":[{"expression":{"id":8219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8217,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8163,"src":"3179:11:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":8218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3193:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3179:18:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8220,"nodeType":"ExpressionStatement","src":"3179:18:38"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_postEntranceReset","nameLocation":"3007:18:38","parameters":{"id":8215,"nodeType":"ParameterList","parameters":[],"src":"3025:2:38"},"returnParameters":{"id":8216,"nodeType":"ParameterList","parameters":[],"src":"3037:0:38"},"scope":8244,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":8230,"nodeType":"FunctionDefinition","src":"3603:84:38","nodes":[],"body":{"id":8229,"nodeType":"Block","src":"3652:35:38","nodes":[],"statements":[{"expression":{"id":8227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8225,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8163,"src":"3662:11:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":8226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3676:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3662:18:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8228,"nodeType":"ExpressionStatement","src":"3662:18:38"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_startReentrantGuardDisabled","nameLocation":"3612:28:38","parameters":{"id":8223,"nodeType":"ParameterList","parameters":[],"src":"3640:2:38"},"returnParameters":{"id":8224,"nodeType":"ParameterList","parameters":[],"src":"3652:0:38"},"scope":8244,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":8238,"nodeType":"FunctionDefinition","src":"3693:83:38","nodes":[],"body":{"id":8237,"nodeType":"Block","src":"3740:36:38","nodes":[],"statements":[{"expression":{"id":8235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8233,"name":"_notEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8163,"src":"3750:11:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":8234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3764:5:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3750:19:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8236,"nodeType":"ExpressionStatement","src":"3750:19:38"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_endReentrantGuardDisabled","nameLocation":"3702:26:38","parameters":{"id":8231,"nodeType":"ParameterList","parameters":[],"src":"3728:2:38"},"returnParameters":{"id":8232,"nodeType":"ParameterList","parameters":[],"src":"3740:0:38"},"scope":8244,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":8243,"nodeType":"VariableDeclaration","src":"4204:25:38","nodes":[],"constant":false,"documentation":{"id":8239,"nodeType":"StructuredDocumentation","src":"3782:417:38","text":" @dev Reserve storage slots for future versions of this base contract to add state variables without affecting the\n storage layout of child contracts. Decrement the size of __gap whenever state variables are added. This is at the\n bottom of contract to make sure its always at the end of storage.\n See https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable#storage-gaps"},"mutability":"mutable","name":"__gap","nameLocation":"4224:5:38","scope":8244,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":8240,"name":"uint256","nodeType":"ElementaryTypeName","src":"4204:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8242,"length":{"hexValue":"3439","id":8241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4212:2:38","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"4204:11:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":8158,"name":"Initializable","nameLocations":["764:13:38"],"nodeType":"IdentifierPath","referencedDeclaration":1480,"src":"764:13:38"},"id":8159,"nodeType":"InheritanceSpecifier","src":"764:13:38"}],"canonicalName":"LockableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":8157,"nodeType":"StructuredDocumentation","src":"385:337:38","text":" @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\n is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\n and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol."},"fullyImplemented":true,"linearizedBaseContracts":[8244,1480],"name":"LockableUpgradeable","nameLocation":"741:19:38","scope":8245,"usedErrors":[1229,1232,8161],"usedEvents":[1237]}],"license":"AGPL-3.0-only"}},"src/common/implementation/MultiCaller.sol":{"id":39,"ast":{"absolutePath":"src/common/implementation/MultiCaller.sol","id":8329,"exportedSymbols":{"MultiCaller":[8328]},"nodeType":"SourceUnit","src":"240:2118:39","nodes":[{"id":8246,"nodeType":"PragmaDirective","src":"240:23:39","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":8328,"nodeType":"ContractDefinition","src":"664:1693:39","nodes":[{"id":8322,"nodeType":"FunctionDefinition","src":"700:1201:39","nodes":[],"body":{"id":8321,"nodeType":"Block","src":"784:1117:39","nodes":[],"statements":[{"expression":{"id":8263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8256,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8254,"src":"794:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":8260,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8250,"src":"816:4:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":8261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"821:6:39","memberName":"length","nodeType":"MemberAccess","src":"816:11:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8259,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"804:11:39","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory[] memory)"},"typeName":{"baseType":{"id":8257,"name":"bytes","nodeType":"ElementaryTypeName","src":"808:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":8258,"nodeType":"ArrayTypeName","src":"808:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":8262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"804:24:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"src":"794:34:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":8264,"nodeType":"ExpressionStatement","src":"794:34:39"},{"body":{"id":8319,"nodeType":"Block","src":"880:1015:39","statements":[{"assignments":[8277,8279],"declarations":[{"constant":false,"id":8277,"mutability":"mutable","name":"success","nameLocation":"1463:7:39","nodeType":"VariableDeclaration","scope":8319,"src":"1458:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8276,"name":"bool","nodeType":"ElementaryTypeName","src":"1458:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8279,"mutability":"mutable","name":"result","nameLocation":"1485:6:39","nodeType":"VariableDeclaration","scope":8319,"src":"1472:19:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8278,"name":"bytes","nodeType":"ElementaryTypeName","src":"1472:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"documentation":"@custom:oz-upgrades-unsafe-allow delegatecall","id":8289,"initialValue":{"arguments":[{"baseExpression":{"id":8285,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8250,"src":"1522:4:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":8287,"indexExpression":{"id":8286,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8266,"src":"1527:1:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1522:7:39","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"id":8282,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1503:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_MultiCaller_$8328","typeString":"contract MultiCaller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MultiCaller_$8328","typeString":"contract MultiCaller"}],"id":8281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1495:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8280,"name":"address","nodeType":"ElementaryTypeName","src":"1495:7:39","typeDescriptions":{}}},"id":8283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1495:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1509:12:39","memberName":"delegatecall","nodeType":"MemberAccess","src":"1495:26:39","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":8288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1495:35:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1457:73:39"},{"condition":{"id":8291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1549:8:39","subExpression":{"id":8290,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8277,"src":"1550:7:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8312,"nodeType":"IfStatement","src":"1545:306:39","trueBody":{"id":8311,"nodeType":"Block","src":"1559:292:39","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8292,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8279,"src":"1661:6:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1668:6:39","memberName":"length","nodeType":"MemberAccess","src":"1661:13:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3638","id":8294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1677:2:39","typeDescriptions":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"value":"68"},"src":"1661:18:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8299,"nodeType":"IfStatement","src":"1657:32:39","trueBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8296,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1681:6:39","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$__$returns$__$","typeString":"function () pure"}},"id":8297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1681:8:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8298,"nodeType":"ExpressionStatement","src":"1681:8:39"}},{"AST":{"nativeSrc":"1716:67:39","nodeType":"YulBlock","src":"1716:67:39","statements":[{"nativeSrc":"1738:27:39","nodeType":"YulAssignment","src":"1738:27:39","value":{"arguments":[{"name":"result","nativeSrc":"1752:6:39","nodeType":"YulIdentifier","src":"1752:6:39"},{"kind":"number","nativeSrc":"1760:4:39","nodeType":"YulLiteral","src":"1760:4:39","type":"","value":"0x04"}],"functionName":{"name":"add","nativeSrc":"1748:3:39","nodeType":"YulIdentifier","src":"1748:3:39"},"nativeSrc":"1748:17:39","nodeType":"YulFunctionCall","src":"1748:17:39"},"variableNames":[{"name":"result","nativeSrc":"1738:6:39","nodeType":"YulIdentifier","src":"1738:6:39"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":8279,"isOffset":false,"isSlot":false,"src":"1738:6:39","valueSize":1},{"declaration":8279,"isOffset":false,"isSlot":false,"src":"1752:6:39","valueSize":1}],"id":8300,"nodeType":"InlineAssembly","src":"1707:76:39"},{"expression":{"arguments":[{"arguments":[{"id":8304,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8279,"src":"1818:6:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":8306,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1827:6:39","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":8305,"name":"string","nodeType":"ElementaryTypeName","src":"1827:6:39","typeDescriptions":{}}}],"id":8307,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1826:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":8302,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1807:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8303,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1811:6:39","memberName":"decode","nodeType":"MemberAccess","src":"1807:10:39","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":8308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1807:28:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":8301,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1800:6:39","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":8309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1800:36:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8310,"nodeType":"ExpressionStatement","src":"1800:36:39"}]}},{"expression":{"id":8317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8313,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8254,"src":"1865:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":8315,"indexExpression":{"id":8314,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8266,"src":"1873:1:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1865:10:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8316,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8279,"src":"1878:6:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"1865:19:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8318,"nodeType":"ExpressionStatement","src":"1865:19:39"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8269,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8266,"src":"858:1:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8270,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8250,"src":"862:4:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":8271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"867:6:39","memberName":"length","nodeType":"MemberAccess","src":"862:11:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"858:15:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8320,"initializationExpression":{"assignments":[8266],"declarations":[{"constant":false,"id":8266,"mutability":"mutable","name":"i","nameLocation":"851:1:39","nodeType":"VariableDeclaration","scope":8320,"src":"843:9:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8265,"name":"uint256","nodeType":"ElementaryTypeName","src":"843:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8268,"initialValue":{"hexValue":"30","id":8267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"855:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"843:13:39"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":8274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"875:3:39","subExpression":{"id":8273,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8266,"src":"875:1:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8275,"nodeType":"ExpressionStatement","src":"875:3:39"},"nodeType":"ForStatement","src":"838:1057:39"}]},"functionSelector":"ac9650d8","implemented":true,"kind":"function","modifiers":[],"name":"multicall","nameLocation":"709:9:39","parameters":{"id":8251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8250,"mutability":"mutable","name":"data","nameLocation":"736:4:39","nodeType":"VariableDeclaration","scope":8322,"src":"719:21:39","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":8248,"name":"bytes","nodeType":"ElementaryTypeName","src":"719:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":8249,"nodeType":"ArrayTypeName","src":"719:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"718:23:39"},"returnParameters":{"id":8255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8254,"mutability":"mutable","name":"results","nameLocation":"775:7:39","nodeType":"VariableDeclaration","scope":8322,"src":"760:22:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":8252,"name":"bytes","nodeType":"ElementaryTypeName","src":"760:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":8253,"nodeType":"ArrayTypeName","src":"760:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"759:24:39"},"scope":8328,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8327,"nodeType":"VariableDeclaration","src":"2329:25:39","nodes":[],"constant":false,"documentation":{"id":8323,"nodeType":"StructuredDocumentation","src":"1907:417:39","text":" @dev Reserve storage slots for future versions of this base contract to add state variables without affecting the\n storage layout of child contracts. Decrement the size of __gap whenever state variables are added. This is at the\n bottom of contract to make sure its always at the end of storage.\n See https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable#storage-gaps"},"mutability":"mutable","name":"__gap","nameLocation":"2349:5:39","scope":8328,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":8324,"name":"uint256","nodeType":"ElementaryTypeName","src":"2329:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8326,"length":{"hexValue":"3530","id":8325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2337:2:39","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"2329:11:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"abstract":true,"baseContracts":[],"canonicalName":"MultiCaller","contractDependencies":[],"contractKind":"contract","documentation":{"id":8247,"nodeType":"StructuredDocumentation","src":"265:398:39","text":" @title MultiCaller\n @notice Logic is 100% copied from \"@uma/core/contracts/common/implementation/MultiCaller.sol\" but a\n comment is added to clarify why we allow delegatecall() in this contract, which is typically unsafe for use in\n upgradeable implementation contracts.\n @dev See https://docs.openzeppelin.com/upgrades-plugins/1.x/faq#delegatecall-selfdestruct for more details."},"fullyImplemented":true,"linearizedBaseContracts":[8328],"name":"MultiCaller","nameLocation":"682:11:39","scope":8329,"usedErrors":[],"usedEvents":[]}],"license":"AGPL-3.0-only"}},"src/common/interfaces/AddressWhitelistInterface.sol":{"id":40,"ast":{"absolutePath":"src/common/interfaces/AddressWhitelistInterface.sol","id":8360,"exportedSymbols":{"AddressWhitelistInterface":[8359]},"nodeType":"SourceUnit","src":"259:401:40","nodes":[{"id":8330,"nodeType":"PragmaDirective","src":"259:23:40","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":8359,"nodeType":"ContractDefinition","src":"284:375:40","nodes":[{"id":8335,"nodeType":"FunctionDefinition","src":"326:53:40","nodes":[],"functionSelector":"e43252d7","implemented":false,"kind":"function","modifiers":[],"name":"addToWhitelist","nameLocation":"335:14:40","parameters":{"id":8333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8332,"mutability":"mutable","name":"newElement","nameLocation":"358:10:40","nodeType":"VariableDeclaration","scope":8335,"src":"350:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8331,"name":"address","nodeType":"ElementaryTypeName","src":"350:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"349:20:40"},"returnParameters":{"id":8334,"nodeType":"ParameterList","parameters":[],"src":"378:0:40"},"scope":8359,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8340,"nodeType":"FunctionDefinition","src":"385:58:40","nodes":[],"functionSelector":"8ab1d681","implemented":false,"kind":"function","modifiers":[],"name":"removeFromWhitelist","nameLocation":"394:19:40","parameters":{"id":8338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8337,"mutability":"mutable","name":"newElement","nameLocation":"422:10:40","nodeType":"VariableDeclaration","scope":8340,"src":"414:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8336,"name":"address","nodeType":"ElementaryTypeName","src":"414:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"413:20:40"},"returnParameters":{"id":8339,"nodeType":"ParameterList","parameters":[],"src":"442:0:40"},"scope":8359,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8347,"nodeType":"FunctionDefinition","src":"449:72:40","nodes":[],"functionSelector":"3a3ab672","implemented":false,"kind":"function","modifiers":[],"name":"isOnWhitelist","nameLocation":"458:13:40","parameters":{"id":8343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8342,"mutability":"mutable","name":"newElement","nameLocation":"480:10:40","nodeType":"VariableDeclaration","scope":8347,"src":"472:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8341,"name":"address","nodeType":"ElementaryTypeName","src":"472:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"471:20:40"},"returnParameters":{"id":8346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8345,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8347,"src":"515:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8344,"name":"bool","nodeType":"ElementaryTypeName","src":"515:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"514:6:40"},"scope":8359,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":8353,"nodeType":"FunctionDefinition","src":"527:65:40","nodes":[],"functionSelector":"d01f63f5","implemented":false,"kind":"function","modifiers":[],"name":"getWhitelist","nameLocation":"536:12:40","parameters":{"id":8348,"nodeType":"ParameterList","parameters":[],"src":"548:2:40"},"returnParameters":{"id":8352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8353,"src":"574:16:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":8349,"name":"address","nodeType":"ElementaryTypeName","src":"574:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8350,"nodeType":"ArrayTypeName","src":"574:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"573:18:40"},"scope":8359,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":8358,"nodeType":"FunctionDefinition","src":"598:59:40","nodes":[],"functionSelector":"184d69ab","implemented":false,"kind":"function","modifiers":[],"name":"isWhitelistEnabled","nameLocation":"607:18:40","parameters":{"id":8354,"nodeType":"ParameterList","parameters":[],"src":"625:2:40"},"returnParameters":{"id":8357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8356,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8358,"src":"651:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8355,"name":"bool","nodeType":"ElementaryTypeName","src":"651:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"650:6:40"},"scope":8359,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"AddressWhitelistInterface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[8359],"name":"AddressWhitelistInterface","nameLocation":"294:25:40","scope":8360,"usedErrors":[],"usedEvents":[]}],"license":"AGPL-3.0-only"}},"src/common/interfaces/FixedPointInterface.sol":{"id":41,"ast":{"absolutePath":"src/common/interfaces/FixedPointInterface.sol","id":8367,"exportedSymbols":{"FixedPointInterface":[8366]},"nodeType":"SourceUnit","src":"445:177:41","nodes":[{"id":8361,"nodeType":"PragmaDirective","src":"445:23:41","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":8366,"nodeType":"ContractDefinition","src":"534:87:41","nodes":[{"id":8365,"nodeType":"StructDefinition","src":"570:49:41","nodes":[],"canonicalName":"FixedPointInterface.Unsigned","members":[{"constant":false,"id":8364,"mutability":"mutable","name":"rawValue","nameLocation":"604:8:41","nodeType":"VariableDeclaration","scope":8365,"src":"596:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8363,"name":"uint256","nodeType":"ElementaryTypeName","src":"596:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Unsigned","nameLocation":"577:8:41","scope":8366,"visibility":"public"}],"abstract":false,"baseContracts":[],"canonicalName":"FixedPointInterface","contractDependencies":[],"contractKind":"interface","documentation":{"id":8362,"nodeType":"StructuredDocumentation","src":"470:63:41","text":" @title Interface for fixed point arithmetic on uints"},"fullyImplemented":true,"linearizedBaseContracts":[8366],"name":"FixedPointInterface","nameLocation":"544:19:41","scope":8367,"usedErrors":[],"usedEvents":[]}],"license":"AGPL-3.0-only"}},"src/data-verification-mechanism/interfaces/StoreInterface.sol":{"id":42,"ast":{"absolutePath":"src/data-verification-mechanism/interfaces/StoreInterface.sol","id":8414,"exportedSymbols":{"FixedPointInterface":[8366],"IERC20":[2591],"StoreInterface":[8413]},"nodeType":"SourceUnit","src":"346:2131:42","nodes":[{"id":8368,"nodeType":"PragmaDirective","src":"346:23:42","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":8370,"nodeType":"ImportDirective","src":"371:70:42","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":8414,"sourceUnit":2592,"symbolAliases":[{"foreign":{"id":8369,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2591,"src":"379:6:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":8372,"nodeType":"ImportDirective","src":"442:84:42","nodes":[],"absolutePath":"src/common/interfaces/FixedPointInterface.sol","file":"../../common/interfaces/FixedPointInterface.sol","nameLocation":"-1:-1:-1","scope":8414,"sourceUnit":8367,"symbolAliases":[{"foreign":{"id":8371,"name":"FixedPointInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8366,"src":"450:19:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":8413,"nodeType":"ContractDefinition","src":"636:1840:42","nodes":[{"id":8377,"nodeType":"FunctionDefinition","src":"802:42:42","nodes":[],"documentation":{"id":8374,"nodeType":"StructuredDocumentation","src":"667:130:42","text":" @notice Pays Oracle fees in ETH to the store.\n @dev To be used by contracts whose margin currency is ETH."},"functionSelector":"cd3a9b24","implemented":false,"kind":"function","modifiers":[],"name":"payOracleFees","nameLocation":"811:13:42","parameters":{"id":8375,"nodeType":"ParameterList","parameters":[],"src":"824:2:42"},"returnParameters":{"id":8376,"nodeType":"ParameterList","parameters":[],"src":"843:0:42"},"scope":8413,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":8386,"nodeType":"FunctionDefinition","src":"1206:105:42","nodes":[],"documentation":{"id":8378,"nodeType":"StructuredDocumentation","src":"850:351:42","text":" @notice Pays oracle fees in the margin currency, erc20Address, to the store.\n @dev To be used if the margin currency is an ERC20 token rather than ETH.\n @param erc20Address address of the ERC20 token used to pay the fee.\n @param amount number of tokens to transfer. An approval for at least this amount must exist."},"functionSelector":"8659d232","implemented":false,"kind":"function","modifiers":[],"name":"payOracleFeesErc20","nameLocation":"1215:18:42","parameters":{"id":8384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8380,"mutability":"mutable","name":"erc20Address","nameLocation":"1242:12:42","nodeType":"VariableDeclaration","scope":8386,"src":"1234:20:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8379,"name":"address","nodeType":"ElementaryTypeName","src":"1234:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8383,"mutability":"mutable","name":"amount","nameLocation":"1294:6:42","nodeType":"VariableDeclaration","scope":8386,"src":"1256:44:42","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Unsigned_$8365_calldata_ptr","typeString":"struct FixedPointInterface.Unsigned"},"typeName":{"id":8382,"nodeType":"UserDefinedTypeName","pathNode":{"id":8381,"name":"FixedPointInterface.Unsigned","nameLocations":["1256:19:42","1276:8:42"],"nodeType":"IdentifierPath","referencedDeclaration":8365,"src":"1256:28:42"},"referencedDeclaration":8365,"src":"1256:28:42","typeDescriptions":{"typeIdentifier":"t_struct$_Unsigned_$8365_storage_ptr","typeString":"struct FixedPointInterface.Unsigned"}},"visibility":"internal"}],"src":"1233:68:42"},"returnParameters":{"id":8385,"nodeType":"ParameterList","parameters":[],"src":"1310:0:42"},"scope":8413,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8403,"nodeType":"FunctionDefinition","src":"1919:250:42","nodes":[],"documentation":{"id":8387,"nodeType":"StructuredDocumentation","src":"1317:597:42","text":" @notice Computes the regular oracle fees that a contract should pay for a period.\n @param startTime defines the beginning time from which the fee is paid.\n @param endTime end time until which the fee is paid.\n @param pfc \"profit from corruption\", or the maximum amount of margin currency that a\n token sponsor could extract from the contract through corrupting the price feed in their favor.\n @return regularFee amount owed for the duration from start to end time for the given pfc.\n @return latePenalty for paying the fee after the deadline."},"functionSelector":"74201feb","implemented":false,"kind":"function","modifiers":[],"name":"computeRegularFee","nameLocation":"1928:17:42","parameters":{"id":8395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8389,"mutability":"mutable","name":"startTime","nameLocation":"1954:9:42","nodeType":"VariableDeclaration","scope":8403,"src":"1946:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8388,"name":"uint256","nodeType":"ElementaryTypeName","src":"1946:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8391,"mutability":"mutable","name":"endTime","nameLocation":"1973:7:42","nodeType":"VariableDeclaration","scope":8403,"src":"1965:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8390,"name":"uint256","nodeType":"ElementaryTypeName","src":"1965:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8394,"mutability":"mutable","name":"pfc","nameLocation":"2020:3:42","nodeType":"VariableDeclaration","scope":8403,"src":"1982:41:42","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Unsigned_$8365_calldata_ptr","typeString":"struct FixedPointInterface.Unsigned"},"typeName":{"id":8393,"nodeType":"UserDefinedTypeName","pathNode":{"id":8392,"name":"FixedPointInterface.Unsigned","nameLocations":["1982:19:42","2002:8:42"],"nodeType":"IdentifierPath","referencedDeclaration":8365,"src":"1982:28:42"},"referencedDeclaration":8365,"src":"1982:28:42","typeDescriptions":{"typeIdentifier":"t_struct$_Unsigned_$8365_storage_ptr","typeString":"struct FixedPointInterface.Unsigned"}},"visibility":"internal"}],"src":"1945:79:42"},"returnParameters":{"id":8402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8398,"mutability":"mutable","name":"regularFee","nameLocation":"2108:10:42","nodeType":"VariableDeclaration","scope":8403,"src":"2072:46:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Unsigned_$8365_memory_ptr","typeString":"struct FixedPointInterface.Unsigned"},"typeName":{"id":8397,"nodeType":"UserDefinedTypeName","pathNode":{"id":8396,"name":"FixedPointInterface.Unsigned","nameLocations":["2072:19:42","2092:8:42"],"nodeType":"IdentifierPath","referencedDeclaration":8365,"src":"2072:28:42"},"referencedDeclaration":8365,"src":"2072:28:42","typeDescriptions":{"typeIdentifier":"t_struct$_Unsigned_$8365_storage_ptr","typeString":"struct FixedPointInterface.Unsigned"}},"visibility":"internal"},{"constant":false,"id":8401,"mutability":"mutable","name":"latePenalty","nameLocation":"2156:11:42","nodeType":"VariableDeclaration","scope":8403,"src":"2120:47:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Unsigned_$8365_memory_ptr","typeString":"struct FixedPointInterface.Unsigned"},"typeName":{"id":8400,"nodeType":"UserDefinedTypeName","pathNode":{"id":8399,"name":"FixedPointInterface.Unsigned","nameLocations":["2120:19:42","2140:8:42"],"nodeType":"IdentifierPath","referencedDeclaration":8365,"src":"2120:28:42"},"referencedDeclaration":8365,"src":"2120:28:42","typeDescriptions":{"typeIdentifier":"t_struct$_Unsigned_$8365_storage_ptr","typeString":"struct FixedPointInterface.Unsigned"}},"visibility":"internal"}],"src":"2071:97:42"},"scope":8413,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":8412,"nodeType":"FunctionDefinition","src":"2371:103:42","nodes":[],"documentation":{"id":8404,"nodeType":"StructuredDocumentation","src":"2175:191:42","text":" @notice Computes the final oracle fees that a contract should pay at settlement.\n @param currency token used to pay the final fee.\n @return finalFee amount due."},"functionSelector":"5b97aadd","implemented":false,"kind":"function","modifiers":[],"name":"computeFinalFee","nameLocation":"2380:15:42","parameters":{"id":8407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8406,"mutability":"mutable","name":"currency","nameLocation":"2404:8:42","nodeType":"VariableDeclaration","scope":8412,"src":"2396:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8405,"name":"address","nodeType":"ElementaryTypeName","src":"2396:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2395:18:42"},"returnParameters":{"id":8411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8412,"src":"2437:35:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Unsigned_$8365_memory_ptr","typeString":"struct FixedPointInterface.Unsigned"},"typeName":{"id":8409,"nodeType":"UserDefinedTypeName","pathNode":{"id":8408,"name":"FixedPointInterface.Unsigned","nameLocations":["2437:19:42","2457:8:42"],"nodeType":"IdentifierPath","referencedDeclaration":8365,"src":"2437:28:42"},"referencedDeclaration":8365,"src":"2437:28:42","typeDescriptions":{"typeIdentifier":"t_struct$_Unsigned_$8365_storage_ptr","typeString":"struct FixedPointInterface.Unsigned"}},"visibility":"internal"}],"src":"2436:37:42"},"scope":8413,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"StoreInterface","contractDependencies":[],"contractKind":"interface","documentation":{"id":8373,"nodeType":"StructuredDocumentation","src":"528:107:42","text":" @title Interface that allows financial contracts to pay oracle fees for their use of the system."},"fullyImplemented":false,"linearizedBaseContracts":[8413],"name":"StoreInterface","nameLocation":"646:14:42","scope":8414,"usedErrors":[],"usedEvents":[]}],"license":"AGPL-3.0-only"}},"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol":{"id":43,"ast":{"absolutePath":"src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol","id":9346,"exportedSymbols":{"AddressWhitelistInterface":[8359],"ERC165Checker":[3762],"IERC20":[2591],"ManagedOptimisticOracleV2":[9345],"ManagedOptimisticOracleV2Interface":[11228],"MultiCaller":[8328],"OptimisticOracleV2":[11127]},"nodeType":"SourceUnit","src":"42:22013:43","nodes":[{"id":8415,"nodeType":"PragmaDirective","src":"42:24:43","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":8417,"nodeType":"ImportDirective","src":"68:92:43","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol","nameLocation":"-1:-1:-1","scope":9346,"sourceUnit":3763,"symbolAliases":[{"foreign":{"id":8416,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3762,"src":"76:13:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":8419,"nodeType":"ImportDirective","src":"161:70:43","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":9346,"sourceUnit":2592,"symbolAliases":[{"foreign":{"id":8418,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2591,"src":"169:6:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":8421,"nodeType":"ImportDirective","src":"233:96:43","nodes":[],"absolutePath":"src/common/interfaces/AddressWhitelistInterface.sol","file":"../../common/interfaces/AddressWhitelistInterface.sol","nameLocation":"-1:-1:-1","scope":9346,"sourceUnit":8360,"symbolAliases":[{"foreign":{"id":8420,"name":"AddressWhitelistInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8359,"src":"241:25:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":8423,"nodeType":"ImportDirective","src":"330:104:43","nodes":[],"absolutePath":"src/optimistic-oracle-v2/interfaces/ManagedOptimisticOracleV2Interface.sol","file":"../interfaces/ManagedOptimisticOracleV2Interface.sol","nameLocation":"-1:-1:-1","scope":9346,"sourceUnit":11229,"symbolAliases":[{"foreign":{"id":8422,"name":"ManagedOptimisticOracleV2Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11228,"src":"338:34:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":8425,"nodeType":"ImportDirective","src":"435:72:43","nodes":[],"absolutePath":"src/common/implementation/MultiCaller.sol","file":"../../common/implementation/MultiCaller.sol","nameLocation":"-1:-1:-1","scope":9346,"sourceUnit":8329,"symbolAliases":[{"foreign":{"id":8424,"name":"MultiCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8328,"src":"443:11:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":8427,"nodeType":"ImportDirective","src":"508:60:43","nodes":[],"absolutePath":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol","file":"./OptimisticOracleV2.sol","nameLocation":"-1:-1:-1","scope":9346,"sourceUnit":11128,"symbolAliases":[{"foreign":{"id":8426,"name":"OptimisticOracleV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11127,"src":"516:18:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9345,"nodeType":"ContractDefinition","src":"769:21285:43","nodes":[{"id":8439,"nodeType":"StructDefinition","src":"881:82:43","nodes":[],"canonicalName":"ManagedOptimisticOracleV2.BondRange","members":[{"constant":false,"id":8436,"mutability":"mutable","name":"minimumBond","nameLocation":"916:11:43","nodeType":"VariableDeclaration","scope":8439,"src":"908:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":8435,"name":"uint128","nodeType":"ElementaryTypeName","src":"908:7:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":8438,"mutability":"mutable","name":"maximumBond","nameLocation":"945:11:43","nodeType":"VariableDeclaration","scope":8439,"src":"937:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":8437,"name":"uint128","nodeType":"ElementaryTypeName","src":"937:7:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"BondRange","nameLocation":"888:9:43","scope":9345,"visibility":"public"},{"id":8446,"nodeType":"StructDefinition","src":"969:82:43","nodes":[],"canonicalName":"ManagedOptimisticOracleV2.CurrencyBondRange","members":[{"constant":false,"id":8442,"mutability":"mutable","name":"currency","nameLocation":"1011:8:43","nodeType":"VariableDeclaration","scope":8446,"src":"1004:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":8441,"nodeType":"UserDefinedTypeName","pathNode":{"id":8440,"name":"IERC20","nameLocations":["1004:6:43"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"1004:6:43"},"referencedDeclaration":2591,"src":"1004:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":8445,"mutability":"mutable","name":"range","nameLocation":"1039:5:43","nodeType":"VariableDeclaration","scope":8446,"src":"1029:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_storage_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange"},"typeName":{"id":8444,"nodeType":"UserDefinedTypeName","pathNode":{"id":8443,"name":"BondRange","nameLocations":["1029:9:43"],"nodeType":"IdentifierPath","referencedDeclaration":8439,"src":"1029:9:43"},"referencedDeclaration":8439,"src":"1029:9:43","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_storage_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange"}},"visibility":"internal"}],"name":"CurrencyBondRange","nameLocation":"976:17:43","scope":9345,"visibility":"public"},{"id":8451,"nodeType":"StructDefinition","src":"1057:69:43","nodes":[],"canonicalName":"ManagedOptimisticOracleV2.CustomBond","members":[{"constant":false,"id":8448,"mutability":"mutable","name":"amount","nameLocation":"1093:6:43","nodeType":"VariableDeclaration","scope":8451,"src":"1085:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8447,"name":"uint256","nodeType":"ElementaryTypeName","src":"1085:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8450,"mutability":"mutable","name":"isSet","nameLocation":"1114:5:43","nodeType":"VariableDeclaration","scope":8451,"src":"1109:10:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8449,"name":"bool","nodeType":"ElementaryTypeName","src":"1109:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"CustomBond","nameLocation":"1064:10:43","scope":9345,"visibility":"public"},{"id":8456,"nodeType":"StructDefinition","src":"1132:75:43","nodes":[],"canonicalName":"ManagedOptimisticOracleV2.CustomLiveness","members":[{"constant":false,"id":8453,"mutability":"mutable","name":"liveness","nameLocation":"1172:8:43","nodeType":"VariableDeclaration","scope":8456,"src":"1164:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8452,"name":"uint256","nodeType":"ElementaryTypeName","src":"1164:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8455,"mutability":"mutable","name":"isSet","nameLocation":"1195:5:43","nodeType":"VariableDeclaration","scope":8456,"src":"1190:10:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8454,"name":"bool","nodeType":"ElementaryTypeName","src":"1190:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"CustomLiveness","nameLocation":"1139:14:43","scope":9345,"visibility":"public"},{"id":8461,"nodeType":"VariableDeclaration","src":"1307:74:43","nodes":[],"constant":true,"functionSelector":"c78ef28c","mutability":"constant","name":"CONFIG_ADMIN_ROLE","nameLocation":"1331:17:43","scope":9345,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8457,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1307:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"434f4e4649475f41444d494e5f524f4c45","id":8459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1361:19:43","typeDescriptions":{"typeIdentifier":"t_stringliteral_b92d52e77ebaa0cae5c23e882d85609efbcb44029214147dd132daf9ef1018af","typeString":"literal_string \"CONFIG_ADMIN_ROLE\""},"value":"CONFIG_ADMIN_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b92d52e77ebaa0cae5c23e882d85609efbcb44029214147dd132daf9ef1018af","typeString":"literal_string \"CONFIG_ADMIN_ROLE\""}],"id":8458,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1351:9:43","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1351:30:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":8466,"nodeType":"VariableDeclaration","src":"1500:80:43","nodes":[],"constant":true,"functionSelector":"f38fdc02","mutability":"constant","name":"REQUEST_MANAGER_ROLE","nameLocation":"1524:20:43","scope":9345,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8462,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1500:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"524551554553545f4d414e414745525f524f4c45","id":8464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1557:22:43","typeDescriptions":{"typeIdentifier":"t_stringliteral_27b8807ed0d425f20d0c4bc217dc8c5223cdf4dda073a600a26677d83eb2fb53","typeString":"literal_string \"REQUEST_MANAGER_ROLE\""},"value":"REQUEST_MANAGER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_27b8807ed0d425f20d0c4bc217dc8c5223cdf4dda073a600a26677d83eb2fb53","typeString":"literal_string \"REQUEST_MANAGER_ROLE\""}],"id":8463,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1547:9:43","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1547:33:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":8469,"nodeType":"VariableDeclaration","src":"1627:57:43","nodes":[],"constant":false,"functionSelector":"ab328fb2","mutability":"mutable","name":"defaultProposerWhitelist","nameLocation":"1660:24:43","scope":9345,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"},"typeName":{"id":8468,"nodeType":"UserDefinedTypeName","pathNode":{"id":8467,"name":"AddressWhitelistInterface","nameLocations":["1627:25:43"],"nodeType":"IdentifierPath","referencedDeclaration":8359,"src":"1627:25:43"},"referencedDeclaration":8359,"src":"1627:25:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"visibility":"public"},{"id":8472,"nodeType":"VariableDeclaration","src":"1690:51:43","nodes":[],"constant":false,"functionSelector":"2589382b","mutability":"mutable","name":"requesterWhitelist","nameLocation":"1723:18:43","scope":9345,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"},"typeName":{"id":8471,"nodeType":"UserDefinedTypeName","pathNode":{"id":8470,"name":"AddressWhitelistInterface","nameLocations":["1690:25:43"],"nodeType":"IdentifierPath","referencedDeclaration":8359,"src":"1690:25:43"},"referencedDeclaration":8359,"src":"1690:25:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"visibility":"public"},{"id":8480,"nodeType":"VariableDeclaration","src":"1840:68:43","nodes":[],"constant":false,"functionSelector":"e92706c6","mutability":"mutable","name":"customBonds","nameLocation":"1897:11:43","scope":9345,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_contract$_IERC20_$2591_$_t_struct$_CustomBond_$8451_storage_$_$","typeString":"mapping(bytes32 => mapping(contract IERC20 => struct ManagedOptimisticOracleV2.CustomBond))"},"typeName":{"id":8479,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8473,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1848:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1840:49:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_contract$_IERC20_$2591_$_t_struct$_CustomBond_$8451_storage_$_$","typeString":"mapping(bytes32 => mapping(contract IERC20 => struct ManagedOptimisticOracleV2.CustomBond))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8478,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8475,"nodeType":"UserDefinedTypeName","pathNode":{"id":8474,"name":"IERC20","nameLocations":["1867:6:43"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"1867:6:43"},"referencedDeclaration":2591,"src":"1867:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"nodeType":"Mapping","src":"1859:29:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2591_$_t_struct$_CustomBond_$8451_storage_$","typeString":"mapping(contract IERC20 => struct ManagedOptimisticOracleV2.CustomBond)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8477,"nodeType":"UserDefinedTypeName","pathNode":{"id":8476,"name":"CustomBond","nameLocations":["1877:10:43"],"nodeType":"IdentifierPath","referencedDeclaration":8451,"src":"1877:10:43"},"referencedDeclaration":8451,"src":"1877:10:43","typeDescriptions":{"typeIdentifier":"t_struct$_CustomBond_$8451_storage_ptr","typeString":"struct ManagedOptimisticOracleV2.CustomBond"}}}},"visibility":"public"},{"id":8485,"nodeType":"VariableDeclaration","src":"1992:62:43","nodes":[],"constant":false,"functionSelector":"afe1fcff","mutability":"mutable","name":"customLivenessValues","nameLocation":"2034:20:43","scope":9345,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_CustomLiveness_$8456_storage_$","typeString":"mapping(bytes32 => struct ManagedOptimisticOracleV2.CustomLiveness)"},"typeName":{"id":8484,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8481,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2000:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1992:34:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_CustomLiveness_$8456_storage_$","typeString":"mapping(bytes32 => struct ManagedOptimisticOracleV2.CustomLiveness)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8483,"nodeType":"UserDefinedTypeName","pathNode":{"id":8482,"name":"CustomLiveness","nameLocations":["2011:14:43"],"nodeType":"IdentifierPath","referencedDeclaration":8456,"src":"2011:14:43"},"referencedDeclaration":8456,"src":"2011:14:43","typeDescriptions":{"typeIdentifier":"t_struct$_CustomLiveness_$8456_storage_ptr","typeString":"struct ManagedOptimisticOracleV2.CustomLiveness"}}},"visibility":"public"},{"id":8490,"nodeType":"VariableDeclaration","src":"2142:77:43","nodes":[],"constant":false,"functionSelector":"8aca6afc","mutability":"mutable","name":"customProposerWhitelists","nameLocation":"2195:24:43","scope":9345,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_contract$_AddressWhitelistInterface_$8359_$","typeString":"mapping(bytes32 => contract AddressWhitelistInterface)"},"typeName":{"id":8489,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8486,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2150:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2142:45:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_contract$_AddressWhitelistInterface_$8359_$","typeString":"mapping(bytes32 => contract AddressWhitelistInterface)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8488,"nodeType":"UserDefinedTypeName","pathNode":{"id":8487,"name":"AddressWhitelistInterface","nameLocations":["2161:25:43"],"nodeType":"IdentifierPath","referencedDeclaration":8359,"src":"2161:25:43"},"referencedDeclaration":8359,"src":"2161:25:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}}},"visibility":"public"},{"id":8496,"nodeType":"VariableDeclaration","src":"2316:53:43","nodes":[],"constant":false,"functionSelector":"b873c4df","mutability":"mutable","name":"allowedBondRanges","nameLocation":"2352:17:43","scope":9345,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2591_$_t_struct$_BondRange_$8439_storage_$","typeString":"mapping(contract IERC20 => struct ManagedOptimisticOracleV2.BondRange)"},"typeName":{"id":8495,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8492,"nodeType":"UserDefinedTypeName","pathNode":{"id":8491,"name":"IERC20","nameLocations":["2324:6:43"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"2324:6:43"},"referencedDeclaration":2591,"src":"2324:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"nodeType":"Mapping","src":"2316:28:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2591_$_t_struct$_BondRange_$8439_storage_$","typeString":"mapping(contract IERC20 => struct ManagedOptimisticOracleV2.BondRange)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8494,"nodeType":"UserDefinedTypeName","pathNode":{"id":8493,"name":"BondRange","nameLocations":["2334:9:43"],"nodeType":"IdentifierPath","referencedDeclaration":8439,"src":"2334:9:43"},"referencedDeclaration":8439,"src":"2334:9:43","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_storage_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange"}}},"visibility":"public"},{"id":8498,"nodeType":"VariableDeclaration","src":"2454:30:43","nodes":[],"constant":false,"functionSelector":"91152f10","mutability":"mutable","name":"minimumLiveness","nameLocation":"2469:15:43","scope":9345,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8497,"name":"uint256","nodeType":"ElementaryTypeName","src":"2454:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":8506,"nodeType":"FunctionDefinition","src":"2544:53:43","nodes":[],"body":{"id":8505,"nodeType":"Block","src":"2558:39:43","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8502,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1434,"src":"2568:20:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2568:22:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8504,"nodeType":"ExpressionStatement","src":"2568:22:43"}]},"documentation":{"id":8499,"nodeType":"StructuredDocumentation","src":"2491:48:43","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":8500,"nodeType":"ParameterList","parameters":[],"src":"2555:2:43"},"returnParameters":{"id":8501,"nodeType":"ParameterList","parameters":[],"src":"2558:0:43"},"scope":9345,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":8583,"nodeType":"FunctionDefinition","src":"3266:1058:43","nodes":[],"body":{"id":8582,"nodeType":"Block","src":"3609:715:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":8531,"name":"_defaultLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8509,"src":"3645:16:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8532,"name":"_finderAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8511,"src":"3663:14:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8533,"name":"upgradeAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8525,"src":"3679:12:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8530,"name":"__OptimisticOracleV2_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9510,"src":"3619:25:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$__$","typeString":"function (uint256,address,address)"}},"id":8534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3619:73:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8535,"nodeType":"ExpressionStatement","src":"3619:73:43"},{"expression":{"arguments":[{"id":8537,"name":"CONFIG_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8461,"src":"3885:17:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8538,"name":"configAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8523,"src":"3904:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8536,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[675],"referencedDeclaration":675,"src":"3874:10:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":8539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3874:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8540,"nodeType":"ExpressionStatement","src":"3874:42:43"},{"expression":{"arguments":[{"id":8542,"name":"REQUEST_MANAGER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8466,"src":"3940:20:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8543,"name":"CONFIG_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8461,"src":"3962:17:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8541,"name":"_setRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[738],"referencedDeclaration":738,"src":"3926:13:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":8544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3926:54:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8545,"nodeType":"ExpressionStatement","src":"3926:54:43"},{"expression":{"arguments":[{"id":8547,"name":"_defaultProposerWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8513,"src":"4020:25:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8546,"name":"_setDefaultProposerWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9188,"src":"3991:28:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3991:55:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8549,"nodeType":"ExpressionStatement","src":"3991:55:43"},{"expression":{"arguments":[{"id":8551,"name":"_requesterWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8515,"src":"4079:19:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8550,"name":"_setRequesterWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9209,"src":"4056:22:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4056:43:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8553,"nodeType":"ExpressionStatement","src":"4056:43:43"},{"body":{"id":8576,"nodeType":"Block","src":"4165:106:43","statements":[{"expression":{"arguments":[{"expression":{"baseExpression":{"id":8566,"name":"_allowedBondRanges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8519,"src":"4200:18:43","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CurrencyBondRange_$8446_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ManagedOptimisticOracleV2.CurrencyBondRange calldata[] calldata"}},"id":8568,"indexExpression":{"id":8567,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8555,"src":"4219:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4200:21:43","typeDescriptions":{"typeIdentifier":"t_struct$_CurrencyBondRange_$8446_calldata_ptr","typeString":"struct ManagedOptimisticOracleV2.CurrencyBondRange calldata"}},"id":8569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4222:8:43","memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":8442,"src":"4200:30:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},{"expression":{"baseExpression":{"id":8570,"name":"_allowedBondRanges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8519,"src":"4232:18:43","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CurrencyBondRange_$8446_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ManagedOptimisticOracleV2.CurrencyBondRange calldata[] calldata"}},"id":8572,"indexExpression":{"id":8571,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8555,"src":"4251:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4232:21:43","typeDescriptions":{"typeIdentifier":"t_struct$_CurrencyBondRange_$8446_calldata_ptr","typeString":"struct ManagedOptimisticOracleV2.CurrencyBondRange calldata"}},"id":8573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4254:5:43","memberName":"range","nodeType":"MemberAccess","referencedDeclaration":8445,"src":"4232:27:43","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_calldata_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},{"typeIdentifier":"t_struct$_BondRange_$8439_calldata_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange calldata"}],"id":8565,"name":"_setAllowedBondRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9146,"src":"4179:20:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_struct$_BondRange_$8439_calldata_ptr_$returns$__$","typeString":"function (contract IERC20,struct ManagedOptimisticOracleV2.BondRange calldata)"}},"id":8574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4179:81:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8575,"nodeType":"ExpressionStatement","src":"4179:81:43"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8558,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8555,"src":"4129:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8559,"name":"_allowedBondRanges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8519,"src":"4133:18:43","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CurrencyBondRange_$8446_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ManagedOptimisticOracleV2.CurrencyBondRange calldata[] calldata"}},"id":8560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4152:6:43","memberName":"length","nodeType":"MemberAccess","src":"4133:25:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4129:29:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8577,"initializationExpression":{"assignments":[8555],"declarations":[{"constant":false,"id":8555,"mutability":"mutable","name":"i","nameLocation":"4122:1:43","nodeType":"VariableDeclaration","scope":8577,"src":"4114:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8554,"name":"uint256","nodeType":"ElementaryTypeName","src":"4114:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8557,"initialValue":{"hexValue":"30","id":8556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4126:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4114:13:43"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":8563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4160:3:43","subExpression":{"id":8562,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8555,"src":"4160:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8564,"nodeType":"ExpressionStatement","src":"4160:3:43"},"nodeType":"ForStatement","src":"4109:162:43"},{"expression":{"arguments":[{"id":8579,"name":"_minimumLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8521,"src":"4300:16:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8578,"name":"_setMinimumLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9167,"src":"4280:19:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":8580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4280:37:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8581,"nodeType":"ExpressionStatement","src":"4280:37:43"}]},"documentation":{"id":8507,"nodeType":"StructuredDocumentation","src":"2603:658:43","text":" @notice Initializer.\n @param _defaultLiveness applied to each price request.\n @param _finderAddress to use to get addresses of DVM contracts.\n @param _defaultProposerWhitelist address of the default whitelist.\n @param _requesterWhitelist address of the requester whitelist.\n @param _allowedBondRanges array of allowed bond ranges for different currencies.\n @param _minimumLiveness that can be overridden for a request.\n @param configAdmin address, which is used for managing request managers and contract parameters.\n @param upgradeAdmin address, which also can manage the config admin role."},"functionSelector":"cdb21cc6","implemented":true,"kind":"function","modifiers":[{"id":8528,"kind":"modifierInvocation","modifierName":{"id":8527,"name":"initializer","nameLocations":["3597:11:43"],"nodeType":"IdentifierPath","referencedDeclaration":1320,"src":"3597:11:43"},"nodeType":"ModifierInvocation","src":"3597:11:43"}],"name":"initialize","nameLocation":"3275:10:43","parameters":{"id":8526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8509,"mutability":"mutable","name":"_defaultLiveness","nameLocation":"3303:16:43","nodeType":"VariableDeclaration","scope":8583,"src":"3295:24:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8508,"name":"uint256","nodeType":"ElementaryTypeName","src":"3295:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8511,"mutability":"mutable","name":"_finderAddress","nameLocation":"3337:14:43","nodeType":"VariableDeclaration","scope":8583,"src":"3329:22:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8510,"name":"address","nodeType":"ElementaryTypeName","src":"3329:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8513,"mutability":"mutable","name":"_defaultProposerWhitelist","nameLocation":"3369:25:43","nodeType":"VariableDeclaration","scope":8583,"src":"3361:33:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8512,"name":"address","nodeType":"ElementaryTypeName","src":"3361:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8515,"mutability":"mutable","name":"_requesterWhitelist","nameLocation":"3412:19:43","nodeType":"VariableDeclaration","scope":8583,"src":"3404:27:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8514,"name":"address","nodeType":"ElementaryTypeName","src":"3404:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8519,"mutability":"mutable","name":"_allowedBondRanges","nameLocation":"3470:18:43","nodeType":"VariableDeclaration","scope":8583,"src":"3441:47:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CurrencyBondRange_$8446_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ManagedOptimisticOracleV2.CurrencyBondRange[]"},"typeName":{"baseType":{"id":8517,"nodeType":"UserDefinedTypeName","pathNode":{"id":8516,"name":"CurrencyBondRange","nameLocations":["3441:17:43"],"nodeType":"IdentifierPath","referencedDeclaration":8446,"src":"3441:17:43"},"referencedDeclaration":8446,"src":"3441:17:43","typeDescriptions":{"typeIdentifier":"t_struct$_CurrencyBondRange_$8446_storage_ptr","typeString":"struct ManagedOptimisticOracleV2.CurrencyBondRange"}},"id":8518,"nodeType":"ArrayTypeName","src":"3441:19:43","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CurrencyBondRange_$8446_storage_$dyn_storage_ptr","typeString":"struct ManagedOptimisticOracleV2.CurrencyBondRange[]"}},"visibility":"internal"},{"constant":false,"id":8521,"mutability":"mutable","name":"_minimumLiveness","nameLocation":"3506:16:43","nodeType":"VariableDeclaration","scope":8583,"src":"3498:24:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8520,"name":"uint256","nodeType":"ElementaryTypeName","src":"3498:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8523,"mutability":"mutable","name":"configAdmin","nameLocation":"3540:11:43","nodeType":"VariableDeclaration","scope":8583,"src":"3532:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8522,"name":"address","nodeType":"ElementaryTypeName","src":"3532:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8525,"mutability":"mutable","name":"upgradeAdmin","nameLocation":"3569:12:43","nodeType":"VariableDeclaration","scope":8583,"src":"3561:20:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8524,"name":"address","nodeType":"ElementaryTypeName","src":"3561:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3285:302:43"},"returnParameters":{"id":8529,"nodeType":"ParameterList","parameters":[],"src":"3609:0:43"},"scope":9345,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8592,"nodeType":"ModifierDefinition","src":"4419:84:43","nodes":[],"body":{"id":8591,"nodeType":"Block","src":"4446:57:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":8587,"name":"CONFIG_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8461,"src":"4467:17:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8586,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[131,152],"referencedDeclaration":131,"src":"4456:10:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":8588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4456:29:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8589,"nodeType":"ExpressionStatement","src":"4456:29:43"},{"id":8590,"nodeType":"PlaceholderStatement","src":"4495:1:43"}]},"documentation":{"id":8584,"nodeType":"StructuredDocumentation","src":"4330:84:43","text":" @dev Throws if called by any account other than the config admin."},"name":"onlyConfigAdmin","nameLocation":"4428:15:43","parameters":{"id":8585,"nodeType":"ParameterList","parameters":[],"src":"4443:2:43"},"virtual":false,"visibility":"internal"},{"id":8601,"nodeType":"ModifierDefinition","src":"4601:90:43","nodes":[],"body":{"id":8600,"nodeType":"Block","src":"4631:60:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":8596,"name":"REQUEST_MANAGER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8466,"src":"4652:20:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8595,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[131,152],"referencedDeclaration":131,"src":"4641:10:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":8597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4641:32:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8598,"nodeType":"ExpressionStatement","src":"4641:32:43"},{"id":8599,"nodeType":"PlaceholderStatement","src":"4683:1:43"}]},"documentation":{"id":8593,"nodeType":"StructuredDocumentation","src":"4509:87:43","text":" @dev Throws if called by any account other than the request manager."},"name":"onlyRequestManager","nameLocation":"4610:18:43","parameters":{"id":8594,"nodeType":"ParameterList","parameters":[],"src":"4628:2:43"},"virtual":false,"visibility":"internal"},{"id":8619,"nodeType":"FunctionDefinition","src":"4918:187:43","nodes":[],"body":{"id":8618,"nodeType":"Block","src":"4991:114:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":8610,"name":"REQUEST_MANAGER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8466,"src":"5011:20:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8611,"name":"requestManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8604,"src":"5033:14:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8609,"name":"grantRole","nodeType":"Identifier","overloadedDeclarations":[533],"referencedDeclaration":533,"src":"5001:9:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":8612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5001:47:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8613,"nodeType":"ExpressionStatement","src":"5001:47:43"},{"eventCall":{"arguments":[{"id":8615,"name":"requestManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8604,"src":"5083:14:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8614,"name":"RequestManagerAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11163,"src":"5063:19:43","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5063:35:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8617,"nodeType":"EmitStatement","src":"5058:40:43"}]},"documentation":{"id":8602,"nodeType":"StructuredDocumentation","src":"4697:216:43","text":" @notice Adds a request manager.\n @dev Only callable by the config admin (checked in grantRole of AccessControlUpgradeable).\n @param requestManager address of the request manager to set."},"functionSelector":"b6cdb8ee","implemented":true,"kind":"function","modifiers":[{"id":8607,"kind":"modifierInvocation","modifierName":{"id":8606,"name":"nonReentrant","nameLocations":["4978:12:43"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"4978:12:43"},"nodeType":"ModifierInvocation","src":"4978:12:43"}],"name":"addRequestManager","nameLocation":"4927:17:43","parameters":{"id":8605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8604,"mutability":"mutable","name":"requestManager","nameLocation":"4953:14:43","nodeType":"VariableDeclaration","scope":8619,"src":"4945:22:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8603,"name":"address","nodeType":"ElementaryTypeName","src":"4945:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4944:24:43"},"returnParameters":{"id":8608,"nodeType":"ParameterList","parameters":[],"src":"4991:0:43"},"scope":9345,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8637,"nodeType":"FunctionDefinition","src":"5339:193:43","nodes":[],"body":{"id":8636,"nodeType":"Block","src":"5415:117:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":8628,"name":"REQUEST_MANAGER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8466,"src":"5436:20:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8629,"name":"requestManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"5458:14:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8627,"name":"revokeRole","nodeType":"Identifier","overloadedDeclarations":[560],"referencedDeclaration":560,"src":"5425:10:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":8630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5425:48:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8631,"nodeType":"ExpressionStatement","src":"5425:48:43"},{"eventCall":{"arguments":[{"id":8633,"name":"requestManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8622,"src":"5510:14:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8632,"name":"RequestManagerRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11167,"src":"5488:21:43","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5488:37:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8635,"nodeType":"EmitStatement","src":"5483:42:43"}]},"documentation":{"id":8620,"nodeType":"StructuredDocumentation","src":"5111:223:43","text":" @notice Removes a request manager.\n @dev Only callable by the config admin (checked in revokeRole of AccessControlUpgradeable).\n @param requestManager address of the request manager to remove."},"functionSelector":"1480db39","implemented":true,"kind":"function","modifiers":[{"id":8625,"kind":"modifierInvocation","modifierName":{"id":8624,"name":"nonReentrant","nameLocations":["5402:12:43"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"5402:12:43"},"nodeType":"ModifierInvocation","src":"5402:12:43"}],"name":"removeRequestManager","nameLocation":"5348:20:43","parameters":{"id":8623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8622,"mutability":"mutable","name":"requestManager","nameLocation":"5377:14:43","nodeType":"VariableDeclaration","scope":8637,"src":"5369:22:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8621,"name":"address","nodeType":"ElementaryTypeName","src":"5369:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5368:24:43"},"returnParameters":{"id":8626,"nodeType":"ParameterList","parameters":[],"src":"5415:0:43"},"scope":9345,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8657,"nodeType":"FunctionDefinition","src":"5922:170:43","nodes":[],"body":{"id":8656,"nodeType":"Block","src":"6035:57:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":8652,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8641,"src":"6066:8:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},{"id":8653,"name":"newRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8644,"src":"6076:8:43","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_calldata_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},{"typeIdentifier":"t_struct$_BondRange_$8439_calldata_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange calldata"}],"id":8651,"name":"_setAllowedBondRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9146,"src":"6045:20:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_struct$_BondRange_$8439_calldata_ptr_$returns$__$","typeString":"function (contract IERC20,struct ManagedOptimisticOracleV2.BondRange calldata)"}},"id":8654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6045:40:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8655,"nodeType":"ExpressionStatement","src":"6045:40:43"}]},"documentation":{"id":8638,"nodeType":"StructuredDocumentation","src":"5538:379:43","text":" @notice Sets the bounds for a bond that can be set for a request.\n @dev This can be used to limit the bond amount that can be set by request managers, callable by the config admin.\n @param currency the ERC20 token used for bonding proposals and disputes. Must be approved for use with the DVM.\n @param newRange new allowed range for the bond."},"functionSelector":"5845e68a","implemented":true,"kind":"function","modifiers":[{"id":8647,"kind":"modifierInvocation","modifierName":{"id":8646,"name":"nonReentrant","nameLocations":["6006:12:43"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"6006:12:43"},"nodeType":"ModifierInvocation","src":"6006:12:43"},{"id":8649,"kind":"modifierInvocation","modifierName":{"id":8648,"name":"onlyConfigAdmin","nameLocations":["6019:15:43"],"nodeType":"IdentifierPath","referencedDeclaration":8592,"src":"6019:15:43"},"nodeType":"ModifierInvocation","src":"6019:15:43"}],"name":"setAllowedBondRange","nameLocation":"5931:19:43","parameters":{"id":8645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8641,"mutability":"mutable","name":"currency","nameLocation":"5958:8:43","nodeType":"VariableDeclaration","scope":8657,"src":"5951:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":8640,"nodeType":"UserDefinedTypeName","pathNode":{"id":8639,"name":"IERC20","nameLocations":["5951:6:43"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"5951:6:43"},"referencedDeclaration":2591,"src":"5951:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":8644,"mutability":"mutable","name":"newRange","nameLocation":"5987:8:43","nodeType":"VariableDeclaration","scope":8657,"src":"5968:27:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_calldata_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange"},"typeName":{"id":8643,"nodeType":"UserDefinedTypeName","pathNode":{"id":8642,"name":"BondRange","nameLocations":["5968:9:43"],"nodeType":"IdentifierPath","referencedDeclaration":8439,"src":"5968:9:43"},"referencedDeclaration":8439,"src":"5968:9:43","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_storage_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange"}},"visibility":"internal"}],"src":"5950:46:43"},"returnParameters":{"id":8650,"nodeType":"ParameterList","parameters":[],"src":"6035:0:43"},"scope":9345,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8672,"nodeType":"FunctionDefinition","src":"6371:146:43","nodes":[],"body":{"id":8671,"nodeType":"Block","src":"6463:54:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":8668,"name":"_minimumLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8660,"src":"6493:16:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8667,"name":"_setMinimumLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9167,"src":"6473:19:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":8669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6473:37:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8670,"nodeType":"ExpressionStatement","src":"6473:37:43"}]},"documentation":{"id":8658,"nodeType":"StructuredDocumentation","src":"6098:268:43","text":" @notice Sets the minimum liveness that can be set for a request.\n @dev This can be used to limit the liveness period that can be set by request managers, callable by the config admin.\n @param _minimumLiveness new minimum liveness period."},"functionSelector":"32ecce9e","implemented":true,"kind":"function","modifiers":[{"id":8663,"kind":"modifierInvocation","modifierName":{"id":8662,"name":"nonReentrant","nameLocations":["6434:12:43"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"6434:12:43"},"nodeType":"ModifierInvocation","src":"6434:12:43"},{"id":8665,"kind":"modifierInvocation","modifierName":{"id":8664,"name":"onlyConfigAdmin","nameLocations":["6447:15:43"],"nodeType":"IdentifierPath","referencedDeclaration":8592,"src":"6447:15:43"},"nodeType":"ModifierInvocation","src":"6447:15:43"}],"name":"setMinimumLiveness","nameLocation":"6380:18:43","parameters":{"id":8661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8660,"mutability":"mutable","name":"_minimumLiveness","nameLocation":"6407:16:43","nodeType":"VariableDeclaration","scope":8672,"src":"6399:24:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8659,"name":"uint256","nodeType":"ElementaryTypeName","src":"6399:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6398:26:43"},"returnParameters":{"id":8666,"nodeType":"ParameterList","parameters":[],"src":"6463:0:43"},"scope":9345,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8687,"nodeType":"FunctionDefinition","src":"6695:150:43","nodes":[],"body":{"id":8686,"nodeType":"Block","src":"6789:56:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":8683,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8675,"src":"6828:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8682,"name":"_setDefaultProposerWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9188,"src":"6799:28:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6799:39:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8685,"nodeType":"ExpressionStatement","src":"6799:39:43"}]},"documentation":{"id":8673,"nodeType":"StructuredDocumentation","src":"6523:167:43","text":" @notice Sets the default proposer whitelist.\n @dev Only callable by the config admin.\n @param whitelist address of the whitelist to set."},"functionSelector":"1fa50cef","implemented":true,"kind":"function","modifiers":[{"id":8678,"kind":"modifierInvocation","modifierName":{"id":8677,"name":"nonReentrant","nameLocations":["6760:12:43"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"6760:12:43"},"nodeType":"ModifierInvocation","src":"6760:12:43"},{"id":8680,"kind":"modifierInvocation","modifierName":{"id":8679,"name":"onlyConfigAdmin","nameLocations":["6773:15:43"],"nodeType":"IdentifierPath","referencedDeclaration":8592,"src":"6773:15:43"},"nodeType":"ModifierInvocation","src":"6773:15:43"}],"name":"setDefaultProposerWhitelist","nameLocation":"6704:27:43","parameters":{"id":8676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8675,"mutability":"mutable","name":"whitelist","nameLocation":"6740:9:43","nodeType":"VariableDeclaration","scope":8687,"src":"6732:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8674,"name":"address","nodeType":"ElementaryTypeName","src":"6732:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6731:19:43"},"returnParameters":{"id":8681,"nodeType":"ParameterList","parameters":[],"src":"6789:0:43"},"scope":9345,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8702,"nodeType":"FunctionDefinition","src":"7016:138:43","nodes":[],"body":{"id":8701,"nodeType":"Block","src":"7104:50:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":8698,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8690,"src":"7137:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8697,"name":"_setRequesterWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9209,"src":"7114:22:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7114:33:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8700,"nodeType":"ExpressionStatement","src":"7114:33:43"}]},"documentation":{"id":8688,"nodeType":"StructuredDocumentation","src":"6851:160:43","text":" @notice Sets the requester whitelist.\n @dev Only callable by the config admin.\n @param whitelist address of the whitelist to set."},"functionSelector":"6b821d06","implemented":true,"kind":"function","modifiers":[{"id":8693,"kind":"modifierInvocation","modifierName":{"id":8692,"name":"nonReentrant","nameLocations":["7075:12:43"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"7075:12:43"},"nodeType":"ModifierInvocation","src":"7075:12:43"},{"id":8695,"kind":"modifierInvocation","modifierName":{"id":8694,"name":"onlyConfigAdmin","nameLocations":["7088:15:43"],"nodeType":"IdentifierPath","referencedDeclaration":8592,"src":"7088:15:43"},"nodeType":"ModifierInvocation","src":"7088:15:43"}],"name":"setRequesterWhitelist","nameLocation":"7025:21:43","parameters":{"id":8691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8690,"mutability":"mutable","name":"whitelist","nameLocation":"7055:9:43","nodeType":"VariableDeclaration","scope":8702,"src":"7047:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8689,"name":"address","nodeType":"ElementaryTypeName","src":"7047:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7046:19:43"},"returnParameters":{"id":8696,"nodeType":"ParameterList","parameters":[],"src":"7104:0:43"},"scope":9345,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8740,"nodeType":"FunctionDefinition","src":"8019:400:43","nodes":[],"body":{"id":8739,"nodeType":"Block","src":"8231:188:43","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":8723,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8282:3:43","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8286:6:43","memberName":"sender","nodeType":"MemberAccess","src":"8282:10:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8721,"name":"requesterWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8472,"src":"8249:18:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"id":8722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8268:13:43","memberName":"isOnWhitelist","nodeType":"MemberAccess","referencedDeclaration":8347,"src":"8249:32:43","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":8725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8249:44:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":8726,"name":"RequesterNotWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11135,"src":"8295:23:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8295:25:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":8720,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8241:7:43","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":8728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8241:80:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8729,"nodeType":"ExpressionStatement","src":"8241:80:43"},{"expression":{"arguments":[{"id":8732,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8705,"src":"8357:10:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8733,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8707,"src":"8369:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8734,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8709,"src":"8380:13:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":8735,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8712,"src":"8395:8:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},{"id":8736,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8714,"src":"8405:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8730,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"8338:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ManagedOptimisticOracleV2_$9345_$","typeString":"type(contract super ManagedOptimisticOracleV2)"}},"id":8731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8344:12:43","memberName":"requestPrice","nodeType":"MemberAccess","referencedDeclaration":9715,"src":"8338:18:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$_t_contract$_IERC20_$2591_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bytes32,uint256,bytes memory,contract IERC20,uint256) returns (uint256)"}},"id":8737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8338:74:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8719,"id":8738,"nodeType":"Return","src":"8331:81:43"}]},"baseFunctions":[9715],"documentation":{"id":8703,"nodeType":"StructuredDocumentation","src":"7160:854:43","text":" @notice Requests a new price.\n @param identifier price identifier being requested.\n @param timestamp timestamp of the price being requested.\n @param ancillaryData ancillary data representing additional args being passed with the price request.\n @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n which could make sense if the contract requests and proposes the value in the same call or\n provides its own reward system.\n @return totalBond default bond (final fee) + final fee that the proposer and disputer will be required to pay.\n This can be changed with a subsequent call to setBond()."},"functionSelector":"11df92f1","implemented":true,"kind":"function","modifiers":[],"name":"requestPrice","nameLocation":"8028:12:43","overrides":{"id":8716,"nodeType":"OverrideSpecifier","overrides":[],"src":"8194:8:43"},"parameters":{"id":8715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8705,"mutability":"mutable","name":"identifier","nameLocation":"8058:10:43","nodeType":"VariableDeclaration","scope":8740,"src":"8050:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8704,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8050:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8707,"mutability":"mutable","name":"timestamp","nameLocation":"8086:9:43","nodeType":"VariableDeclaration","scope":8740,"src":"8078:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8706,"name":"uint256","nodeType":"ElementaryTypeName","src":"8078:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8709,"mutability":"mutable","name":"ancillaryData","nameLocation":"8118:13:43","nodeType":"VariableDeclaration","scope":8740,"src":"8105:26:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8708,"name":"bytes","nodeType":"ElementaryTypeName","src":"8105:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":8712,"mutability":"mutable","name":"currency","nameLocation":"8148:8:43","nodeType":"VariableDeclaration","scope":8740,"src":"8141:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":8711,"nodeType":"UserDefinedTypeName","pathNode":{"id":8710,"name":"IERC20","nameLocations":["8141:6:43"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"8141:6:43"},"referencedDeclaration":2591,"src":"8141:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":8714,"mutability":"mutable","name":"reward","nameLocation":"8174:6:43","nodeType":"VariableDeclaration","scope":8740,"src":"8166:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8713,"name":"uint256","nodeType":"ElementaryTypeName","src":"8166:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8040:146:43"},"returnParameters":{"id":8719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8718,"mutability":"mutable","name":"totalBond","nameLocation":"8220:9:43","nodeType":"VariableDeclaration","scope":8740,"src":"8212:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8717,"name":"uint256","nodeType":"ElementaryTypeName","src":"8212:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8211:19:43"},"scope":9345,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":8806,"nodeType":"FunctionDefinition","src":"8968:647:43","nodes":[],"body":{"id":8805,"nodeType":"Block","src":"9184:431:43","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":8765,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8750,"src":"9250:8:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}],"id":8764,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9242:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8763,"name":"address","nodeType":"ElementaryTypeName","src":"9242:7:43","typeDescriptions":{}}},"id":8766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9242:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8760,"name":"_getCollateralWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11026,"src":"9202:23:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_AddressWhitelist_$8065_$","typeString":"function () view returns (contract AddressWhitelist)"}},"id":8761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9202:25:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelist_$8065","typeString":"contract AddressWhitelist"}},"id":8762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9228:13:43","memberName":"isOnWhitelist","nodeType":"MemberAccess","referencedDeclaration":7944,"src":"9202:39:43","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":8767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9202:58:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":8768,"name":"UnsupportedCurrency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11250,"src":"9262:19:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9262:21:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":8759,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9194:7:43","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":8770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9194:90:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8771,"nodeType":"ExpressionStatement","src":"9194:90:43"},{"expression":{"arguments":[{"id":8773,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8750,"src":"9308:8:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},{"id":8774,"name":"bond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8752,"src":"9318:4:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8772,"name":"_validateBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9278,"src":"9294:13:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20_$2591_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256) view"}},"id":8775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9294:29:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8776,"nodeType":"ExpressionStatement","src":"9294:29:43"},{"assignments":[8778],"declarations":[{"constant":false,"id":8778,"mutability":"mutable","name":"managedRequestId","nameLocation":"9341:16:43","nodeType":"VariableDeclaration","scope":8805,"src":"9333:24:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8777,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9333:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8784,"initialValue":{"arguments":[{"id":8780,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8743,"src":"9380:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8781,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8745,"src":"9391:10:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8782,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8747,"src":"9403:13:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8779,"name":"getManagedRequestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9098,"src":"9360:19:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (address,bytes32,bytes memory) pure returns (bytes32)"}},"id":8783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9360:57:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9333:84:43"},{"expression":{"id":8794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":8785,"name":"customBonds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8480,"src":"9427:11:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_contract$_IERC20_$2591_$_t_struct$_CustomBond_$8451_storage_$_$","typeString":"mapping(bytes32 => mapping(contract IERC20 => struct ManagedOptimisticOracleV2.CustomBond storage ref))"}},"id":8788,"indexExpression":{"id":8786,"name":"managedRequestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8778,"src":"9439:16:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9427:29:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2591_$_t_struct$_CustomBond_$8451_storage_$","typeString":"mapping(contract IERC20 => struct ManagedOptimisticOracleV2.CustomBond storage ref)"}},"id":8789,"indexExpression":{"id":8787,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8750,"src":"9457:8:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9427:39:43","typeDescriptions":{"typeIdentifier":"t_struct$_CustomBond_$8451_storage","typeString":"struct ManagedOptimisticOracleV2.CustomBond storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8791,"name":"bond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8752,"src":"9489:4:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":8792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9502:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8790,"name":"CustomBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8451,"src":"9469:10:43","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CustomBond_$8451_storage_ptr_$","typeString":"type(struct ManagedOptimisticOracleV2.CustomBond storage pointer)"}},"id":8793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["9481:6:43","9495:5:43"],"names":["amount","isSet"],"nodeType":"FunctionCall","src":"9469:39:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_CustomBond_$8451_memory_ptr","typeString":"struct ManagedOptimisticOracleV2.CustomBond memory"}},"src":"9427:81:43","typeDescriptions":{"typeIdentifier":"t_struct$_CustomBond_$8451_storage","typeString":"struct ManagedOptimisticOracleV2.CustomBond storage ref"}},"id":8795,"nodeType":"ExpressionStatement","src":"9427:81:43"},{"eventCall":{"arguments":[{"id":8797,"name":"managedRequestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8778,"src":"9537:16:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8798,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8743,"src":"9555:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8799,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8745,"src":"9566:10:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8800,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8747,"src":"9578:13:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":8801,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8750,"src":"9593:8:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},{"id":8802,"name":"bond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8752,"src":"9603:4:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8796,"name":"CustomBondSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11203,"src":"9523:13:43","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_contract$_IERC20_$2591_$_t_uint256_$returns$__$","typeString":"function (bytes32,address,bytes32,bytes memory,contract IERC20,uint256)"}},"id":8803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9523:85:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8804,"nodeType":"EmitStatement","src":"9518:90:43"}]},"documentation":{"id":8741,"nodeType":"StructuredDocumentation","src":"8425:538:43","text":" @notice Set the proposal bond associated with a price request.\n @dev This would also override any subsequent calls to setBond() by the requester.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n @param bond custom bond amount to set."},"functionSelector":"93ae2ebd","implemented":true,"kind":"function","modifiers":[{"id":8755,"kind":"modifierInvocation","modifierName":{"id":8754,"name":"nonReentrant","nameLocations":["9152:12:43"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"9152:12:43"},"nodeType":"ModifierInvocation","src":"9152:12:43"},{"id":8757,"kind":"modifierInvocation","modifierName":{"id":8756,"name":"onlyRequestManager","nameLocations":["9165:18:43"],"nodeType":"IdentifierPath","referencedDeclaration":8601,"src":"9165:18:43"},"nodeType":"ModifierInvocation","src":"9165:18:43"}],"name":"requestManagerSetBond","nameLocation":"8977:21:43","parameters":{"id":8753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8743,"mutability":"mutable","name":"requester","nameLocation":"9016:9:43","nodeType":"VariableDeclaration","scope":8806,"src":"9008:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8742,"name":"address","nodeType":"ElementaryTypeName","src":"9008:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8745,"mutability":"mutable","name":"identifier","nameLocation":"9043:10:43","nodeType":"VariableDeclaration","scope":8806,"src":"9035:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8744,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9035:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8747,"mutability":"mutable","name":"ancillaryData","nameLocation":"9076:13:43","nodeType":"VariableDeclaration","scope":8806,"src":"9063:26:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8746,"name":"bytes","nodeType":"ElementaryTypeName","src":"9063:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":8750,"mutability":"mutable","name":"currency","nameLocation":"9106:8:43","nodeType":"VariableDeclaration","scope":8806,"src":"9099:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":8749,"nodeType":"UserDefinedTypeName","pathNode":{"id":8748,"name":"IERC20","nameLocations":["9099:6:43"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"9099:6:43"},"referencedDeclaration":2591,"src":"9099:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":8752,"mutability":"mutable","name":"bond","nameLocation":"9132:4:43","nodeType":"VariableDeclaration","scope":8806,"src":"9124:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8751,"name":"uint256","nodeType":"ElementaryTypeName","src":"9124:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8998:144:43"},"returnParameters":{"id":8758,"nodeType":"ParameterList","parameters":[],"src":"9184:0:43"},"scope":9345,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8852,"nodeType":"FunctionDefinition","src":"10138:565:43","nodes":[],"body":{"id":8851,"nodeType":"Block","src":"10349:354:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":8823,"name":"customLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8815,"src":"10377:14:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8822,"name":"_validateLiveness","nodeType":"Identifier","overloadedDeclarations":[9300],"referencedDeclaration":9300,"src":"10359:17:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":8824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10359:33:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8825,"nodeType":"ExpressionStatement","src":"10359:33:43"},{"assignments":[8827],"declarations":[{"constant":false,"id":8827,"mutability":"mutable","name":"managedRequestId","nameLocation":"10410:16:43","nodeType":"VariableDeclaration","scope":8851,"src":"10402:24:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8826,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10402:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8833,"initialValue":{"arguments":[{"id":8829,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8809,"src":"10449:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8830,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8811,"src":"10460:10:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8831,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8813,"src":"10472:13:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8828,"name":"getManagedRequestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9098,"src":"10429:19:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (address,bytes32,bytes memory) pure returns (bytes32)"}},"id":8832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10429:57:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"10402:84:43"},{"expression":{"id":8841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8834,"name":"customLivenessValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8485,"src":"10496:20:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_CustomLiveness_$8456_storage_$","typeString":"mapping(bytes32 => struct ManagedOptimisticOracleV2.CustomLiveness storage ref)"}},"id":8836,"indexExpression":{"id":8835,"name":"managedRequestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8827,"src":"10517:16:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10496:38:43","typeDescriptions":{"typeIdentifier":"t_struct$_CustomLiveness_$8456_storage","typeString":"struct ManagedOptimisticOracleV2.CustomLiveness storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8838,"name":"customLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8815,"src":"10563:14:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":8839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10586:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8837,"name":"CustomLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8456,"src":"10537:14:43","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CustomLiveness_$8456_storage_ptr_$","typeString":"type(struct ManagedOptimisticOracleV2.CustomLiveness storage pointer)"}},"id":8840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["10553:8:43","10579:5:43"],"names":["liveness","isSet"],"nodeType":"FunctionCall","src":"10537:55:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_CustomLiveness_$8456_memory_ptr","typeString":"struct ManagedOptimisticOracleV2.CustomLiveness memory"}},"src":"10496:96:43","typeDescriptions":{"typeIdentifier":"t_struct$_CustomLiveness_$8456_storage","typeString":"struct ManagedOptimisticOracleV2.CustomLiveness storage ref"}},"id":8842,"nodeType":"ExpressionStatement","src":"10496:96:43"},{"eventCall":{"arguments":[{"id":8844,"name":"managedRequestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8827,"src":"10625:16:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8845,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8809,"src":"10643:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8846,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8811,"src":"10654:10:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8847,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8813,"src":"10666:13:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":8848,"name":"customLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8815,"src":"10681:14:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8843,"name":"CustomLivenessSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11215,"src":"10607:17:43","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (bytes32,address,bytes32,bytes memory,uint256)"}},"id":8849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10607:89:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8850,"nodeType":"EmitStatement","src":"10602:94:43"}]},"documentation":{"id":8807,"nodeType":"StructuredDocumentation","src":"9621:512:43","text":" @notice Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before\n being auto-resolved.\n @dev This would also override any subsequent calls to setLiveness() by the requester.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param customLiveness new custom liveness."},"functionSelector":"6982ece0","implemented":true,"kind":"function","modifiers":[{"id":8818,"kind":"modifierInvocation","modifierName":{"id":8817,"name":"nonReentrant","nameLocations":["10317:12:43"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"10317:12:43"},"nodeType":"ModifierInvocation","src":"10317:12:43"},{"id":8820,"kind":"modifierInvocation","modifierName":{"id":8819,"name":"onlyRequestManager","nameLocations":["10330:18:43"],"nodeType":"IdentifierPath","referencedDeclaration":8601,"src":"10330:18:43"},"nodeType":"ModifierInvocation","src":"10330:18:43"}],"name":"requestManagerSetCustomLiveness","nameLocation":"10147:31:43","parameters":{"id":8816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8809,"mutability":"mutable","name":"requester","nameLocation":"10196:9:43","nodeType":"VariableDeclaration","scope":8852,"src":"10188:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8808,"name":"address","nodeType":"ElementaryTypeName","src":"10188:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8811,"mutability":"mutable","name":"identifier","nameLocation":"10223:10:43","nodeType":"VariableDeclaration","scope":8852,"src":"10215:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8810,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10215:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8813,"mutability":"mutable","name":"ancillaryData","nameLocation":"10256:13:43","nodeType":"VariableDeclaration","scope":8852,"src":"10243:26:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8812,"name":"bytes","nodeType":"ElementaryTypeName","src":"10243:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":8815,"mutability":"mutable","name":"customLiveness","nameLocation":"10287:14:43","nodeType":"VariableDeclaration","scope":8852,"src":"10279:22:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8814,"name":"uint256","nodeType":"ElementaryTypeName","src":"10279:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10178:129:43"},"returnParameters":{"id":8821,"nodeType":"ParameterList","parameters":[],"src":"10349:0:43"},"scope":9345,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8905,"nodeType":"FunctionDefinition","src":"11170:687:43","nodes":[],"body":{"id":8904,"nodeType":"Block","src":"11379:478:43","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8868,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8861,"src":"11470:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11491:1:43","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":8870,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11483:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8869,"name":"address","nodeType":"ElementaryTypeName","src":"11483:7:43","typeDescriptions":{}}},"id":8872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11483:10:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11470:23:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8879,"nodeType":"IfStatement","src":"11466:92:43","trueBody":{"id":8878,"nodeType":"Block","src":"11495:63:43","statements":[{"expression":{"arguments":[{"id":8875,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8861,"src":"11537:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8874,"name":"_validateWhitelistInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9229,"src":"11509:27:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":8876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11509:38:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8877,"nodeType":"ExpressionStatement","src":"11509:38:43"}]}},{"assignments":[8881],"declarations":[{"constant":false,"id":8881,"mutability":"mutable","name":"managedRequestId","nameLocation":"11575:16:43","nodeType":"VariableDeclaration","scope":8904,"src":"11567:24:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8880,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11567:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8887,"initialValue":{"arguments":[{"id":8883,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8855,"src":"11614:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8884,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8857,"src":"11625:10:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8885,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8859,"src":"11637:13:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8882,"name":"getManagedRequestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9098,"src":"11594:19:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (address,bytes32,bytes memory) pure returns (bytes32)"}},"id":8886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11594:57:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"11567:84:43"},{"expression":{"id":8894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8888,"name":"customProposerWhitelists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8490,"src":"11661:24:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_contract$_AddressWhitelistInterface_$8359_$","typeString":"mapping(bytes32 => contract AddressWhitelistInterface)"}},"id":8890,"indexExpression":{"id":8889,"name":"managedRequestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8881,"src":"11686:16:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11661:42:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8892,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8861,"src":"11732:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8891,"name":"AddressWhitelistInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8359,"src":"11706:25:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressWhitelistInterface_$8359_$","typeString":"type(contract AddressWhitelistInterface)"}},"id":8893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11706:36:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"src":"11661:81:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"id":8895,"nodeType":"ExpressionStatement","src":"11661:81:43"},{"eventCall":{"arguments":[{"id":8897,"name":"managedRequestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8881,"src":"11784:16:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8898,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8855,"src":"11802:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8899,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8857,"src":"11813:10:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8900,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8859,"src":"11825:13:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":8901,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8861,"src":"11840:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8896,"name":"CustomProposerWhitelistSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11227,"src":"11757:26:43","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$returns$__$","typeString":"function (bytes32,address,bytes32,bytes memory,address)"}},"id":8902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11757:93:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8903,"nodeType":"EmitStatement","src":"11752:98:43"}]},"documentation":{"id":8853,"nodeType":"StructuredDocumentation","src":"10709:456:43","text":" @notice Sets the proposer whitelist for a request.\n @dev This can also be set in advance of the request as the timestamp is omitted from the mapping key derivation.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param whitelist address of the whitelist to set."},"functionSelector":"347b4dba","implemented":true,"kind":"function","modifiers":[{"id":8864,"kind":"modifierInvocation","modifierName":{"id":8863,"name":"nonReentrant","nameLocations":["11347:12:43"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"11347:12:43"},"nodeType":"ModifierInvocation","src":"11347:12:43"},{"id":8866,"kind":"modifierInvocation","modifierName":{"id":8865,"name":"onlyRequestManager","nameLocations":["11360:18:43"],"nodeType":"IdentifierPath","referencedDeclaration":8601,"src":"11360:18:43"},"nodeType":"ModifierInvocation","src":"11360:18:43"}],"name":"requestManagerSetProposerWhitelist","nameLocation":"11179:34:43","parameters":{"id":8862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8855,"mutability":"mutable","name":"requester","nameLocation":"11231:9:43","nodeType":"VariableDeclaration","scope":8905,"src":"11223:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8854,"name":"address","nodeType":"ElementaryTypeName","src":"11223:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8857,"mutability":"mutable","name":"identifier","nameLocation":"11258:10:43","nodeType":"VariableDeclaration","scope":8905,"src":"11250:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8856,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11250:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8859,"mutability":"mutable","name":"ancillaryData","nameLocation":"11291:13:43","nodeType":"VariableDeclaration","scope":8905,"src":"11278:26:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8858,"name":"bytes","nodeType":"ElementaryTypeName","src":"11278:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":8861,"mutability":"mutable","name":"whitelist","nameLocation":"11322:9:43","nodeType":"VariableDeclaration","scope":8905,"src":"11314:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8860,"name":"address","nodeType":"ElementaryTypeName","src":"11314:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11213:124:43"},"returnParameters":{"id":8867,"nodeType":"ParameterList","parameters":[],"src":"11379:0:43"},"scope":9345,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":9021,"nodeType":"FunctionDefinition","src":"12632:1246:43","nodes":[],"body":{"id":9020,"nodeType":"Block","src":"12881:997:43","nodes":[],"statements":[{"assignments":[8926],"declarations":[{"constant":false,"id":8926,"mutability":"mutable","name":"request","nameLocation":"12971:7:43","nodeType":"VariableDeclaration","scope":9020,"src":"12955:23:43","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"},"typeName":{"id":8925,"nodeType":"UserDefinedTypeName","pathNode":{"id":8924,"name":"Request","nameLocations":["12955:7:43"],"nodeType":"IdentifierPath","referencedDeclaration":11388,"src":"12955:7:43"},"referencedDeclaration":11388,"src":"12955:7:43","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"}},"visibility":"internal"}],"id":8933,"initialValue":{"arguments":[{"id":8928,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8910,"src":"12993:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8929,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8912,"src":"13004:10:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8930,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8914,"src":"13016:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8931,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8916,"src":"13027:13:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8927,"name":"_getRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10864,"src":"12981:11:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_Request_$11388_storage_ptr_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (struct OptimisticOracleV2Interface.Request storage pointer)"}},"id":8932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12981:60:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"12955:86:43"},{"assignments":[8935],"declarations":[{"constant":false,"id":8935,"mutability":"mutable","name":"managedRequestId","nameLocation":"13059:16:43","nodeType":"VariableDeclaration","scope":9020,"src":"13051:24:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8934,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13051:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8941,"initialValue":{"arguments":[{"id":8937,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8910,"src":"13098:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8938,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8912,"src":"13109:10:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8939,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8916,"src":"13121:13:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8936,"name":"getManagedRequestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9098,"src":"13078:19:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (address,bytes32,bytes memory) pure returns (bytes32)"}},"id":8940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13078:57:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"13051:84:43"},{"condition":{"expression":{"baseExpression":{"baseExpression":{"id":8942,"name":"customBonds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8480,"src":"13149:11:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_contract$_IERC20_$2591_$_t_struct$_CustomBond_$8451_storage_$_$","typeString":"mapping(bytes32 => mapping(contract IERC20 => struct ManagedOptimisticOracleV2.CustomBond storage ref))"}},"id":8944,"indexExpression":{"id":8943,"name":"managedRequestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8935,"src":"13161:16:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13149:29:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2591_$_t_struct$_CustomBond_$8451_storage_$","typeString":"mapping(contract IERC20 => struct ManagedOptimisticOracleV2.CustomBond storage ref)"}},"id":8947,"indexExpression":{"expression":{"id":8945,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8926,"src":"13179:7:43","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":8946,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13187:8:43","memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":11372,"src":"13179:16:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13149:47:43","typeDescriptions":{"typeIdentifier":"t_struct$_CustomBond_$8451_storage","typeString":"struct ManagedOptimisticOracleV2.CustomBond storage ref"}},"id":8948,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13197:5:43","memberName":"isSet","nodeType":"MemberAccess","referencedDeclaration":8450,"src":"13149:53:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8964,"nodeType":"IfStatement","src":"13145:169:43","trueBody":{"id":8963,"nodeType":"Block","src":"13204:110:43","statements":[{"expression":{"id":8961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":8949,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8926,"src":"13218:7:43","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":8952,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13226:15:43","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"13218:23:43","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":8953,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13242:4:43","memberName":"bond","nodeType":"MemberAccess","referencedDeclaration":11362,"src":"13218:28:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"baseExpression":{"id":8954,"name":"customBonds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8480,"src":"13249:11:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_contract$_IERC20_$2591_$_t_struct$_CustomBond_$8451_storage_$_$","typeString":"mapping(bytes32 => mapping(contract IERC20 => struct ManagedOptimisticOracleV2.CustomBond storage ref))"}},"id":8956,"indexExpression":{"id":8955,"name":"managedRequestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8935,"src":"13261:16:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13249:29:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2591_$_t_struct$_CustomBond_$8451_storage_$","typeString":"mapping(contract IERC20 => struct ManagedOptimisticOracleV2.CustomBond storage ref)"}},"id":8959,"indexExpression":{"expression":{"id":8957,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8926,"src":"13279:7:43","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":8958,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13287:8:43","memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":11372,"src":"13279:16:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13249:47:43","typeDescriptions":{"typeIdentifier":"t_struct$_CustomBond_$8451_storage","typeString":"struct ManagedOptimisticOracleV2.CustomBond storage ref"}},"id":8960,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13297:6:43","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":8448,"src":"13249:54:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13218:85:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8962,"nodeType":"ExpressionStatement","src":"13218:85:43"}]}},{"condition":{"expression":{"baseExpression":{"id":8965,"name":"customLivenessValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8485,"src":"13327:20:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_CustomLiveness_$8456_storage_$","typeString":"mapping(bytes32 => struct ManagedOptimisticOracleV2.CustomLiveness storage ref)"}},"id":8967,"indexExpression":{"id":8966,"name":"managedRequestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8935,"src":"13348:16:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13327:38:43","typeDescriptions":{"typeIdentifier":"t_struct$_CustomLiveness_$8456_storage","typeString":"struct ManagedOptimisticOracleV2.CustomLiveness storage ref"}},"id":8968,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13366:5:43","memberName":"isSet","nodeType":"MemberAccess","referencedDeclaration":8455,"src":"13327:44:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8981,"nodeType":"IfStatement","src":"13323:163:43","trueBody":{"id":8980,"nodeType":"Block","src":"13373:113:43","statements":[{"expression":{"id":8978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":8969,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8926,"src":"13387:7:43","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":8972,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13395:15:43","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"13387:23:43","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":8973,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13411:14:43","memberName":"customLiveness","nodeType":"MemberAccess","referencedDeclaration":11364,"src":"13387:38:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":8974,"name":"customLivenessValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8485,"src":"13428:20:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_CustomLiveness_$8456_storage_$","typeString":"mapping(bytes32 => struct ManagedOptimisticOracleV2.CustomLiveness storage ref)"}},"id":8976,"indexExpression":{"id":8975,"name":"managedRequestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8935,"src":"13449:16:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13428:38:43","typeDescriptions":{"typeIdentifier":"t_struct$_CustomLiveness_$8456_storage","typeString":"struct ManagedOptimisticOracleV2.CustomLiveness storage ref"}},"id":8977,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13467:8:43","memberName":"liveness","nodeType":"MemberAccess","referencedDeclaration":8453,"src":"13428:47:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13387:88:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8979,"nodeType":"ExpressionStatement","src":"13387:88:43"}]}},{"assignments":[8984],"declarations":[{"constant":false,"id":8984,"mutability":"mutable","name":"whitelist","nameLocation":"13522:9:43","nodeType":"VariableDeclaration","scope":9020,"src":"13496:35:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"},"typeName":{"id":8983,"nodeType":"UserDefinedTypeName","pathNode":{"id":8982,"name":"AddressWhitelistInterface","nameLocations":["13496:25:43"],"nodeType":"IdentifierPath","referencedDeclaration":8359,"src":"13496:25:43"},"referencedDeclaration":8359,"src":"13496:25:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"visibility":"internal"}],"id":8990,"initialValue":{"arguments":[{"id":8986,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8910,"src":"13565:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8987,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8912,"src":"13576:10:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8988,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8916,"src":"13588:13:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8985,"name":"_getEffectiveProposerWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9339,"src":"13534:30:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_contract$_AddressWhitelistInterface_$8359_$","typeString":"function (address,bytes32,bytes memory) view returns (contract AddressWhitelistInterface)"}},"id":8989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13534:68:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"nodeType":"VariableDeclarationStatement","src":"13496:106:43"},{"expression":{"arguments":[{"arguments":[{"id":8994,"name":"proposer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8908,"src":"13645:8:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8992,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8984,"src":"13621:9:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"id":8993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13631:13:43","memberName":"isOnWhitelist","nodeType":"MemberAccess","referencedDeclaration":8347,"src":"13621:23:43","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":8995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13621:33:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":8996,"name":"ProposerNotWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11150,"src":"13656:22:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13656:24:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":8991,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13613:7:43","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":8998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13613:68:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8999,"nodeType":"ExpressionStatement","src":"13613:68:43"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":9003,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13723:3:43","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13727:6:43","memberName":"sender","nodeType":"MemberAccess","src":"13723:10:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9001,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8984,"src":"13699:9:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"id":9002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13709:13:43","memberName":"isOnWhitelist","nodeType":"MemberAccess","referencedDeclaration":8347,"src":"13699:23:43","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":9005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13699:35:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9006,"name":"SenderNotWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11153,"src":"13736:20:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13736:22:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9000,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13691:7:43","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13691:68:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9009,"nodeType":"ExpressionStatement","src":"13691:68:43"},{"expression":{"arguments":[{"id":9012,"name":"proposer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8908,"src":"13798:8:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9013,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8910,"src":"13808:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9014,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8912,"src":"13819:10:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9015,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8914,"src":"13831:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9016,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8916,"src":"13842:13:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9017,"name":"proposedPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8918,"src":"13857:13:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":9010,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"13776:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ManagedOptimisticOracleV2_$9345_$","typeString":"type(contract super ManagedOptimisticOracleV2)"}},"id":9011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13782:15:43","memberName":"proposePriceFor","nodeType":"MemberAccess","referencedDeclaration":10157,"src":"13776:21:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$_t_int256_$returns$_t_uint256_$","typeString":"function (address,address,bytes32,uint256,bytes memory,int256) returns (uint256)"}},"id":9018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13776:95:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8923,"id":9019,"nodeType":"Return","src":"13769:102:43"}]},"baseFunctions":[10157],"documentation":{"id":8906,"nodeType":"StructuredDocumentation","src":"11863:764:43","text":" @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\n from this proposal. However, any bonds are pulled from the caller.\n @param proposer address to set as the proposer.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param proposedPrice price being proposed.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the proposer once settled if the proposal is correct."},"functionSelector":"7c82288f","implemented":true,"kind":"function","modifiers":[],"name":"proposePriceFor","nameLocation":"12641:15:43","overrides":{"id":8920,"nodeType":"OverrideSpecifier","overrides":[],"src":"12844:8:43"},"parameters":{"id":8919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8908,"mutability":"mutable","name":"proposer","nameLocation":"12674:8:43","nodeType":"VariableDeclaration","scope":9021,"src":"12666:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8907,"name":"address","nodeType":"ElementaryTypeName","src":"12666:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8910,"mutability":"mutable","name":"requester","nameLocation":"12700:9:43","nodeType":"VariableDeclaration","scope":9021,"src":"12692:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8909,"name":"address","nodeType":"ElementaryTypeName","src":"12692:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8912,"mutability":"mutable","name":"identifier","nameLocation":"12727:10:43","nodeType":"VariableDeclaration","scope":9021,"src":"12719:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8911,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12719:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8914,"mutability":"mutable","name":"timestamp","nameLocation":"12755:9:43","nodeType":"VariableDeclaration","scope":9021,"src":"12747:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8913,"name":"uint256","nodeType":"ElementaryTypeName","src":"12747:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8916,"mutability":"mutable","name":"ancillaryData","nameLocation":"12787:13:43","nodeType":"VariableDeclaration","scope":9021,"src":"12774:26:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8915,"name":"bytes","nodeType":"ElementaryTypeName","src":"12774:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":8918,"mutability":"mutable","name":"proposedPrice","nameLocation":"12817:13:43","nodeType":"VariableDeclaration","scope":9021,"src":"12810:20:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8917,"name":"int256","nodeType":"ElementaryTypeName","src":"12810:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"12656:180:43"},"returnParameters":{"id":8923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8922,"mutability":"mutable","name":"totalBond","nameLocation":"12870:9:43","nodeType":"VariableDeclaration","scope":9021,"src":"12862:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8921,"name":"uint256","nodeType":"ElementaryTypeName","src":"12862:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12861:19:43"},"scope":9345,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":9043,"nodeType":"FunctionDefinition","src":"14423:288:43","nodes":[],"body":{"id":9042,"nodeType":"Block","src":"14604:107:43","nodes":[],"statements":[{"expression":{"baseExpression":{"id":9034,"name":"customProposerWhitelists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8490,"src":"14621:24:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_contract$_AddressWhitelistInterface_$8359_$","typeString":"mapping(bytes32 => contract AddressWhitelistInterface)"}},"id":9040,"indexExpression":{"arguments":[{"id":9036,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9024,"src":"14666:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9037,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9026,"src":"14677:10:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9038,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9028,"src":"14689:13:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9035,"name":"getManagedRequestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9098,"src":"14646:19:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (address,bytes32,bytes memory) pure returns (bytes32)"}},"id":9039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14646:57:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14621:83:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"functionReturnParameters":9033,"id":9041,"nodeType":"Return","src":"14614:90:43"}]},"documentation":{"id":9022,"nodeType":"StructuredDocumentation","src":"13884:534:43","text":" @notice Gets the custom proposer whitelist for a request.\n @dev This omits the timestamp from the key derivation, so the whitelist might have been set in advance of the\n request.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return AddressWhitelistInterface the custom proposer whitelist for the request or zero address if not set."},"functionSelector":"7746e7ae","implemented":true,"kind":"function","modifiers":[],"name":"getCustomProposerWhitelist","nameLocation":"14432:26:43","parameters":{"id":9029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9024,"mutability":"mutable","name":"requester","nameLocation":"14467:9:43","nodeType":"VariableDeclaration","scope":9043,"src":"14459:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9023,"name":"address","nodeType":"ElementaryTypeName","src":"14459:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9026,"mutability":"mutable","name":"identifier","nameLocation":"14486:10:43","nodeType":"VariableDeclaration","scope":9043,"src":"14478:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9025,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14478:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9028,"mutability":"mutable","name":"ancillaryData","nameLocation":"14511:13:43","nodeType":"VariableDeclaration","scope":9043,"src":"14498:26:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9027,"name":"bytes","nodeType":"ElementaryTypeName","src":"14498:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14458:67:43"},"returnParameters":{"id":9033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9032,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9043,"src":"14573:25:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"},"typeName":{"id":9031,"nodeType":"UserDefinedTypeName","pathNode":{"id":9030,"name":"AddressWhitelistInterface","nameLocations":["14573:25:43"],"nodeType":"IdentifierPath","referencedDeclaration":8359,"src":"14573:25:43"},"referencedDeclaration":8359,"src":"14573:25:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"visibility":"internal"}],"src":"14572:27:43"},"scope":9345,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":9076,"nodeType":"FunctionDefinition","src":"15565:414:43","nodes":[],"body":{"id":9075,"nodeType":"Block","src":"15781:198:43","nodes":[],"statements":[{"assignments":[9060],"declarations":[{"constant":false,"id":9060,"mutability":"mutable","name":"whitelist","nameLocation":"15817:9:43","nodeType":"VariableDeclaration","scope":9075,"src":"15791:35:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"},"typeName":{"id":9059,"nodeType":"UserDefinedTypeName","pathNode":{"id":9058,"name":"AddressWhitelistInterface","nameLocations":["15791:25:43"],"nodeType":"IdentifierPath","referencedDeclaration":8359,"src":"15791:25:43"},"referencedDeclaration":8359,"src":"15791:25:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"visibility":"internal"}],"id":9066,"initialValue":{"arguments":[{"id":9062,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9046,"src":"15860:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9063,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9048,"src":"15871:10:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9064,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9050,"src":"15883:13:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9061,"name":"_getEffectiveProposerWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9339,"src":"15829:30:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_contract$_AddressWhitelistInterface_$8359_$","typeString":"function (address,bytes32,bytes memory) view returns (contract AddressWhitelistInterface)"}},"id":9065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15829:68:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"nodeType":"VariableDeclarationStatement","src":"15791:106:43"},{"expression":{"components":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9067,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9060,"src":"15915:9:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"id":9068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15925:12:43","memberName":"getWhitelist","nodeType":"MemberAccess","referencedDeclaration":8353,"src":"15915:22:43","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function () view external returns (address[] memory)"}},"id":9069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15915:24:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9070,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9060,"src":"15941:9:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"id":9071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15951:18:43","memberName":"isWhitelistEnabled","nodeType":"MemberAccess","referencedDeclaration":8358,"src":"15941:28:43","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":9072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15941:30:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":9073,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15914:58:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_bool_$","typeString":"tuple(address[] memory,bool)"}},"functionReturnParameters":9057,"id":9074,"nodeType":"Return","src":"15907:65:43"}]},"documentation":{"id":9044,"nodeType":"StructuredDocumentation","src":"14717:843:43","text":" @notice Returns the proposer whitelist and whether whitelist is enabled for a given request.\n @dev If no custom proposer whitelist is set for the request, the default proposer whitelist is used.\n If whitelist used is DisabledAddressWhitelist, the returned proposer list will be empty and isEnabled will be false,\n indicating that any address is allowed to propose.\n @param requester The address that made or will make the price request.\n @param identifier The identifier of the price request.\n @param ancillaryData Additional data used to uniquely identify the request.\n @return allowedProposers The list of addresses allowed to propose, if whitelist is enabled. Otherwise, an empty array.\n @return isEnabled A boolean indicating whether whitelist is enabled for this request."},"functionSelector":"a625b01e","implemented":true,"kind":"function","modifiers":[],"name":"getProposerWhitelistWithEnabledStatus","nameLocation":"15574:37:43","parameters":{"id":9051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9046,"mutability":"mutable","name":"requester","nameLocation":"15620:9:43","nodeType":"VariableDeclaration","scope":9076,"src":"15612:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9045,"name":"address","nodeType":"ElementaryTypeName","src":"15612:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9048,"mutability":"mutable","name":"identifier","nameLocation":"15639:10:43","nodeType":"VariableDeclaration","scope":9076,"src":"15631:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9047,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15631:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9050,"mutability":"mutable","name":"ancillaryData","nameLocation":"15664:13:43","nodeType":"VariableDeclaration","scope":9076,"src":"15651:26:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9049,"name":"bytes","nodeType":"ElementaryTypeName","src":"15651:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15611:67:43"},"returnParameters":{"id":9057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9054,"mutability":"mutable","name":"allowedProposers","nameLocation":"15743:16:43","nodeType":"VariableDeclaration","scope":9076,"src":"15726:33:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9052,"name":"address","nodeType":"ElementaryTypeName","src":"15726:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9053,"nodeType":"ArrayTypeName","src":"15726:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":9056,"mutability":"mutable","name":"isEnabled","nameLocation":"15766:9:43","nodeType":"VariableDeclaration","scope":9076,"src":"15761:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9055,"name":"bool","nodeType":"ElementaryTypeName","src":"15761:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15725:51:43"},"scope":9345,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":9098,"nodeType":"FunctionDefinition","src":"16429:243:43","nodes":[],"body":{"id":9097,"nodeType":"Block","src":"16583:89:43","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":9091,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9079,"src":"16627:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9092,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9081,"src":"16638:10:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9093,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9083,"src":"16650:13:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9089,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16610:3:43","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9090,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16614:12:43","memberName":"encodePacked","nodeType":"MemberAccess","src":"16610:16:43","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":9094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16610:54:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9088,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16600:9:43","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":9095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16600:65:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":9087,"id":9096,"nodeType":"Return","src":"16593:72:43"}]},"documentation":{"id":9077,"nodeType":"StructuredDocumentation","src":"15985:439:43","text":" @notice Gets the ID for a managed request.\n @dev This omits the timestamp from the key derivation, so it can be used for managed requests in advance.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return bytes32 the ID for the managed request."},"functionSelector":"4835698a","implemented":true,"kind":"function","modifiers":[],"name":"getManagedRequestId","nameLocation":"16438:19:43","parameters":{"id":9084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9079,"mutability":"mutable","name":"requester","nameLocation":"16466:9:43","nodeType":"VariableDeclaration","scope":9098,"src":"16458:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9078,"name":"address","nodeType":"ElementaryTypeName","src":"16458:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9081,"mutability":"mutable","name":"identifier","nameLocation":"16485:10:43","nodeType":"VariableDeclaration","scope":9098,"src":"16477:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9080,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16477:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9083,"mutability":"mutable","name":"ancillaryData","nameLocation":"16510:13:43","nodeType":"VariableDeclaration","scope":9098,"src":"16497:26:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9082,"name":"bytes","nodeType":"ElementaryTypeName","src":"16497:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16457:67:43"},"returnParameters":{"id":9087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9086,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9098,"src":"16570:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9085,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16570:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16569:9:43"},"scope":9345,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":9146,"nodeType":"FunctionDefinition","src":"17167:426:43","nodes":[],"body":{"id":9145,"nodeType":"Block","src":"17252:341:43","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":9114,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9102,"src":"17318:8:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}],"id":9113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17310:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9112,"name":"address","nodeType":"ElementaryTypeName","src":"17310:7:43","typeDescriptions":{}}},"id":9115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17310:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9109,"name":"_getCollateralWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11026,"src":"17270:23:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_AddressWhitelist_$8065_$","typeString":"function () view returns (contract AddressWhitelist)"}},"id":9110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17270:25:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelist_$8065","typeString":"contract AddressWhitelist"}},"id":9111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17296:13:43","memberName":"isOnWhitelist","nodeType":"MemberAccess","referencedDeclaration":7944,"src":"17270:39:43","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":9116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17270:58:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9117,"name":"UnsupportedCurrency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11250,"src":"17330:19:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17330:21:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9108,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17262:7:43","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17262:90:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9120,"nodeType":"ExpressionStatement","src":"17262:90:43"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":9126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9122,"name":"newRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9105,"src":"17370:8:43","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_calldata_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange calldata"}},"id":9123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17379:11:43","memberName":"minimumBond","nodeType":"MemberAccess","referencedDeclaration":8436,"src":"17370:20:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":9124,"name":"newRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9105,"src":"17394:8:43","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_calldata_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange calldata"}},"id":9125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17403:11:43","memberName":"maximumBond","nodeType":"MemberAccess","referencedDeclaration":8438,"src":"17394:20:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"17370:44:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9127,"name":"MinimumBondAboveMaximumBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11159,"src":"17416:27:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17416:29:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9121,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17362:7:43","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17362:84:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9130,"nodeType":"ExpressionStatement","src":"17362:84:43"},{"expression":{"id":9135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9131,"name":"allowedBondRanges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8496,"src":"17456:17:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2591_$_t_struct$_BondRange_$8439_storage_$","typeString":"mapping(contract IERC20 => struct ManagedOptimisticOracleV2.BondRange storage ref)"}},"id":9133,"indexExpression":{"id":9132,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9102,"src":"17474:8:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17456:27:43","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_storage","typeString":"struct ManagedOptimisticOracleV2.BondRange storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9134,"name":"newRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9105,"src":"17486:8:43","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_calldata_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange calldata"}},"src":"17456:38:43","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_storage","typeString":"struct ManagedOptimisticOracleV2.BondRange storage ref"}},"id":9136,"nodeType":"ExpressionStatement","src":"17456:38:43"},{"eventCall":{"arguments":[{"id":9138,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9102,"src":"17533:8:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},{"expression":{"id":9139,"name":"newRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9105,"src":"17543:8:43","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_calldata_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange calldata"}},"id":9140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17552:11:43","memberName":"minimumBond","nodeType":"MemberAccess","referencedDeclaration":8436,"src":"17543:20:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":9141,"name":"newRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9105,"src":"17565:8:43","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_calldata_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange calldata"}},"id":9142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17574:11:43","memberName":"maximumBond","nodeType":"MemberAccess","referencedDeclaration":8438,"src":"17565:20:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":9137,"name":"AllowedBondRangeUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11176,"src":"17509:23:43","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IERC20_$2591_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256,uint256)"}},"id":9143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17509:77:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9144,"nodeType":"EmitStatement","src":"17504:82:43"}]},"documentation":{"id":9099,"nodeType":"StructuredDocumentation","src":"16678:484:43","text":" @notice Sets the bounds for a bond that can be set for a request.\n @dev This can be used to limit the bond amount that can be set by request managers. Setting the minimum and\n maximum both to 0 effectively blocks the request manager from overriding the bond for a given currency.\n @param currency the ERC20 token used for bonding proposals and disputes. Must be approved for use with the DVM.\n @param newRange new allowed range for the bond."},"implemented":true,"kind":"function","modifiers":[],"name":"_setAllowedBondRange","nameLocation":"17176:20:43","parameters":{"id":9106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9102,"mutability":"mutable","name":"currency","nameLocation":"17204:8:43","nodeType":"VariableDeclaration","scope":9146,"src":"17197:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":9101,"nodeType":"UserDefinedTypeName","pathNode":{"id":9100,"name":"IERC20","nameLocations":["17197:6:43"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"17197:6:43"},"referencedDeclaration":2591,"src":"17197:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9105,"mutability":"mutable","name":"newRange","nameLocation":"17233:8:43","nodeType":"VariableDeclaration","scope":9146,"src":"17214:27:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_calldata_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange"},"typeName":{"id":9104,"nodeType":"UserDefinedTypeName","pathNode":{"id":9103,"name":"BondRange","nameLocations":["17214:9:43"],"nodeType":"IdentifierPath","referencedDeclaration":8439,"src":"17214:9:43"},"referencedDeclaration":8439,"src":"17214:9:43","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_storage_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange"}},"visibility":"internal"}],"src":"17196:46:43"},"returnParameters":{"id":9107,"nodeType":"ParameterList","parameters":[],"src":"17252:0:43"},"scope":9345,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":9167,"nodeType":"FunctionDefinition","src":"17842:221:43","nodes":[],"body":{"id":9166,"nodeType":"Block","src":"17906:157:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":9155,"name":"_minimumLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9149,"src":"17940:16:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9152,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"17916:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ManagedOptimisticOracleV2_$9345_$","typeString":"type(contract super ManagedOptimisticOracleV2)"}},"id":9154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17922:17:43","memberName":"_validateLiveness","nodeType":"MemberAccess","referencedDeclaration":10901,"src":"17916:23:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":9156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17916:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9157,"nodeType":"ExpressionStatement","src":"17916:41:43"},{"expression":{"id":9160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9158,"name":"minimumLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8498,"src":"17967:15:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9159,"name":"_minimumLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9149,"src":"17985:16:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17967:34:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9161,"nodeType":"ExpressionStatement","src":"17967:34:43"},{"eventCall":{"arguments":[{"id":9163,"name":"_minimumLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9149,"src":"18039:16:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9162,"name":"MinimumLivenessUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11180,"src":"18016:22:43","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":9164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18016:40:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9165,"nodeType":"EmitStatement","src":"18011:45:43"}]},"documentation":{"id":9147,"nodeType":"StructuredDocumentation","src":"17599:238:43","text":" @notice Sets the minimum liveness that can be set for a request.\n @dev This can be used to limit the liveness period that can be set by request managers.\n @param _minimumLiveness new minimum liveness period."},"implemented":true,"kind":"function","modifiers":[],"name":"_setMinimumLiveness","nameLocation":"17851:19:43","parameters":{"id":9150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9149,"mutability":"mutable","name":"_minimumLiveness","nameLocation":"17879:16:43","nodeType":"VariableDeclaration","scope":9167,"src":"17871:24:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9148,"name":"uint256","nodeType":"ElementaryTypeName","src":"17871:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17870:26:43"},"returnParameters":{"id":9151,"nodeType":"ParameterList","parameters":[],"src":"17906:0:43"},"scope":9345,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":9188,"nodeType":"FunctionDefinition","src":"18194:251:43","nodes":[],"body":{"id":9187,"nodeType":"Block","src":"18260:185:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":9174,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9170,"src":"18298:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9173,"name":"_validateWhitelistInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9229,"src":"18270:27:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":9175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18270:38:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9176,"nodeType":"ExpressionStatement","src":"18270:38:43"},{"expression":{"id":9181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9177,"name":"defaultProposerWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8469,"src":"18318:24:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9179,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9170,"src":"18371:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9178,"name":"AddressWhitelistInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8359,"src":"18345:25:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressWhitelistInterface_$8359_$","typeString":"type(contract AddressWhitelistInterface)"}},"id":9180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18345:36:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"src":"18318:63:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"id":9182,"nodeType":"ExpressionStatement","src":"18318:63:43"},{"eventCall":{"arguments":[{"id":9184,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9170,"src":"18428:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9183,"name":"DefaultProposerWhitelistUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11184,"src":"18396:31:43","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18396:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9186,"nodeType":"EmitStatement","src":"18391:47:43"}]},"documentation":{"id":9168,"nodeType":"StructuredDocumentation","src":"18069:120:43","text":" @notice Sets the default proposer whitelist.\n @param whitelist address of the whitelist to set."},"implemented":true,"kind":"function","modifiers":[],"name":"_setDefaultProposerWhitelist","nameLocation":"18203:28:43","parameters":{"id":9171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9170,"mutability":"mutable","name":"whitelist","nameLocation":"18240:9:43","nodeType":"VariableDeclaration","scope":9188,"src":"18232:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9169,"name":"address","nodeType":"ElementaryTypeName","src":"18232:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18231:19:43"},"returnParameters":{"id":9172,"nodeType":"ParameterList","parameters":[],"src":"18260:0:43"},"scope":9345,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":9209,"nodeType":"FunctionDefinition","src":"18569:233:43","nodes":[],"body":{"id":9208,"nodeType":"Block","src":"18629:173:43","nodes":[],"statements":[{"expression":{"arguments":[{"id":9195,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9191,"src":"18667:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9194,"name":"_validateWhitelistInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9229,"src":"18639:27:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":9196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18639:38:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9197,"nodeType":"ExpressionStatement","src":"18639:38:43"},{"expression":{"id":9202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9198,"name":"requesterWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8472,"src":"18687:18:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9200,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9191,"src":"18734:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9199,"name":"AddressWhitelistInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8359,"src":"18708:25:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressWhitelistInterface_$8359_$","typeString":"type(contract AddressWhitelistInterface)"}},"id":9201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18708:36:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"src":"18687:57:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"id":9203,"nodeType":"ExpressionStatement","src":"18687:57:43"},{"eventCall":{"arguments":[{"id":9205,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9191,"src":"18785:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9204,"name":"RequesterWhitelistUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11188,"src":"18759:25:43","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18759:36:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9207,"nodeType":"EmitStatement","src":"18754:41:43"}]},"documentation":{"id":9189,"nodeType":"StructuredDocumentation","src":"18451:113:43","text":" @notice Sets the requester whitelist.\n @param whitelist address of the whitelist to set."},"implemented":true,"kind":"function","modifiers":[],"name":"_setRequesterWhitelist","nameLocation":"18578:22:43","parameters":{"id":9192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9191,"mutability":"mutable","name":"whitelist","nameLocation":"18609:9:43","nodeType":"VariableDeclaration","scope":9209,"src":"18601:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9190,"name":"address","nodeType":"ElementaryTypeName","src":"18601:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18600:19:43"},"returnParameters":{"id":9193,"nodeType":"ParameterList","parameters":[],"src":"18629:0:43"},"scope":9345,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":9229,"nodeType":"FunctionDefinition","src":"19045:250:43","nodes":[],"body":{"id":9228,"nodeType":"Block","src":"19115:180:43","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":9218,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9212,"src":"19178:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":9220,"name":"AddressWhitelistInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8359,"src":"19194:25:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressWhitelistInterface_$8359_$","typeString":"type(contract AddressWhitelistInterface)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_AddressWhitelistInterface_$8359_$","typeString":"type(contract AddressWhitelistInterface)"}],"id":9219,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"19189:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":9221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19189:31:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_AddressWhitelistInterface_$8359","typeString":"type(contract AddressWhitelistInterface)"}},"id":9222,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19221:11:43","memberName":"interfaceId","nodeType":"MemberAccess","src":"19189:43:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":9216,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3762,"src":"19146:13:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC165Checker_$3762_$","typeString":"type(library ERC165Checker)"}},"id":9217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19160:17:43","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":3618,"src":"19146:31:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":9223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19146:87:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9224,"name":"UnsupportedWhitelistInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11156,"src":"19247:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19247:31:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9215,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"19125:7:43","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19125:163:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9227,"nodeType":"ExpressionStatement","src":"19125:163:43"}]},"documentation":{"id":9210,"nodeType":"StructuredDocumentation","src":"18808:232:43","text":" @notice Validates that the given address implements the AddressWhitelistInterface.\n @dev Reverts if the address does not implement the interface.\n @param whitelist address of the whitelist to validate."},"implemented":true,"kind":"function","modifiers":[],"name":"_validateWhitelistInterface","nameLocation":"19054:27:43","parameters":{"id":9213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9212,"mutability":"mutable","name":"whitelist","nameLocation":"19090:9:43","nodeType":"VariableDeclaration","scope":9229,"src":"19082:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9211,"name":"address","nodeType":"ElementaryTypeName","src":"19082:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19081:19:43"},"returnParameters":{"id":9214,"nodeType":"ParameterList","parameters":[],"src":"19115:0:43"},"scope":9345,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":9278,"nodeType":"FunctionDefinition","src":"19707:364:43","nodes":[],"body":{"id":9277,"nodeType":"Block","src":"19775:296:43","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9239,"name":"bond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9235,"src":"19793:4:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":9240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19801:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19793:9:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9242,"name":"ZeroBondNotAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11138,"src":"19804:18:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19804:20:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9238,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"19785:7:43","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19785:40:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9245,"nodeType":"ExpressionStatement","src":"19785:40:43"},{"assignments":[9248],"declarations":[{"constant":false,"id":9248,"mutability":"mutable","name":"allowedRange","nameLocation":"19852:12:43","nodeType":"VariableDeclaration","scope":9277,"src":"19835:29:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_memory_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange"},"typeName":{"id":9247,"nodeType":"UserDefinedTypeName","pathNode":{"id":9246,"name":"BondRange","nameLocations":["19835:9:43"],"nodeType":"IdentifierPath","referencedDeclaration":8439,"src":"19835:9:43"},"referencedDeclaration":8439,"src":"19835:9:43","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_storage_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange"}},"visibility":"internal"}],"id":9252,"initialValue":{"baseExpression":{"id":9249,"name":"allowedBondRanges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8496,"src":"19867:17:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$2591_$_t_struct$_BondRange_$8439_storage_$","typeString":"mapping(contract IERC20 => struct ManagedOptimisticOracleV2.BondRange storage ref)"}},"id":9251,"indexExpression":{"id":9250,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9233,"src":"19885:8:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19867:27:43","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_storage","typeString":"struct ManagedOptimisticOracleV2.BondRange storage ref"}},"nodeType":"VariableDeclarationStatement","src":"19835:59:43"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9254,"name":"bond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9235,"src":"19912:4:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"expression":{"id":9257,"name":"allowedRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9248,"src":"19928:12:43","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_memory_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange memory"}},"id":9258,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19941:11:43","memberName":"minimumBond","nodeType":"MemberAccess","referencedDeclaration":8436,"src":"19928:24:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":9256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19920:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9255,"name":"uint256","nodeType":"ElementaryTypeName","src":"19920:7:43","typeDescriptions":{}}},"id":9259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19920:33:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19912:41:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9261,"name":"BondBelowMinimumBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11141,"src":"19955:20:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19955:22:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9253,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"19904:7:43","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19904:74:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9264,"nodeType":"ExpressionStatement","src":"19904:74:43"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9266,"name":"bond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9235,"src":"19996:4:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"expression":{"id":9269,"name":"allowedRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9248,"src":"20012:12:43","typeDescriptions":{"typeIdentifier":"t_struct$_BondRange_$8439_memory_ptr","typeString":"struct ManagedOptimisticOracleV2.BondRange memory"}},"id":9270,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20025:11:43","memberName":"maximumBond","nodeType":"MemberAccess","referencedDeclaration":8438,"src":"20012:24:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":9268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20004:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9267,"name":"uint256","nodeType":"ElementaryTypeName","src":"20004:7:43","typeDescriptions":{}}},"id":9271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20004:33:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19996:41:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9273,"name":"BondExceedsMaximumBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11144,"src":"20039:22:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20039:24:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9265,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"19988:7:43","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19988:76:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9276,"nodeType":"ExpressionStatement","src":"19988:76:43"}]},"documentation":{"id":9230,"nodeType":"StructuredDocumentation","src":"19301:401:43","text":" @notice Validates the bond amount.\n @dev Reverts if the bond is outside the allowed bond range (controllable by the config admin) or it is 0 (which\n makes sure the allowed bond range was explicitly set).\n @param currency the ERC20 token used for bonding proposals and disputes. Must be approved for use with the DVM.\n @param bond the bond amount to validate."},"implemented":true,"kind":"function","modifiers":[],"name":"_validateBond","nameLocation":"19716:13:43","parameters":{"id":9236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9233,"mutability":"mutable","name":"currency","nameLocation":"19737:8:43","nodeType":"VariableDeclaration","scope":9278,"src":"19730:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":9232,"nodeType":"UserDefinedTypeName","pathNode":{"id":9231,"name":"IERC20","nameLocations":["19730:6:43"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"19730:6:43"},"referencedDeclaration":2591,"src":"19730:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9235,"mutability":"mutable","name":"bond","nameLocation":"19755:4:43","nodeType":"VariableDeclaration","scope":9278,"src":"19747:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9234,"name":"uint256","nodeType":"ElementaryTypeName","src":"19747:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19729:31:43"},"returnParameters":{"id":9237,"nodeType":"ParameterList","parameters":[],"src":"19775:0:43"},"scope":9345,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":9300,"nodeType":"FunctionDefinition","src":"20383:182:43","nodes":[],"body":{"id":9299,"nodeType":"Block","src":"20451:114:43","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9286,"name":"liveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9281,"src":"20469:8:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":9287,"name":"minimumLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8498,"src":"20481:15:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20469:27:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9289,"name":"LivenessTooLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11147,"src":"20498:14:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20498:16:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9285,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"20461:7:43","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20461:54:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9292,"nodeType":"ExpressionStatement","src":"20461:54:43"},{"expression":{"arguments":[{"id":9296,"name":"liveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9281,"src":"20549:8:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9293,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"20525:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ManagedOptimisticOracleV2_$9345_$","typeString":"type(contract super ManagedOptimisticOracleV2)"}},"id":9295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20531:17:43","memberName":"_validateLiveness","nodeType":"MemberAccess","referencedDeclaration":10901,"src":"20525:23:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":9297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20525:33:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9298,"nodeType":"ExpressionStatement","src":"20525:33:43"}]},"baseFunctions":[10901],"documentation":{"id":9279,"nodeType":"StructuredDocumentation","src":"20077:301:43","text":" @notice Validates the liveness period.\n @dev Reverts if the liveness period is less than the minimum liveness (controllable by the config admin) or\n above the maximum liveness (which is set in the parent contract).\n @param liveness the liveness period to validate."},"implemented":true,"kind":"function","modifiers":[],"name":"_validateLiveness","nameLocation":"20392:17:43","overrides":{"id":9283,"nodeType":"OverrideSpecifier","overrides":[],"src":"20442:8:43"},"parameters":{"id":9282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9281,"mutability":"mutable","name":"liveness","nameLocation":"20418:8:43","nodeType":"VariableDeclaration","scope":9300,"src":"20410:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9280,"name":"uint256","nodeType":"ElementaryTypeName","src":"20410:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20409:18:43"},"returnParameters":{"id":9284,"nodeType":"ParameterList","parameters":[],"src":"20451:0:43"},"scope":9345,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":9339,"nodeType":"FunctionDefinition","src":"21182:415:43","nodes":[],"body":{"id":9338,"nodeType":"Block","src":"21377:220:43","nodes":[],"statements":[{"expression":{"id":9321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9313,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9311,"src":"21387:9:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":9314,"name":"customProposerWhitelists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8490,"src":"21399:24:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_contract$_AddressWhitelistInterface_$8359_$","typeString":"mapping(bytes32 => contract AddressWhitelistInterface)"}},"id":9320,"indexExpression":{"arguments":[{"id":9316,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9303,"src":"21444:9:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9317,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9305,"src":"21455:10:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9318,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9307,"src":"21467:13:43","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9315,"name":"getManagedRequestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9098,"src":"21424:19:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (address,bytes32,bytes memory) pure returns (bytes32)"}},"id":9319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21424:57:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21399:83:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"src":"21387:95:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"id":9322,"nodeType":"ExpressionStatement","src":"21387:95:43"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9325,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9311,"src":"21504:9:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}],"id":9324,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21496:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9323,"name":"address","nodeType":"ElementaryTypeName","src":"21496:7:43","typeDescriptions":{}}},"id":9326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21496:18:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":9329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21526:1:43","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":9328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21518:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9327,"name":"address","nodeType":"ElementaryTypeName","src":"21518:7:43","typeDescriptions":{}}},"id":9330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21518:10:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21496:32:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9337,"nodeType":"IfStatement","src":"21492:99:43","trueBody":{"id":9336,"nodeType":"Block","src":"21530:61:43","statements":[{"expression":{"id":9334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9332,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9311,"src":"21544:9:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9333,"name":"defaultProposerWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8469,"src":"21556:24:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"src":"21544:36:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"id":9335,"nodeType":"ExpressionStatement","src":"21544:36:43"}]}}]},"documentation":{"id":9301,"nodeType":"StructuredDocumentation","src":"20571:606:43","text":" @notice Gets the effective proposer whitelist contract for a given request.\n @dev Returns the custom proposer whitelist if set; otherwise falls back to the default. Timestamp is omitted from\n the key derivation, so this can be used for checks before the request is made.\n @param requester The address that made or will make the price request.\n @param identifier The identifier of the price request.\n @param ancillaryData Additional data used to uniquely identify the request.\n @return whitelist The effective AddressWhitelistInterface for the request."},"implemented":true,"kind":"function","modifiers":[],"name":"_getEffectiveProposerWhitelist","nameLocation":"21191:30:43","parameters":{"id":9308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9303,"mutability":"mutable","name":"requester","nameLocation":"21230:9:43","nodeType":"VariableDeclaration","scope":9339,"src":"21222:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9302,"name":"address","nodeType":"ElementaryTypeName","src":"21222:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9305,"mutability":"mutable","name":"identifier","nameLocation":"21249:10:43","nodeType":"VariableDeclaration","scope":9339,"src":"21241:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9304,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21241:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9307,"mutability":"mutable","name":"ancillaryData","nameLocation":"21274:13:43","nodeType":"VariableDeclaration","scope":9339,"src":"21261:26:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9306,"name":"bytes","nodeType":"ElementaryTypeName","src":"21261:5:43","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21221:67:43"},"returnParameters":{"id":9312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9311,"mutability":"mutable","name":"whitelist","nameLocation":"21362:9:43","nodeType":"VariableDeclaration","scope":9339,"src":"21336:35:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"},"typeName":{"id":9310,"nodeType":"UserDefinedTypeName","pathNode":{"id":9309,"name":"AddressWhitelistInterface","nameLocations":["21336:25:43"],"nodeType":"IdentifierPath","referencedDeclaration":8359,"src":"21336:25:43"},"referencedDeclaration":8359,"src":"21336:25:43","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelistInterface_$8359","typeString":"contract AddressWhitelistInterface"}},"visibility":"internal"}],"src":"21335:37:43"},"scope":9345,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":9344,"nodeType":"VariableDeclaration","src":"22025:26:43","nodes":[],"constant":false,"documentation":{"id":9340,"nodeType":"StructuredDocumentation","src":"21603:417:43","text":" @dev Reserve storage slots for future versions of this base contract to add state variables without affecting the\n storage layout of child contracts. Decrement the size of __gap whenever state variables are added. This is at the\n bottom of contract to make sure its always at the end of storage.\n See https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable#storage-gaps"},"mutability":"mutable","name":"__gap","nameLocation":"22046:5:43","scope":9345,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$993_storage","typeString":"uint256[993]"},"typeName":{"baseType":{"id":9341,"name":"uint256","nodeType":"ElementaryTypeName","src":"22025:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9343,"length":{"hexValue":"393933","id":9342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22033:3:43","typeDescriptions":{"typeIdentifier":"t_rational_993_by_1","typeString":"int_const 993"},"value":"993"},"nodeType":"ArrayTypeName","src":"22025:12:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$993_storage_ptr","typeString":"uint256[993]"}},"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":8429,"name":"ManagedOptimisticOracleV2Interface","nameLocations":["807:34:43"],"nodeType":"IdentifierPath","referencedDeclaration":11228,"src":"807:34:43"},"id":8430,"nodeType":"InheritanceSpecifier","src":"807:34:43"},{"baseName":{"id":8431,"name":"OptimisticOracleV2","nameLocations":["843:18:43"],"nodeType":"IdentifierPath","referencedDeclaration":11127,"src":"843:18:43"},"id":8432,"nodeType":"InheritanceSpecifier","src":"843:18:43"},{"baseName":{"id":8433,"name":"MultiCaller","nameLocations":["863:11:43"],"nodeType":"IdentifierPath","referencedDeclaration":8328,"src":"863:11:43"},"id":8434,"nodeType":"InheritanceSpecifier","src":"863:11:43"}],"canonicalName":"ManagedOptimisticOracleV2","contractDependencies":[],"contractKind":"contract","documentation":{"id":8428,"nodeType":"StructuredDocumentation","src":"570:198:43","text":" @title Managed Optimistic Oracle V2.\n @notice Pre-DVM escalation contract that allows faster settlement and management of price requests.\n @custom:security-contact bugs@umaproject.org"},"fullyImplemented":true,"linearizedBaseContracts":[9345,8328,11127,8244,1212,364,1748,3774,2199,2078,1831,1708,1662,2209,1480,11640,11228],"name":"ManagedOptimisticOracleV2","nameLocation":"778:25:43","scope":9346,"usedErrors":[1229,1232,1507,1512,1758,1761,1991,1994,1999,2229,2242,2603,3065,3358,5405,8161,11135,11138,11141,11144,11147,11150,11153,11156,11159,11238,11241,11244,11247,11250,11253,11256,11259,11262,11265,11268,11271,11274],"usedEvents":[1237,1770,1779,1788,2006,2009,2016,2019,2172,11163,11167,11176,11180,11184,11188,11203,11215,11227,11290,11308,11324,11342]}],"license":"AGPL-3.0-only"}},"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol":{"id":44,"ast":{"absolutePath":"src/optimistic-oracle-v2/implementation/OptimisticOracleV2.sol","id":11128,"exportedSymbols":{"AccessControlDefaultAdminRulesUpgradeable":[1212],"AddressLegacy":[7800],"AddressWhitelist":[8065],"AncillaryData":[7568],"FinderInterface":[7719],"FixedPointInterface":[8366],"IERC20":[2591],"IdentifierWhitelistInterface":[7743],"LockableUpgradeable":[8244],"OptimisticOracleV2":[11127],"OptimisticOracleV2Interface":[11640],"OptimisticRequester":[9413],"OracleAncillaryInterface":[7781],"OracleInterfaces":[7694],"SafeERC20":[3055],"StoreInterface":[8413],"UUPSUpgradeable":[1662]},"nodeType":"SourceUnit","src":"356:34728:44","nodes":[{"id":9347,"nodeType":"PragmaDirective","src":"356:24:44","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":9349,"nodeType":"ImportDirective","src":"382:70:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":11128,"sourceUnit":2592,"symbolAliases":[{"foreign":{"id":9348,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2591,"src":"390:6:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9351,"nodeType":"ImportDirective","src":"453:82:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":11128,"sourceUnit":3056,"symbolAliases":[{"foreign":{"id":9350,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3055,"src":"461:9:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9353,"nodeType":"ImportDirective","src":"537:162:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlDefaultAdminRulesUpgradeable.sol","nameLocation":"-1:-1:-1","scope":11128,"sourceUnit":1213,"symbolAliases":[{"foreign":{"id":9352,"name":"AccessControlDefaultAdminRulesUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1212,"src":"545:41:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9355,"nodeType":"ImportDirective","src":"700:100:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":11128,"sourceUnit":1663,"symbolAliases":[{"foreign":{"id":9354,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1662,"src":"708:15:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9357,"nodeType":"ImportDirective","src":"802:85:44","nodes":[],"absolutePath":"lib/protocol/packages/core/contracts/common/implementation/AncillaryData.sol","file":"@uma/contracts/common/implementation/AncillaryData.sol","nameLocation":"-1:-1:-1","scope":11128,"sourceUnit":7569,"symbolAliases":[{"foreign":{"id":9356,"name":"AncillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7568,"src":"810:13:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9359,"nodeType":"ImportDirective","src":"888:106:44","nodes":[],"absolutePath":"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/FinderInterface.sol","file":"@uma/contracts/data-verification-mechanism/interfaces/FinderInterface.sol","nameLocation":"-1:-1:-1","scope":11128,"sourceUnit":7720,"symbolAliases":[{"foreign":{"id":9358,"name":"FinderInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7719,"src":"896:15:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9361,"nodeType":"ImportDirective","src":"995:136:44","nodes":[],"absolutePath":"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/IdentifierWhitelistInterface.sol","file":"@uma/contracts/data-verification-mechanism/interfaces/IdentifierWhitelistInterface.sol","nameLocation":"-1:-1:-1","scope":11128,"sourceUnit":7744,"symbolAliases":[{"foreign":{"id":9360,"name":"IdentifierWhitelistInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7743,"src":"1003:28:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9363,"nodeType":"ImportDirective","src":"1132:128:44","nodes":[],"absolutePath":"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/OracleAncillaryInterface.sol","file":"@uma/contracts/data-verification-mechanism/interfaces/OracleAncillaryInterface.sol","nameLocation":"-1:-1:-1","scope":11128,"sourceUnit":7782,"symbolAliases":[{"foreign":{"id":9362,"name":"OracleAncillaryInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7781,"src":"1140:24:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9365,"nodeType":"ImportDirective","src":"1261:105:44","nodes":[],"absolutePath":"lib/protocol/packages/core/contracts/data-verification-mechanism/implementation/Constants.sol","file":"@uma/contracts/data-verification-mechanism/implementation/Constants.sol","nameLocation":"-1:-1:-1","scope":11128,"sourceUnit":7700,"symbolAliases":[{"foreign":{"id":9364,"name":"OracleInterfaces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7694,"src":"1269:16:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9367,"nodeType":"ImportDirective","src":"1368:90:44","nodes":[],"absolutePath":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol","file":"../interfaces/OptimisticOracleV2Interface.sol","nameLocation":"-1:-1:-1","scope":11128,"sourceUnit":11641,"symbolAliases":[{"foreign":{"id":9366,"name":"OptimisticOracleV2Interface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11640,"src":"1376:27:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9369,"nodeType":"ImportDirective","src":"1460:76:44","nodes":[],"absolutePath":"src/common/implementation/AddressLegacy.sol","file":"../../common/implementation/AddressLegacy.sol","nameLocation":"-1:-1:-1","scope":11128,"sourceUnit":7801,"symbolAliases":[{"foreign":{"id":9368,"name":"AddressLegacy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7800,"src":"1468:13:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9371,"nodeType":"ImportDirective","src":"1537:82:44","nodes":[],"absolutePath":"src/common/implementation/AddressWhitelist.sol","file":"../../common/implementation/AddressWhitelist.sol","nameLocation":"-1:-1:-1","scope":11128,"sourceUnit":8066,"symbolAliases":[{"foreign":{"id":9370,"name":"AddressWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"1545:16:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9373,"nodeType":"ImportDirective","src":"1620:84:44","nodes":[],"absolutePath":"src/common/interfaces/FixedPointInterface.sol","file":"../../common/interfaces/FixedPointInterface.sol","nameLocation":"-1:-1:-1","scope":11128,"sourceUnit":8367,"symbolAliases":[{"foreign":{"id":9372,"name":"FixedPointInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8366,"src":"1628:19:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9375,"nodeType":"ImportDirective","src":"1705:88:44","nodes":[],"absolutePath":"src/common/implementation/LockableUpgradeable.sol","file":"../../common/implementation/LockableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":11128,"sourceUnit":8245,"symbolAliases":[{"foreign":{"id":9374,"name":"LockableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8244,"src":"1713:19:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9377,"nodeType":"ImportDirective","src":"1794:95:44","nodes":[],"absolutePath":"src/data-verification-mechanism/interfaces/StoreInterface.sol","file":"../../data-verification-mechanism/interfaces/StoreInterface.sol","nameLocation":"-1:-1:-1","scope":11128,"sourceUnit":8414,"symbolAliases":[{"foreign":{"id":9376,"name":"StoreInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8413,"src":"1802:14:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9413,"nodeType":"ContractDefinition","src":"2267:1291:44","nodes":[{"id":9388,"nodeType":"FunctionDefinition","src":"2554:99:44","nodes":[],"documentation":{"id":9379,"nodeType":"StructuredDocumentation","src":"2303:246:44","text":" @notice Callback for proposals.\n @param identifier price identifier being requested.\n @param timestamp timestamp of the price being requested.\n @param ancillaryData ancillary data of the price being requested."},"functionSelector":"9c2fd1df","implemented":false,"kind":"function","modifiers":[],"name":"priceProposed","nameLocation":"2563:13:44","parameters":{"id":9386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9381,"mutability":"mutable","name":"identifier","nameLocation":"2585:10:44","nodeType":"VariableDeclaration","scope":9388,"src":"2577:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9380,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2577:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9383,"mutability":"mutable","name":"timestamp","nameLocation":"2605:9:44","nodeType":"VariableDeclaration","scope":9388,"src":"2597:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9382,"name":"uint256","nodeType":"ElementaryTypeName","src":"2597:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9385,"mutability":"mutable","name":"ancillaryData","nameLocation":"2629:13:44","nodeType":"VariableDeclaration","scope":9388,"src":"2616:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9384,"name":"bytes","nodeType":"ElementaryTypeName","src":"2616:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2576:67:44"},"returnParameters":{"id":9387,"nodeType":"ParameterList","parameters":[],"src":"2652:0:44"},"scope":9413,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":9400,"nodeType":"FunctionDefinition","src":"2992:123:44","nodes":[],"documentation":{"id":9389,"nodeType":"StructuredDocumentation","src":"2659:328:44","text":" @notice Callback for disputes.\n @param identifier price identifier being requested.\n @param timestamp timestamp of the price being requested.\n @param ancillaryData ancillary data of the price being requested.\n @param refund refund received in the case that refundOnDispute was enabled."},"functionSelector":"0d8f2372","implemented":false,"kind":"function","modifiers":[],"name":"priceDisputed","nameLocation":"3001:13:44","parameters":{"id":9398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9391,"mutability":"mutable","name":"identifier","nameLocation":"3023:10:44","nodeType":"VariableDeclaration","scope":9400,"src":"3015:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9390,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3015:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9393,"mutability":"mutable","name":"timestamp","nameLocation":"3043:9:44","nodeType":"VariableDeclaration","scope":9400,"src":"3035:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9392,"name":"uint256","nodeType":"ElementaryTypeName","src":"3035:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9395,"mutability":"mutable","name":"ancillaryData","nameLocation":"3067:13:44","nodeType":"VariableDeclaration","scope":9400,"src":"3054:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9394,"name":"bytes","nodeType":"ElementaryTypeName","src":"3054:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9397,"mutability":"mutable","name":"refund","nameLocation":"3090:6:44","nodeType":"VariableDeclaration","scope":9400,"src":"3082:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9396,"name":"uint256","nodeType":"ElementaryTypeName","src":"3082:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3014:83:44"},"returnParameters":{"id":9399,"nodeType":"ParameterList","parameters":[],"src":"3114:0:44"},"scope":9413,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":9412,"nodeType":"FunctionDefinition","src":"3444:112:44","nodes":[],"documentation":{"id":9401,"nodeType":"StructuredDocumentation","src":"3121:318:44","text":" @notice Callback for settlement.\n @param identifier price identifier being requested.\n @param timestamp timestamp of the price being requested.\n @param ancillaryData ancillary data of the price being requested.\n @param price price that was resolved by the escalation process."},"functionSelector":"04cc1fd5","implemented":false,"kind":"function","modifiers":[],"name":"priceSettled","nameLocation":"3453:12:44","parameters":{"id":9410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9403,"mutability":"mutable","name":"identifier","nameLocation":"3474:10:44","nodeType":"VariableDeclaration","scope":9412,"src":"3466:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9402,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3466:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9405,"mutability":"mutable","name":"timestamp","nameLocation":"3494:9:44","nodeType":"VariableDeclaration","scope":9412,"src":"3486:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9404,"name":"uint256","nodeType":"ElementaryTypeName","src":"3486:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9407,"mutability":"mutable","name":"ancillaryData","nameLocation":"3518:13:44","nodeType":"VariableDeclaration","scope":9412,"src":"3505:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9406,"name":"bytes","nodeType":"ElementaryTypeName","src":"3505:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9409,"mutability":"mutable","name":"price","nameLocation":"3540:5:44","nodeType":"VariableDeclaration","scope":9412,"src":"3533:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9408,"name":"int256","nodeType":"ElementaryTypeName","src":"3533:6:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"3465:81:44"},"returnParameters":{"id":9411,"nodeType":"ParameterList","parameters":[],"src":"3555:0:44"},"scope":9413,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"OptimisticRequester","contractDependencies":[],"contractKind":"interface","documentation":{"id":9378,"nodeType":"StructuredDocumentation","src":"1891:375:44","text":" @title Optimistic Requester.\n @notice Optional interface that requesters can implement to receive callbacks.\n @dev this contract does _not_ work with ERC777 collateral currencies or any others that call into the receiver on\n transfer(). Using an ERC777 token would allow a user to maliciously grief other participants (while also losing\n money themselves)."},"fullyImplemented":false,"linearizedBaseContracts":[9413],"name":"OptimisticRequester","nameLocation":"2277:19:44","scope":11128,"usedErrors":[],"usedEvents":[]},{"id":11127,"nodeType":"ContractDefinition","src":"3715:31368:44","nodes":[{"id":9426,"nodeType":"UsingForDirective","src":"3877:27:44","nodes":[],"global":false,"libraryName":{"id":9423,"name":"SafeERC20","nameLocations":["3883:9:44"],"nodeType":"IdentifierPath","referencedDeclaration":3055,"src":"3883:9:44"},"typeName":{"id":9425,"nodeType":"UserDefinedTypeName","pathNode":{"id":9424,"name":"IERC20","nameLocations":["3897:6:44"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"3897:6:44"},"referencedDeclaration":2591,"src":"3897:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}}},{"id":9429,"nodeType":"UsingForDirective","src":"3909:32:44","nodes":[],"global":false,"libraryName":{"id":9427,"name":"AddressLegacy","nameLocations":["3915:13:44"],"nodeType":"IdentifierPath","referencedDeclaration":7800,"src":"3915:13:44"},"typeName":{"id":9428,"name":"address","nodeType":"ElementaryTypeName","src":"3933:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":9432,"nodeType":"VariableDeclaration","src":"3947:63:44","nodes":[],"constant":true,"functionSelector":"8ffc2120","mutability":"constant","name":"UPGRADE_ADMIN_ROLE","nameLocation":"3971:18:44","scope":11127,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9430,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3947:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"id":9431,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"3992:18:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":9436,"nodeType":"VariableDeclaration","src":"4071:38:44","nodes":[],"baseFunctions":[11402],"constant":false,"functionSelector":"b9a3c84c","mutability":"mutable","name":"finder","nameLocation":"4103:6:44","overrides":{"id":9435,"nodeType":"OverrideSpecifier","overrides":[],"src":"4094:8:44"},"scope":11127,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_FinderInterface_$7719","typeString":"contract FinderInterface"},"typeName":{"id":9434,"nodeType":"UserDefinedTypeName","pathNode":{"id":9433,"name":"FinderInterface","nameLocations":["4071:15:44"],"nodeType":"IdentifierPath","referencedDeclaration":7719,"src":"4071:15:44"},"referencedDeclaration":7719,"src":"4071:15:44","typeDescriptions":{"typeIdentifier":"t_contract$_FinderInterface_$7719","typeString":"contract FinderInterface"}},"visibility":"public"},{"id":9439,"nodeType":"VariableDeclaration","src":"4170:39:44","nodes":[],"baseFunctions":[11396],"constant":false,"functionSelector":"fe4e1983","mutability":"mutable","name":"defaultLiveness","nameLocation":"4194:15:44","overrides":{"id":9438,"nodeType":"OverrideSpecifier","overrides":[],"src":"4185:8:44"},"scope":11127,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9437,"name":"uint256","nodeType":"ElementaryTypeName","src":"4170:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":9442,"nodeType":"VariableDeclaration","src":"4332:54:44","nodes":[],"constant":true,"mutability":"constant","name":"MAX_ADDED_ANCILLARY_DATA","nameLocation":"4357:24:44","scope":11127,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9440,"name":"uint256","nodeType":"ElementaryTypeName","src":"4332:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3533","id":9441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4384:2:44","typeDescriptions":{"typeIdentifier":"t_rational_53_by_1","typeString":"int_const 53"},"value":"53"},"visibility":"private"},{"id":9447,"nodeType":"VariableDeclaration","src":"4392:96:44","nodes":[],"constant":true,"functionSelector":"4ccb56f5","mutability":"constant","name":"OO_ANCILLARY_DATA_LIMIT","nameLocation":"4416:23:44","scope":11127,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9443,"name":"uint256","nodeType":"ElementaryTypeName","src":"4392:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":9444,"name":"ancillaryBytesLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11391,"src":"4442:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9445,"name":"MAX_ADDED_ANCILLARY_DATA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9442,"src":"4464:24:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4442:46:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":9454,"nodeType":"VariableDeclaration","src":"4494:60:44","nodes":[],"constant":true,"functionSelector":"ff8c1a8c","mutability":"constant","name":"TOO_EARLY_RESPONSE","nameLocation":"4517:18:44","scope":11127,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9448,"name":"int256","nodeType":"ElementaryTypeName","src":"4494:6:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"expression":{"arguments":[{"id":9451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4543:6:44","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":9450,"name":"int256","nodeType":"ElementaryTypeName","src":"4543:6:44","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":9449,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4538:4:44","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":9452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4538:12:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":9453,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4551:3:44","memberName":"min","nodeType":"MemberAccess","src":"4538:16:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"public"},{"id":9462,"nodeType":"FunctionDefinition","src":"4614:53:44","nodes":[],"body":{"id":9461,"nodeType":"Block","src":"4628:39:44","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9458,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1434,"src":"4638:20:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4638:22:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9460,"nodeType":"ExpressionStatement","src":"4638:22:44"}]},"documentation":{"id":9455,"nodeType":"StructuredDocumentation","src":"4561:48:44","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":9456,"nodeType":"ParameterList","parameters":[],"src":"4625:2:44"},"returnParameters":{"id":9457,"nodeType":"ParameterList","parameters":[],"src":"4628:0:44"},"scope":11127,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":9481,"nodeType":"FunctionDefinition","src":"4974:189:44","nodes":[],"body":{"id":9480,"nodeType":"Block","src":"5080:83:44","nodes":[],"statements":[{"expression":{"arguments":[{"id":9475,"name":"_liveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9465,"src":"5116:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9476,"name":"_finderAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9467,"src":"5127:14:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9477,"name":"upgradeAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9469,"src":"5143:12:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9474,"name":"__OptimisticOracleV2_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9510,"src":"5090:25:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$__$","typeString":"function (uint256,address,address)"}},"id":9478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5090:66:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9479,"nodeType":"ExpressionStatement","src":"5090:66:44"}]},"documentation":{"id":9463,"nodeType":"StructuredDocumentation","src":"4673:296:44","text":" @notice Initializer (external).\n @dev Used only for standalone deployments of the OptimisticOracleV2Upgradeable contract.\n @param _liveness default liveness applied to each price request.\n @param _finderAddress finder to use to get addresses of DVM contracts."},"functionSelector":"b4988fd0","implemented":true,"kind":"function","modifiers":[{"id":9472,"kind":"modifierInvocation","modifierName":{"id":9471,"name":"initializer","nameLocations":["5068:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":1320,"src":"5068:11:44"},"nodeType":"ModifierInvocation","src":"5068:11:44"}],"name":"initialize","nameLocation":"4983:10:44","parameters":{"id":9470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9465,"mutability":"mutable","name":"_liveness","nameLocation":"5002:9:44","nodeType":"VariableDeclaration","scope":9481,"src":"4994:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9464,"name":"uint256","nodeType":"ElementaryTypeName","src":"4994:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9467,"mutability":"mutable","name":"_finderAddress","nameLocation":"5021:14:44","nodeType":"VariableDeclaration","scope":9481,"src":"5013:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9466,"name":"address","nodeType":"ElementaryTypeName","src":"5013:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9469,"mutability":"mutable","name":"upgradeAdmin","nameLocation":"5045:12:44","nodeType":"VariableDeclaration","scope":9481,"src":"5037:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9468,"name":"address","nodeType":"ElementaryTypeName","src":"5037:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4993:65:44"},"returnParameters":{"id":9473,"nodeType":"ParameterList","parameters":[],"src":"5080:0:44"},"scope":11127,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":9510,"nodeType":"FunctionDefinition","src":"5392:441:44","nodes":[],"body":{"id":9509,"nodeType":"Block","src":"5538:295:44","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9493,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1534,"src":"5548:22:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5548:24:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9495,"nodeType":"ExpressionStatement","src":"5548:24:44"},{"expression":{"arguments":[{"hexValue":"33","id":9497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5620:6:44","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_259200_by_1","typeString":"int_const 259200"},"value":"3"},{"id":9498,"name":"upgradeAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9488,"src":"5628:12:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_259200_by_1","typeString":"int_const 259200"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9496,"name":"__AccessControlDefaultAdminRules_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":432,"src":"5582:37:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint48_$_t_address_$returns$__$","typeString":"function (uint48,address)"}},"id":9499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5582:59:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9500,"nodeType":"ExpressionStatement","src":"5582:59:44"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9501,"name":"__LockableUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"5726:26:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5726:28:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9503,"nodeType":"ExpressionStatement","src":"5726:28:44"},{"expression":{"arguments":[{"id":9505,"name":"_liveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9484,"src":"5800:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9506,"name":"_finderAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9486,"src":"5811:14:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9504,"name":"__OptimisticOracleV2_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9535,"src":"5764:35:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5764:62:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9508,"nodeType":"ExpressionStatement","src":"5764:62:44"}]},"documentation":{"id":9482,"nodeType":"StructuredDocumentation","src":"5169:218:44","text":" @notice Initializer (internal, main entry point).\n @param _liveness default liveness applied to each price request.\n @param _finderAddress finder to use to get addresses of DVM contracts."},"implemented":true,"kind":"function","modifiers":[{"id":9491,"kind":"modifierInvocation","modifierName":{"id":9490,"name":"onlyInitializing","nameLocations":["5517:16:44"],"nodeType":"IdentifierPath","referencedDeclaration":1375,"src":"5517:16:44"},"nodeType":"ModifierInvocation","src":"5517:16:44"}],"name":"__OptimisticOracleV2_init","nameLocation":"5401:25:44","parameters":{"id":9489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9484,"mutability":"mutable","name":"_liveness","nameLocation":"5435:9:44","nodeType":"VariableDeclaration","scope":9510,"src":"5427:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9483,"name":"uint256","nodeType":"ElementaryTypeName","src":"5427:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9486,"mutability":"mutable","name":"_finderAddress","nameLocation":"5454:14:44","nodeType":"VariableDeclaration","scope":9510,"src":"5446:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9485,"name":"address","nodeType":"ElementaryTypeName","src":"5446:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9488,"mutability":"mutable","name":"upgradeAdmin","nameLocation":"5478:12:44","nodeType":"VariableDeclaration","scope":9510,"src":"5470:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9487,"name":"address","nodeType":"ElementaryTypeName","src":"5470:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5426:65:44"},"returnParameters":{"id":9492,"nodeType":"ParameterList","parameters":[],"src":"5538:0:44"},"scope":11127,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":9535,"nodeType":"FunctionDefinition","src":"6055:246:44","nodes":[],"body":{"id":9534,"nodeType":"Block","src":"6169:132:44","nodes":[],"statements":[{"expression":{"id":9524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9520,"name":"finder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9436,"src":"6179:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_FinderInterface_$7719","typeString":"contract FinderInterface"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9522,"name":"_finderAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9515,"src":"6204:14:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9521,"name":"FinderInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7719,"src":"6188:15:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FinderInterface_$7719_$","typeString":"type(contract FinderInterface)"}},"id":9523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6188:31:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_FinderInterface_$7719","typeString":"contract FinderInterface"}},"src":"6179:40:44","typeDescriptions":{"typeIdentifier":"t_contract$_FinderInterface_$7719","typeString":"contract FinderInterface"}},"id":9525,"nodeType":"ExpressionStatement","src":"6179:40:44"},{"expression":{"arguments":[{"id":9527,"name":"_liveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9513,"src":"6247:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9526,"name":"_validateLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10901,"src":"6229:17:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":9528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6229:28:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9529,"nodeType":"ExpressionStatement","src":"6229:28:44"},{"expression":{"id":9532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9530,"name":"defaultLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9439,"src":"6267:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9531,"name":"_liveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9513,"src":"6285:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6267:27:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9533,"nodeType":"ExpressionStatement","src":"6267:27:44"}]},"documentation":{"id":9511,"nodeType":"StructuredDocumentation","src":"5839:211:44","text":" @notice Initializer (internal, unchained).\n @param _liveness default liveness applied to each price request.\n @param _finderAddress finder to use to get addresses of DVM contracts."},"implemented":true,"kind":"function","modifiers":[{"id":9518,"kind":"modifierInvocation","modifierName":{"id":9517,"name":"onlyInitializing","nameLocations":["6152:16:44"],"nodeType":"IdentifierPath","referencedDeclaration":1375,"src":"6152:16:44"},"nodeType":"ModifierInvocation","src":"6152:16:44"}],"name":"__OptimisticOracleV2_init_unchained","nameLocation":"6064:35:44","parameters":{"id":9516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9513,"mutability":"mutable","name":"_liveness","nameLocation":"6108:9:44","nodeType":"VariableDeclaration","scope":9535,"src":"6100:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9512,"name":"uint256","nodeType":"ElementaryTypeName","src":"6100:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9515,"mutability":"mutable","name":"_finderAddress","nameLocation":"6127:14:44","nodeType":"VariableDeclaration","scope":9535,"src":"6119:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9514,"name":"address","nodeType":"ElementaryTypeName","src":"6119:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6099:43:44"},"returnParameters":{"id":9519,"nodeType":"ParameterList","parameters":[],"src":"6169:0:44"},"scope":11127,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":9544,"nodeType":"ModifierDefinition","src":"6397:86:44","nodes":[],"body":{"id":9543,"nodeType":"Block","src":"6425:58:44","nodes":[],"statements":[{"expression":{"arguments":[{"id":9539,"name":"UPGRADE_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9432,"src":"6446:18:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":9538,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[131,152],"referencedDeclaration":131,"src":"6435:10:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6435:30:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9541,"nodeType":"ExpressionStatement","src":"6435:30:44"},{"id":9542,"nodeType":"PlaceholderStatement","src":"6475:1:44"}]},"documentation":{"id":9536,"nodeType":"StructuredDocumentation","src":"6307:85:44","text":" @dev Throws if called by any account other than the upgrade admin."},"name":"onlyUpgradeAdmin","nameLocation":"6406:16:44","parameters":{"id":9537,"nodeType":"ParameterList","parameters":[],"src":"6422:2:44"},"virtual":false,"visibility":"internal"},{"id":9554,"nodeType":"FunctionDefinition","src":"6738:91:44","nodes":[],"body":{"id":9553,"nodeType":"Block","src":"6827:2:44","nodes":[],"statements":[]},"baseFunctions":[1616],"documentation":{"id":9545,"nodeType":"StructuredDocumentation","src":"6489:244:44","text":" @notice Authorizes the upgrade of the contract.\n @dev This is required for UUPSUpgradeable. Only the upgrade admin can authorize upgrades.\n @param newImplementation address of the new implementation to upgrade to."},"implemented":true,"kind":"function","modifiers":[{"id":9551,"kind":"modifierInvocation","modifierName":{"id":9550,"name":"onlyUpgradeAdmin","nameLocations":["6810:16:44"],"nodeType":"IdentifierPath","referencedDeclaration":9544,"src":"6810:16:44"},"nodeType":"ModifierInvocation","src":"6810:16:44"}],"name":"_authorizeUpgrade","nameLocation":"6747:17:44","overrides":{"id":9549,"nodeType":"OverrideSpecifier","overrides":[],"src":"6801:8:44"},"parameters":{"id":9548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9547,"mutability":"mutable","name":"newImplementation","nameLocation":"6773:17:44","nodeType":"VariableDeclaration","scope":9554,"src":"6765:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9546,"name":"address","nodeType":"ElementaryTypeName","src":"6765:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6764:27:44"},"returnParameters":{"id":9552,"nodeType":"ParameterList","parameters":[],"src":"6827:0:44"},"scope":11127,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":9715,"nodeType":"FunctionDefinition","src":"7694:2132:44","nodes":[],"body":{"id":9714,"nodeType":"Block","src":"7927:1899:44","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"id":9584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":9576,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7955:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7959:6:44","memberName":"sender","nodeType":"MemberAccess","src":"7955:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9578,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9557,"src":"7967:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9579,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9559,"src":"7979:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9580,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9561,"src":"7990:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9575,"name":"_getState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10996,"src":"7945:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_enum$_State_$11350_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (enum OptimisticOracleV2Interface.State)"}},"id":9581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7945:59:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9582,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"8008:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":9583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8014:7:44","memberName":"Invalid","nodeType":"MemberAccess","referencedDeclaration":11343,"src":"8008:13:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"src":"7945:76:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9585,"name":"RequestStateNotInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11238,"src":"8023:22:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8023:24:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9574,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7937:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7937:111:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9588,"nodeType":"ExpressionStatement","src":"7937:111:44"},{"expression":{"arguments":[{"arguments":[{"id":9593,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9557,"src":"8114:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9590,"name":"_getIdentifierWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11056,"src":"8066:23:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IdentifierWhitelistInterface_$7743_$","typeString":"function () view returns (contract IdentifierWhitelistInterface)"}},"id":9591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8066:25:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IdentifierWhitelistInterface_$7743","typeString":"contract IdentifierWhitelistInterface"}},"id":9592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8092:21:44","memberName":"isIdentifierSupported","nodeType":"MemberAccess","referencedDeclaration":7742,"src":"8066:47:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view external returns (bool)"}},"id":9594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8066:59:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9595,"name":"UnsupportedIdentifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11247,"src":"8127:21:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8127:23:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9589,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8058:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8058:93:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9598,"nodeType":"ExpressionStatement","src":"8058:93:44"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":9605,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9564,"src":"8217:8:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}],"id":9604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8209:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9603,"name":"address","nodeType":"ElementaryTypeName","src":"8209:7:44","typeDescriptions":{}}},"id":9606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8209:17:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9600,"name":"_getCollateralWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11026,"src":"8169:23:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_AddressWhitelist_$8065_$","typeString":"function () view returns (contract AddressWhitelist)"}},"id":9601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8169:25:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelist_$8065","typeString":"contract AddressWhitelist"}},"id":9602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8195:13:44","memberName":"isOnWhitelist","nodeType":"MemberAccess","referencedDeclaration":7944,"src":"8169:39:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":9607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8169:58:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9608,"name":"UnsupportedCurrency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11250,"src":"8229:19:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8229:21:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9599,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8161:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8161:90:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9611,"nodeType":"ExpressionStatement","src":"8161:90:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9613,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9559,"src":"8269:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9614,"name":"getCurrentTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11121,"src":"8282:14:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8282:16:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8269:29:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9617,"name":"TimestampInFuture","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11253,"src":"8300:17:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8300:19:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9612,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8261:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8261:59:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9620,"nodeType":"ExpressionStatement","src":"8261:59:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9622,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9561,"src":"8509:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8523:6:44","memberName":"length","nodeType":"MemberAccess","src":"8509:20:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":9624,"name":"OO_ANCILLARY_DATA_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9447,"src":"8533:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8509:47:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9626,"name":"AncillaryDataTooLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11256,"src":"8558:20:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8558:22:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9621,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8501:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8501:80:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9629,"nodeType":"ExpressionStatement","src":"8501:80:44"},{"assignments":[9631],"declarations":[{"constant":false,"id":9631,"mutability":"mutable","name":"finalFee","nameLocation":"8600:8:44","nodeType":"VariableDeclaration","scope":9714,"src":"8592:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9630,"name":"uint256","nodeType":"ElementaryTypeName","src":"8592:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9641,"initialValue":{"expression":{"arguments":[{"arguments":[{"id":9637,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9564,"src":"8647:8:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}],"id":9636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8639:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9635,"name":"address","nodeType":"ElementaryTypeName","src":"8639:7:44","typeDescriptions":{}}},"id":9638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8639:17:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9632,"name":"_getStore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11041,"src":"8611:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_StoreInterface_$8413_$","typeString":"function () view returns (contract StoreInterface)"}},"id":9633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8611:11:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_StoreInterface_$8413","typeString":"contract StoreInterface"}},"id":9634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8623:15:44","memberName":"computeFinalFee","nodeType":"MemberAccess","referencedDeclaration":8412,"src":"8611:27:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_struct$_Unsigned_$8365_memory_ptr_$","typeString":"function (address) view external returns (struct FixedPointInterface.Unsigned memory)"}},"id":9639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8611:46:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Unsigned_$8365_memory_ptr","typeString":"struct FixedPointInterface.Unsigned memory"}},"id":9640,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8658:8:44","memberName":"rawValue","nodeType":"MemberAccess","referencedDeclaration":8364,"src":"8611:55:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8592:74:44"},{"expression":{"id":9677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9642,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11412,"src":"8676:8:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Request_$11388_storage_$","typeString":"mapping(bytes32 => struct OptimisticOracleV2Interface.Request storage ref)"}},"id":9650,"indexExpression":{"arguments":[{"expression":{"id":9644,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8692:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8696:6:44","memberName":"sender","nodeType":"MemberAccess","src":"8692:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9646,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9557,"src":"8704:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9647,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9559,"src":"8716:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9648,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9561,"src":"8727:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9643,"name":"_getId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10646,"src":"8685:6:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (address,bytes32,uint256,bytes memory) pure returns (bytes32)"}},"id":9649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8685:56:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8676:66:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage","typeString":"struct OptimisticOracleV2Interface.Request storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"30","id":9654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8785:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8777:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9652,"name":"address","nodeType":"ElementaryTypeName","src":"8777:7:44","typeDescriptions":{}}},"id":9655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8777:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":9658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8819:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8811:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9656,"name":"address","nodeType":"ElementaryTypeName","src":"8811:7:44","typeDescriptions":{}}},"id":9659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8811:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9660,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9564,"src":"8845:8:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},{"hexValue":"66616c7365","id":9661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8876:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"66616c7365","id":9663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8958:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"66616c7365","id":9664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8998:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"66616c7365","id":9665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9046:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"66616c7365","id":9666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9094:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"66616c7365","id":9667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9141:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":9668,"name":"finalFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9631,"src":"9170:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":9669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9212:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9662,"name":"RequestSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11365,"src":"8912:15:44","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RequestSettings_$11365_storage_ptr_$","typeString":"type(struct OptimisticOracleV2Interface.RequestSettings storage pointer)"}},"id":9670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["8946:10:44","8981:15:44","9021:23:44","9069:23:44","9117:22:44","9164:4:44","9196:14:44"],"names":["eventBased","refundOnDispute","callbackOnPriceProposed","callbackOnPriceDisputed","callbackOnPriceSettled","bond","customLiveness"],"nodeType":"FunctionCall","src":"8912:316:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_memory_ptr","typeString":"struct OptimisticOracleV2Interface.RequestSettings memory"}},{"hexValue":"30","id":9671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9257:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":9672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9287:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":9673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9318:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":9674,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9566,"src":"9341:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9675,"name":"finalFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9631,"src":"9371:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_struct$_RequestSettings_$11365_memory_ptr","typeString":"struct OptimisticOracleV2Interface.RequestSettings memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9651,"name":"Request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11388,"src":"8745:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Request_$11388_storage_ptr_$","typeString":"type(struct OptimisticOracleV2Interface.Request storage pointer)"}},"id":9676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["8767:8:44","8801:8:44","8835:8:44","8867:7:44","8895:15:44","9242:13:44","9272:13:44","9302:14:44","9333:6:44","9361:8:44"],"names":["proposer","disputer","currency","settled","requestSettings","proposedPrice","resolvedPrice","expirationTime","reward","finalFee"],"nodeType":"FunctionCall","src":"8745:645:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_memory_ptr","typeString":"struct OptimisticOracleV2Interface.Request memory"}},"src":"8676:714:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage","typeString":"struct OptimisticOracleV2Interface.Request storage ref"}},"id":9678,"nodeType":"ExpressionStatement","src":"8676:714:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9679,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9566,"src":"9405:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9414:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9405:10:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9695,"nodeType":"IfStatement","src":"9401:101:44","trueBody":{"id":9694,"nodeType":"Block","src":"9417:85:44","statements":[{"expression":{"arguments":[{"expression":{"id":9685,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9457:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9461:6:44","memberName":"sender","nodeType":"MemberAccess","src":"9457:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":9689,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9477:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_OptimisticOracleV2_$11127","typeString":"contract OptimisticOracleV2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OptimisticOracleV2_$11127","typeString":"contract OptimisticOracleV2"}],"id":9688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9469:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9687,"name":"address","nodeType":"ElementaryTypeName","src":"9469:7:44","typeDescriptions":{}}},"id":9690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9469:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9691,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9566,"src":"9484:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9682,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9564,"src":"9431:8:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"id":9684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9440:16:44","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":2663,"src":"9431:25:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$2591_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":9692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9431:60:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9693,"nodeType":"ExpressionStatement","src":"9431:60:44"}]}},{"eventCall":{"arguments":[{"expression":{"id":9697,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9530:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9534:6:44","memberName":"sender","nodeType":"MemberAccess","src":"9530:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9699,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9557,"src":"9542:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9700,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9559,"src":"9554:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9701,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9561,"src":"9565:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":9704,"name":"currency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9564,"src":"9588:8:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}],"id":9703,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9580:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9702,"name":"address","nodeType":"ElementaryTypeName","src":"9580:7:44","typeDescriptions":{}}},"id":9705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9580:17:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9706,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9566,"src":"9599:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9707,"name":"finalFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9631,"src":"9607:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9696,"name":"RequestPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11290,"src":"9517:12:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,bytes32,uint256,bytes memory,address,uint256,uint256)"}},"id":9708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9517:99:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9709,"nodeType":"EmitStatement","src":"9512:104:44"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9710,"name":"finalFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9631,"src":"9807:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":9711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9818:1:44","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9807:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9573,"id":9713,"nodeType":"Return","src":"9800:19:44"}]},"baseFunctions":[11429],"documentation":{"id":9555,"nodeType":"StructuredDocumentation","src":"6835:854:44","text":" @notice Requests a new price.\n @param identifier price identifier being requested.\n @param timestamp timestamp of the price being requested.\n @param ancillaryData ancillary data representing additional args being passed with the price request.\n @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n which could make sense if the contract requests and proposes the value in the same call or\n provides its own reward system.\n @return totalBond default bond (final fee) + final fee that the proposer and disputer will be required to pay.\n This can be changed with a subsequent call to setBond()."},"functionSelector":"11df92f1","implemented":true,"kind":"function","modifiers":[{"id":9570,"kind":"modifierInvocation","modifierName":{"id":9569,"name":"nonReentrant","nameLocations":["7886:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"7886:12:44"},"nodeType":"ModifierInvocation","src":"7886:12:44"}],"name":"requestPrice","nameLocation":"7703:12:44","overrides":{"id":9568,"nodeType":"OverrideSpecifier","overrides":[],"src":"7877:8:44"},"parameters":{"id":9567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9557,"mutability":"mutable","name":"identifier","nameLocation":"7733:10:44","nodeType":"VariableDeclaration","scope":9715,"src":"7725:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9556,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7725:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9559,"mutability":"mutable","name":"timestamp","nameLocation":"7761:9:44","nodeType":"VariableDeclaration","scope":9715,"src":"7753:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9558,"name":"uint256","nodeType":"ElementaryTypeName","src":"7753:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9561,"mutability":"mutable","name":"ancillaryData","nameLocation":"7793:13:44","nodeType":"VariableDeclaration","scope":9715,"src":"7780:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9560,"name":"bytes","nodeType":"ElementaryTypeName","src":"7780:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9564,"mutability":"mutable","name":"currency","nameLocation":"7823:8:44","nodeType":"VariableDeclaration","scope":9715,"src":"7816:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":9563,"nodeType":"UserDefinedTypeName","pathNode":{"id":9562,"name":"IERC20","nameLocations":["7816:6:44"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"7816:6:44"},"referencedDeclaration":2591,"src":"7816:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9566,"mutability":"mutable","name":"reward","nameLocation":"7849:6:44","nodeType":"VariableDeclaration","scope":9715,"src":"7841:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9565,"name":"uint256","nodeType":"ElementaryTypeName","src":"7841:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7715:146:44"},"returnParameters":{"id":9573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9572,"mutability":"mutable","name":"totalBond","nameLocation":"7916:9:44","nodeType":"VariableDeclaration","scope":9715,"src":"7908:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9571,"name":"uint256","nodeType":"ElementaryTypeName","src":"7908:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7907:19:44"},"scope":11127,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":9772,"nodeType":"FunctionDefinition","src":"10353:591:44","nodes":[],"body":{"id":9771,"nodeType":"Block","src":"10546:398:44","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"id":9742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":9734,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10587:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10591:6:44","memberName":"sender","nodeType":"MemberAccess","src":"10587:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9736,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9718,"src":"10599:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9737,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9720,"src":"10611:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9738,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9722,"src":"10622:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9733,"name":"_getState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10996,"src":"10577:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_enum$_State_$11350_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (enum OptimisticOracleV2Interface.State)"}},"id":9739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10577:59:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9740,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"10640:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":9741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10646:9:44","memberName":"Requested","nodeType":"MemberAccess","referencedDeclaration":11344,"src":"10640:15:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"src":"10577:78:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9743,"name":"RequestStateNotRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11241,"src":"10657:24:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10657:26:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9732,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10556:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10556:137:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9746,"nodeType":"ExpressionStatement","src":"10556:137:44"},{"assignments":[9749],"declarations":[{"constant":false,"id":9749,"mutability":"mutable","name":"request","nameLocation":"10719:7:44","nodeType":"VariableDeclaration","scope":9771,"src":"10703:23:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"},"typeName":{"id":9748,"nodeType":"UserDefinedTypeName","pathNode":{"id":9747,"name":"Request","nameLocations":["10703:7:44"],"nodeType":"IdentifierPath","referencedDeclaration":11388,"src":"10703:7:44"},"referencedDeclaration":11388,"src":"10703:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"}},"visibility":"internal"}],"id":9757,"initialValue":{"arguments":[{"expression":{"id":9751,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10741:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10745:6:44","memberName":"sender","nodeType":"MemberAccess","src":"10741:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9753,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9718,"src":"10753:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9754,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9720,"src":"10765:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9755,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9722,"src":"10776:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9750,"name":"_getRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10864,"src":"10729:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_Request_$11388_storage_ptr_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (struct OptimisticOracleV2Interface.Request storage pointer)"}},"id":9756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10729:61:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10703:87:44"},{"expression":{"id":9764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":9758,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9749,"src":"10800:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":9761,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10808:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"10800:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":9762,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10824:4:44","memberName":"bond","nodeType":"MemberAccess","referencedDeclaration":11362,"src":"10800:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9763,"name":"bond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9724,"src":"10831:4:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10800:35:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9765,"nodeType":"ExpressionStatement","src":"10800:35:44"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9766,"name":"bond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9724,"src":"10914:4:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":9767,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9749,"src":"10921:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":9768,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10929:8:44","memberName":"finalFee","nodeType":"MemberAccess","referencedDeclaration":11387,"src":"10921:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10914:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9731,"id":9770,"nodeType":"Return","src":"10907:30:44"}]},"baseFunctions":[11443],"documentation":{"id":9716,"nodeType":"StructuredDocumentation","src":"9832:516:44","text":" @notice Set the proposal bond associated with a price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param bond custom bond amount to set.\n @return totalBond new bond + final fee that the proposer and disputer will be required to pay. This can be\n changed again with a subsequent call to setBond()."},"functionSelector":"ad5a755a","implemented":true,"kind":"function","modifiers":[{"id":9728,"kind":"modifierInvocation","modifierName":{"id":9727,"name":"nonReentrant","nameLocations":["10493:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"10493:12:44"},"nodeType":"ModifierInvocation","src":"10493:12:44"}],"name":"setBond","nameLocation":"10362:7:44","overrides":{"id":9726,"nodeType":"OverrideSpecifier","overrides":[],"src":"10476:8:44"},"parameters":{"id":9725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9718,"mutability":"mutable","name":"identifier","nameLocation":"10378:10:44","nodeType":"VariableDeclaration","scope":9772,"src":"10370:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9717,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10370:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9720,"mutability":"mutable","name":"timestamp","nameLocation":"10398:9:44","nodeType":"VariableDeclaration","scope":9772,"src":"10390:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9719,"name":"uint256","nodeType":"ElementaryTypeName","src":"10390:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9722,"mutability":"mutable","name":"ancillaryData","nameLocation":"10422:13:44","nodeType":"VariableDeclaration","scope":9772,"src":"10409:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9721,"name":"bytes","nodeType":"ElementaryTypeName","src":"10409:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9724,"mutability":"mutable","name":"bond","nameLocation":"10445:4:44","nodeType":"VariableDeclaration","scope":9772,"src":"10437:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9723,"name":"uint256","nodeType":"ElementaryTypeName","src":"10437:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10369:81:44"},"returnParameters":{"id":9731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9730,"mutability":"mutable","name":"totalBond","nameLocation":"10531:9:44","nodeType":"VariableDeclaration","scope":9772,"src":"10523:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9729,"name":"uint256","nodeType":"ElementaryTypeName","src":"10523:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10522:19:44"},"scope":11127,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":9813,"nodeType":"FunctionDefinition","src":"11500:418:44","nodes":[],"body":{"id":9812,"nodeType":"Block","src":"11654:264:44","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"id":9795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":9787,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11695:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11699:6:44","memberName":"sender","nodeType":"MemberAccess","src":"11695:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9789,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9775,"src":"11707:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9790,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9777,"src":"11719:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9791,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9779,"src":"11730:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9786,"name":"_getState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10996,"src":"11685:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_enum$_State_$11350_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (enum OptimisticOracleV2Interface.State)"}},"id":9792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11685:59:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9793,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"11748:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":9794,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11754:9:44","memberName":"Requested","nodeType":"MemberAccess","referencedDeclaration":11344,"src":"11748:15:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"src":"11685:78:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9796,"name":"RequestStateNotRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11241,"src":"11765:24:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11765:26:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9785,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11664:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11664:137:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9799,"nodeType":"ExpressionStatement","src":"11664:137:44"},{"expression":{"id":9810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[{"expression":{"id":9801,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11823:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11827:6:44","memberName":"sender","nodeType":"MemberAccess","src":"11823:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9803,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9775,"src":"11835:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9804,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9777,"src":"11847:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9805,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9779,"src":"11858:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9800,"name":"_getRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10864,"src":"11811:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_Request_$11388_storage_ptr_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (struct OptimisticOracleV2Interface.Request storage pointer)"}},"id":9806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11811:61:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":9807,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11873:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"11811:77:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":9808,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11889:15:44","memberName":"refundOnDispute","nodeType":"MemberAccess","referencedDeclaration":11354,"src":"11811:93:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":9809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11907:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"11811:100:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9811,"nodeType":"ExpressionStatement","src":"11811:100:44"}]},"baseFunctions":[11453],"documentation":{"id":9773,"nodeType":"StructuredDocumentation","src":"10950:545:44","text":" @notice Sets the request to refund the reward if the proposal is disputed. This can help to \"hedge\" the caller\n in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's\n bond, so there is still profit to be made even if the reward is refunded.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested."},"functionSelector":"91f58dcb","implemented":true,"kind":"function","modifiers":[{"id":9783,"kind":"modifierInvocation","modifierName":{"id":9782,"name":"nonReentrant","nameLocations":["11637:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"11637:12:44"},"nodeType":"ModifierInvocation","src":"11637:12:44"}],"name":"setRefundOnDispute","nameLocation":"11509:18:44","overrides":{"id":9781,"nodeType":"OverrideSpecifier","overrides":[],"src":"11620:8:44"},"parameters":{"id":9780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9775,"mutability":"mutable","name":"identifier","nameLocation":"11536:10:44","nodeType":"VariableDeclaration","scope":9813,"src":"11528:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9774,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11528:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9777,"mutability":"mutable","name":"timestamp","nameLocation":"11556:9:44","nodeType":"VariableDeclaration","scope":9813,"src":"11548:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9776,"name":"uint256","nodeType":"ElementaryTypeName","src":"11548:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9779,"mutability":"mutable","name":"ancillaryData","nameLocation":"11580:13:44","nodeType":"VariableDeclaration","scope":9813,"src":"11567:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9778,"name":"bytes","nodeType":"ElementaryTypeName","src":"11567:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11527:67:44"},"returnParameters":{"id":9784,"nodeType":"ParameterList","parameters":[],"src":"11654:0:44"},"scope":11127,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":9860,"nodeType":"FunctionDefinition","src":"12355:503:44","nodes":[],"body":{"id":9859,"nodeType":"Block","src":"12542:316:44","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"id":9838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":9830,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12583:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12587:6:44","memberName":"sender","nodeType":"MemberAccess","src":"12583:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9832,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"12595:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9833,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9818,"src":"12607:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9834,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9820,"src":"12618:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9829,"name":"_getState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10996,"src":"12573:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_enum$_State_$11350_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (enum OptimisticOracleV2Interface.State)"}},"id":9835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12573:59:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9836,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"12636:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":9837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12642:9:44","memberName":"Requested","nodeType":"MemberAccess","referencedDeclaration":11344,"src":"12636:15:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"src":"12573:78:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9839,"name":"RequestStateNotRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11241,"src":"12653:24:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12653:26:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9828,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12552:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12552:137:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9842,"nodeType":"ExpressionStatement","src":"12552:137:44"},{"expression":{"arguments":[{"id":9844,"name":"customLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9822,"src":"12717:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9843,"name":"_validateLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10901,"src":"12699:17:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":9845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12699:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9846,"nodeType":"ExpressionStatement","src":"12699:33:44"},{"expression":{"id":9857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[{"expression":{"id":9848,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12754:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12758:6:44","memberName":"sender","nodeType":"MemberAccess","src":"12754:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9850,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"12766:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9851,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9818,"src":"12778:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9852,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9820,"src":"12789:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9847,"name":"_getRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10864,"src":"12742:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_Request_$11388_storage_ptr_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (struct OptimisticOracleV2Interface.Request storage pointer)"}},"id":9853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12742:61:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":9854,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12804:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"12742:77:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":9855,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12820:14:44","memberName":"customLiveness","nodeType":"MemberAccess","referencedDeclaration":11364,"src":"12742:92:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9856,"name":"customLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9822,"src":"12837:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12742:109:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9858,"nodeType":"ExpressionStatement","src":"12742:109:44"}]},"baseFunctions":[11465],"documentation":{"id":9814,"nodeType":"StructuredDocumentation","src":"11924:426:44","text":" @notice Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before\n being auto-resolved.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param customLiveness new custom liveness."},"functionSelector":"473c45fe","implemented":true,"kind":"function","modifiers":[{"id":9826,"kind":"modifierInvocation","modifierName":{"id":9825,"name":"nonReentrant","nameLocations":["12529:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"12529:12:44"},"nodeType":"ModifierInvocation","src":"12529:12:44"}],"name":"setCustomLiveness","nameLocation":"12364:17:44","overrides":{"id":9824,"nodeType":"OverrideSpecifier","overrides":[],"src":"12520:8:44"},"parameters":{"id":9823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9816,"mutability":"mutable","name":"identifier","nameLocation":"12399:10:44","nodeType":"VariableDeclaration","scope":9860,"src":"12391:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9815,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12391:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9818,"mutability":"mutable","name":"timestamp","nameLocation":"12427:9:44","nodeType":"VariableDeclaration","scope":9860,"src":"12419:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9817,"name":"uint256","nodeType":"ElementaryTypeName","src":"12419:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9820,"mutability":"mutable","name":"ancillaryData","nameLocation":"12459:13:44","nodeType":"VariableDeclaration","scope":9860,"src":"12446:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9819,"name":"bytes","nodeType":"ElementaryTypeName","src":"12446:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9822,"mutability":"mutable","name":"customLiveness","nameLocation":"12490:14:44","nodeType":"VariableDeclaration","scope":9860,"src":"12482:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9821,"name":"uint256","nodeType":"ElementaryTypeName","src":"12482:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12381:129:44"},"returnParameters":{"id":9827,"nodeType":"ParameterList","parameters":[],"src":"12542:0:44"},"scope":11127,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":9916,"nodeType":"FunctionDefinition","src":"13731:507:44","nodes":[],"body":{"id":9915,"nodeType":"Block","src":"13880:358:44","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"id":9883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":9875,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13921:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13925:6:44","memberName":"sender","nodeType":"MemberAccess","src":"13921:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9877,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9863,"src":"13933:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9878,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9865,"src":"13945:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9879,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9867,"src":"13956:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9874,"name":"_getState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10996,"src":"13911:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_enum$_State_$11350_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (enum OptimisticOracleV2Interface.State)"}},"id":9880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13911:59:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9881,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"13974:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":9882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13980:9:44","memberName":"Requested","nodeType":"MemberAccess","referencedDeclaration":11344,"src":"13974:15:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"src":"13911:78:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9884,"name":"RequestStateNotRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11241,"src":"13991:24:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13991:26:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9873,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13890:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13890:137:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9887,"nodeType":"ExpressionStatement","src":"13890:137:44"},{"assignments":[9890],"declarations":[{"constant":false,"id":9890,"mutability":"mutable","name":"request","nameLocation":"14053:7:44","nodeType":"VariableDeclaration","scope":9915,"src":"14037:23:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"},"typeName":{"id":9889,"nodeType":"UserDefinedTypeName","pathNode":{"id":9888,"name":"Request","nameLocations":["14037:7:44"],"nodeType":"IdentifierPath","referencedDeclaration":11388,"src":"14037:7:44"},"referencedDeclaration":11388,"src":"14037:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"}},"visibility":"internal"}],"id":9898,"initialValue":{"arguments":[{"expression":{"id":9892,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14075:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14079:6:44","memberName":"sender","nodeType":"MemberAccess","src":"14075:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9894,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9863,"src":"14087:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9895,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9865,"src":"14099:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9896,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9867,"src":"14110:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9891,"name":"_getRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10864,"src":"14063:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_Request_$11388_storage_ptr_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (struct OptimisticOracleV2Interface.Request storage pointer)"}},"id":9897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14063:61:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"14037:87:44"},{"expression":{"id":9905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":9899,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9890,"src":"14134:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":9902,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14142:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"14134:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":9903,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14158:10:44","memberName":"eventBased","nodeType":"MemberAccess","referencedDeclaration":11352,"src":"14134:34:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":9904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14171:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"14134:41:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9906,"nodeType":"ExpressionStatement","src":"14134:41:44"},{"expression":{"id":9913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":9907,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9890,"src":"14185:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":9910,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14193:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"14185:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":9911,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14209:15:44","memberName":"refundOnDispute","nodeType":"MemberAccess","referencedDeclaration":11354,"src":"14185:39:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":9912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14227:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"14185:46:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9914,"nodeType":"ExpressionStatement","src":"14185:46:44"}]},"baseFunctions":[11475],"documentation":{"id":9861,"nodeType":"StructuredDocumentation","src":"12864:862:44","text":" @notice Sets the request to be an \"event-based\" request.\n @dev Calling this method has a few impacts on the request:\n 1. The timestamp at which the request is evaluated is the time of the proposal, not the timestamp associated\n with the request.\n 2. The proposer cannot propose the \"too early\" value (TOO_EARLY_RESPONSE). This is to ensure that a proposer who\n prematurely proposes a response loses their bond.\n 3. RefundoOnDispute is automatically set, meaning disputes trigger the reward to be automatically refunded to\n the requesting contract.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested."},"functionSelector":"120698af","implemented":true,"kind":"function","modifiers":[{"id":9871,"kind":"modifierInvocation","modifierName":{"id":9870,"name":"nonReentrant","nameLocations":["13863:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"13863:12:44"},"nodeType":"ModifierInvocation","src":"13863:12:44"}],"name":"setEventBased","nameLocation":"13740:13:44","overrides":{"id":9869,"nodeType":"OverrideSpecifier","overrides":[],"src":"13846:8:44"},"parameters":{"id":9868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9863,"mutability":"mutable","name":"identifier","nameLocation":"13762:10:44","nodeType":"VariableDeclaration","scope":9916,"src":"13754:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9862,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13754:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9865,"mutability":"mutable","name":"timestamp","nameLocation":"13782:9:44","nodeType":"VariableDeclaration","scope":9916,"src":"13774:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9864,"name":"uint256","nodeType":"ElementaryTypeName","src":"13774:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9867,"mutability":"mutable","name":"ancillaryData","nameLocation":"13806:13:44","nodeType":"VariableDeclaration","scope":9916,"src":"13793:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9866,"name":"bytes","nodeType":"ElementaryTypeName","src":"13793:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13753:67:44"},"returnParameters":{"id":9872,"nodeType":"ParameterList","parameters":[],"src":"13880:0:44"},"scope":11127,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":9986,"nodeType":"FunctionDefinition","src":"14804:761:44","nodes":[],"body":{"id":9985,"nodeType":"Block","src":"15067:498:44","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"id":9945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":9937,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15108:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15112:6:44","memberName":"sender","nodeType":"MemberAccess","src":"15108:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9939,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9919,"src":"15120:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9940,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9921,"src":"15132:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9941,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9923,"src":"15143:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9936,"name":"_getState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10996,"src":"15098:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_enum$_State_$11350_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (enum OptimisticOracleV2Interface.State)"}},"id":9942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15098:59:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9943,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"15161:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":9944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15167:9:44","memberName":"Requested","nodeType":"MemberAccess","referencedDeclaration":11344,"src":"15161:15:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"src":"15098:78:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":9946,"name":"RequestStateNotRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11241,"src":"15178:24:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15178:26:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":9935,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"15077:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":9948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15077:137:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9949,"nodeType":"ExpressionStatement","src":"15077:137:44"},{"assignments":[9952],"declarations":[{"constant":false,"id":9952,"mutability":"mutable","name":"request","nameLocation":"15240:7:44","nodeType":"VariableDeclaration","scope":9985,"src":"15224:23:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"},"typeName":{"id":9951,"nodeType":"UserDefinedTypeName","pathNode":{"id":9950,"name":"Request","nameLocations":["15224:7:44"],"nodeType":"IdentifierPath","referencedDeclaration":11388,"src":"15224:7:44"},"referencedDeclaration":11388,"src":"15224:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"}},"visibility":"internal"}],"id":9960,"initialValue":{"arguments":[{"expression":{"id":9954,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15262:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15266:6:44","memberName":"sender","nodeType":"MemberAccess","src":"15262:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9956,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9919,"src":"15274:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9957,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9921,"src":"15286:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9958,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9923,"src":"15297:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9953,"name":"_getRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10864,"src":"15250:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_Request_$11388_storage_ptr_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (struct OptimisticOracleV2Interface.Request storage pointer)"}},"id":9959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15250:61:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"15224:87:44"},{"expression":{"id":9967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":9961,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9952,"src":"15321:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":9964,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15329:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"15321:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":9965,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15345:23:44","memberName":"callbackOnPriceProposed","nodeType":"MemberAccess","referencedDeclaration":11356,"src":"15321:47:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9966,"name":"callbackOnPriceProposed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9925,"src":"15371:23:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15321:73:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9968,"nodeType":"ExpressionStatement","src":"15321:73:44"},{"expression":{"id":9975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":9969,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9952,"src":"15404:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":9972,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15412:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"15404:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":9973,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15428:23:44","memberName":"callbackOnPriceDisputed","nodeType":"MemberAccess","referencedDeclaration":11358,"src":"15404:47:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9974,"name":"callbackOnPriceDisputed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9927,"src":"15454:23:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15404:73:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9976,"nodeType":"ExpressionStatement","src":"15404:73:44"},{"expression":{"id":9983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":9977,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9952,"src":"15487:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":9980,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15495:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"15487:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":9981,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15511:22:44","memberName":"callbackOnPriceSettled","nodeType":"MemberAccess","referencedDeclaration":11360,"src":"15487:46:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9982,"name":"callbackOnPriceSettled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9929,"src":"15536:22:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15487:71:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9984,"nodeType":"ExpressionStatement","src":"15487:71:44"}]},"baseFunctions":[11491],"documentation":{"id":9917,"nodeType":"StructuredDocumentation","src":"14244:555:44","text":" @notice Sets which callbacks should be enabled for the request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param callbackOnPriceProposed whether to enable the callback onPriceProposed.\n @param callbackOnPriceDisputed whether to enable the callback onPriceDisputed.\n @param callbackOnPriceSettled whether to enable the callback onPriceSettled."},"functionSelector":"f327b075","implemented":true,"kind":"function","modifiers":[{"id":9933,"kind":"modifierInvocation","modifierName":{"id":9932,"name":"nonReentrant","nameLocations":["15054:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"15054:12:44"},"nodeType":"ModifierInvocation","src":"15054:12:44"}],"name":"setCallbacks","nameLocation":"14813:12:44","overrides":{"id":9931,"nodeType":"OverrideSpecifier","overrides":[],"src":"15045:8:44"},"parameters":{"id":9930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9919,"mutability":"mutable","name":"identifier","nameLocation":"14843:10:44","nodeType":"VariableDeclaration","scope":9986,"src":"14835:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9918,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14835:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9921,"mutability":"mutable","name":"timestamp","nameLocation":"14871:9:44","nodeType":"VariableDeclaration","scope":9986,"src":"14863:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9920,"name":"uint256","nodeType":"ElementaryTypeName","src":"14863:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9923,"mutability":"mutable","name":"ancillaryData","nameLocation":"14903:13:44","nodeType":"VariableDeclaration","scope":9986,"src":"14890:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9922,"name":"bytes","nodeType":"ElementaryTypeName","src":"14890:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9925,"mutability":"mutable","name":"callbackOnPriceProposed","nameLocation":"14931:23:44","nodeType":"VariableDeclaration","scope":9986,"src":"14926:28:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9924,"name":"bool","nodeType":"ElementaryTypeName","src":"14926:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9927,"mutability":"mutable","name":"callbackOnPriceDisputed","nameLocation":"14969:23:44","nodeType":"VariableDeclaration","scope":9986,"src":"14964:28:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9926,"name":"bool","nodeType":"ElementaryTypeName","src":"14964:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9929,"mutability":"mutable","name":"callbackOnPriceSettled","nameLocation":"15007:22:44","nodeType":"VariableDeclaration","scope":9986,"src":"15002:27:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9928,"name":"bool","nodeType":"ElementaryTypeName","src":"15002:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14825:210:44"},"returnParameters":{"id":9934,"nodeType":"ParameterList","parameters":[],"src":"15067:0:44"},"scope":11127,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":10157,"nodeType":"FunctionDefinition","src":"16340:1923:44","nodes":[],"body":{"id":10156,"nodeType":"Block","src":"16610:1653:44","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10008,"name":"proposer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9989,"src":"16628:8:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16648:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10010,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16640:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10009,"name":"address","nodeType":"ElementaryTypeName","src":"16640:7:44","typeDescriptions":{}}},"id":10012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16640:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16628:22:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":10014,"name":"ProposerAddressCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11259,"src":"16652:27:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16652:29:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":10007,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"16620:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":10016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16620:62:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10017,"nodeType":"ExpressionStatement","src":"16620:62:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"id":10027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10020,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9991,"src":"16723:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10021,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9993,"src":"16734:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10022,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9995,"src":"16746:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10023,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9997,"src":"16757:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10019,"name":"_getState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10996,"src":"16713:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_enum$_State_$11350_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (enum OptimisticOracleV2Interface.State)"}},"id":10024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16713:58:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10025,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"16775:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":10026,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16781:9:44","memberName":"Requested","nodeType":"MemberAccess","referencedDeclaration":11344,"src":"16775:15:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"src":"16713:77:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":10028,"name":"RequestStateNotRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11241,"src":"16792:24:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16792:26:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":10018,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"16692:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":10030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16692:136:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10031,"nodeType":"ExpressionStatement","src":"16692:136:44"},{"assignments":[10034],"declarations":[{"constant":false,"id":10034,"mutability":"mutable","name":"request","nameLocation":"16854:7:44","nodeType":"VariableDeclaration","scope":10156,"src":"16838:23:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"},"typeName":{"id":10033,"nodeType":"UserDefinedTypeName","pathNode":{"id":10032,"name":"Request","nameLocations":["16838:7:44"],"nodeType":"IdentifierPath","referencedDeclaration":11388,"src":"16838:7:44"},"referencedDeclaration":11388,"src":"16838:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"}},"visibility":"internal"}],"id":10041,"initialValue":{"arguments":[{"id":10036,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9991,"src":"16876:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10037,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9993,"src":"16887:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10038,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9995,"src":"16899:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10039,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9997,"src":"16910:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10035,"name":"_getRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10864,"src":"16864:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_Request_$11388_storage_ptr_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (struct OptimisticOracleV2Interface.Request storage pointer)"}},"id":10040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16864:60:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"16838:86:44"},{"condition":{"expression":{"expression":{"id":10042,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"16938:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10043,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16946:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"16938:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":10044,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16962:10:44","memberName":"eventBased","nodeType":"MemberAccess","referencedDeclaration":11352,"src":"16938:34:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10054,"nodeType":"IfStatement","src":"16934:134:44","trueBody":{"id":10053,"nodeType":"Block","src":"16974:94:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10046,"name":"proposedPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9999,"src":"16996:13:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":10047,"name":"TOO_EARLY_RESPONSE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9454,"src":"17013:18:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16996:35:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":10049,"name":"CannotProposeTooEarly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11262,"src":"17033:21:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17033:23:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":10045,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"16988:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":10051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16988:69:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10052,"nodeType":"ExpressionStatement","src":"16988:69:44"}]}},{"expression":{"id":10059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10055,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"17077:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10057,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"17085:8:44","memberName":"proposer","nodeType":"MemberAccess","referencedDeclaration":11367,"src":"17077:16:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10058,"name":"proposer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9989,"src":"17096:8:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17077:27:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10060,"nodeType":"ExpressionStatement","src":"17077:27:44"},{"expression":{"id":10065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10061,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"17114:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10063,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"17122:13:44","memberName":"proposedPrice","nodeType":"MemberAccess","referencedDeclaration":11379,"src":"17114:21:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10064,"name":"proposedPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9999,"src":"17138:13:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17114:37:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":10066,"nodeType":"ExpressionStatement","src":"17114:37:44"},{"expression":{"id":10084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10067,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"17239:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10069,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"17247:14:44","memberName":"expirationTime","nodeType":"MemberAccess","referencedDeclaration":11383,"src":"17239:22:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10070,"name":"getCurrentTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11121,"src":"17264:14:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":10071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17264:16:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":10072,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"17296:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17304:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"17296:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":10074,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17320:14:44","memberName":"customLiveness","nodeType":"MemberAccess","referencedDeclaration":11364,"src":"17296:38:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17338:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17296:43:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":10080,"name":"defaultLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9439,"src":"17383:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"17296:102:44","trueExpression":{"expression":{"expression":{"id":10077,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"17342:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17350:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"17342:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":10079,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17366:14:44","memberName":"customLiveness","nodeType":"MemberAccess","referencedDeclaration":11364,"src":"17342:38:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10082,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17295:104:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17264:135:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17239:160:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10085,"nodeType":"ExpressionStatement","src":"17239:160:44"},{"expression":{"id":10093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10086,"name":"totalBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10005,"src":"17410:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":10087,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"17422:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17430:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"17422:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":10089,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17446:4:44","memberName":"bond","nodeType":"MemberAccess","referencedDeclaration":11362,"src":"17422:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":10090,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"17453:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10091,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17461:8:44","memberName":"finalFee","nodeType":"MemberAccess","referencedDeclaration":11387,"src":"17453:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17422:47:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17410:59:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10094,"nodeType":"ExpressionStatement","src":"17410:59:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10095,"name":"totalBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10005,"src":"17483:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17495:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17483:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10112,"nodeType":"IfStatement","src":"17479:90:44","trueBody":{"expression":{"arguments":[{"expression":{"id":10103,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"17532:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17536:6:44","memberName":"sender","nodeType":"MemberAccess","src":"17532:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":10107,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"17552:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_OptimisticOracleV2_$11127","typeString":"contract OptimisticOracleV2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OptimisticOracleV2_$11127","typeString":"contract OptimisticOracleV2"}],"id":10106,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17544:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10105,"name":"address","nodeType":"ElementaryTypeName","src":"17544:7:44","typeDescriptions":{}}},"id":10108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17544:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10109,"name":"totalBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10005,"src":"17559:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":10098,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"17498:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10101,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17506:8:44","memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":11372,"src":"17498:16:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"id":10102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17515:16:44","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":2663,"src":"17498:33:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$2591_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":10110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17498:71:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10111,"nodeType":"ExpressionStatement","src":"17498:71:44"}},{"eventCall":{"arguments":[{"id":10114,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9991,"src":"17611:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10115,"name":"proposer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9989,"src":"17634:8:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10116,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9993,"src":"17656:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10117,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9995,"src":"17680:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10118,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9997,"src":"17703:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":10119,"name":"proposedPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9999,"src":"17730:13:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"expression":{"id":10120,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"17757:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17765:14:44","memberName":"expirationTime","nodeType":"MemberAccess","referencedDeclaration":11383,"src":"17757:22:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":10124,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"17801:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10125,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17809:8:44","memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":11372,"src":"17801:16:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}],"id":10123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17793:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10122,"name":"address","nodeType":"ElementaryTypeName","src":"17793:7:44","typeDescriptions":{}}},"id":10126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17793:25:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10113,"name":"ProposePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11308,"src":"17585:12:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$_t_int256_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,address,bytes32,uint256,bytes memory,int256,uint256,address)"}},"id":10127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17585:243:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10128,"nodeType":"EmitStatement","src":"17580:248:44"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10129,"name":"_startReentrantGuardDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8230,"src":"17963:28:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17963:30:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10131,"nodeType":"ExpressionStatement","src":"17963:30:44"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10134,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9991,"src":"18036:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18028:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10132,"name":"address","nodeType":"ElementaryTypeName","src":"18028:7:44","typeDescriptions":{}}},"id":10135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18028:18:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18047:10:44","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":7799,"src":"18028:29:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$attached_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":10137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18028:31:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"expression":{"expression":{"id":10138,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10034,"src":"18063:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10139,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18071:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"18063:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":10140,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18087:23:44","memberName":"callbackOnPriceProposed","nodeType":"MemberAccess","referencedDeclaration":11356,"src":"18063:47:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18028:82:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10152,"nodeType":"IfStatement","src":"18024:195:44","trueBody":{"id":10151,"nodeType":"Block","src":"18112:107:44","statements":[{"expression":{"arguments":[{"id":10146,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9993,"src":"18171:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10147,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9995,"src":"18183:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10148,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9997,"src":"18194:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":10143,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9991,"src":"18146:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10142,"name":"OptimisticRequester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9413,"src":"18126:19:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OptimisticRequester_$9413_$","typeString":"type(contract OptimisticRequester)"}},"id":10144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18126:30:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimisticRequester_$9413","typeString":"contract OptimisticRequester"}},"id":10145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18157:13:44","memberName":"priceProposed","nodeType":"MemberAccess","referencedDeclaration":9388,"src":"18126:44:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes32,uint256,bytes memory) external"}},"id":10149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18126:82:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10150,"nodeType":"ExpressionStatement","src":"18126:82:44"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10153,"name":"_endReentrantGuardDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8238,"src":"18228:26:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18228:28:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10155,"nodeType":"ExpressionStatement","src":"18228:28:44"}]},"baseFunctions":[11509],"documentation":{"id":9987,"nodeType":"StructuredDocumentation","src":"15571:764:44","text":" @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\n from this proposal. However, any bonds are pulled from the caller.\n @param proposer address to set as the proposer.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param proposedPrice price being proposed.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the proposer once settled if the proposal is correct."},"functionSelector":"7c82288f","implemented":true,"kind":"function","modifiers":[{"id":10003,"kind":"modifierInvocation","modifierName":{"id":10002,"name":"nonReentrant","nameLocations":["16569:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"16569:12:44"},"nodeType":"ModifierInvocation","src":"16569:12:44"}],"name":"proposePriceFor","nameLocation":"16349:15:44","overrides":{"id":10001,"nodeType":"OverrideSpecifier","overrides":[],"src":"16560:8:44"},"parameters":{"id":10000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9989,"mutability":"mutable","name":"proposer","nameLocation":"16382:8:44","nodeType":"VariableDeclaration","scope":10157,"src":"16374:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9988,"name":"address","nodeType":"ElementaryTypeName","src":"16374:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9991,"mutability":"mutable","name":"requester","nameLocation":"16408:9:44","nodeType":"VariableDeclaration","scope":10157,"src":"16400:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9990,"name":"address","nodeType":"ElementaryTypeName","src":"16400:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9993,"mutability":"mutable","name":"identifier","nameLocation":"16435:10:44","nodeType":"VariableDeclaration","scope":10157,"src":"16427:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9992,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16427:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9995,"mutability":"mutable","name":"timestamp","nameLocation":"16463:9:44","nodeType":"VariableDeclaration","scope":10157,"src":"16455:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9994,"name":"uint256","nodeType":"ElementaryTypeName","src":"16455:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9997,"mutability":"mutable","name":"ancillaryData","nameLocation":"16495:13:44","nodeType":"VariableDeclaration","scope":10157,"src":"16482:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9996,"name":"bytes","nodeType":"ElementaryTypeName","src":"16482:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9999,"mutability":"mutable","name":"proposedPrice","nameLocation":"16525:13:44","nodeType":"VariableDeclaration","scope":10157,"src":"16518:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9998,"name":"int256","nodeType":"ElementaryTypeName","src":"16518:6:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"16364:180:44"},"returnParameters":{"id":10006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10005,"mutability":"mutable","name":"totalBond","nameLocation":"16599:9:44","nodeType":"VariableDeclaration","scope":10157,"src":"16591:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10004,"name":"uint256","nodeType":"ElementaryTypeName","src":"16591:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16590:19:44"},"scope":11127,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":10185,"nodeType":"FunctionDefinition","src":"18860:399:44","nodes":[],"body":{"id":10184,"nodeType":"Block","src":"19082:177:44","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":10175,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"19177:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19181:6:44","memberName":"sender","nodeType":"MemberAccess","src":"19177:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10177,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10160,"src":"19189:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10178,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10162,"src":"19200:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10179,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10164,"src":"19212:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10180,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10166,"src":"19223:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":10181,"name":"proposedPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10168,"src":"19238:13:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":10174,"name":"proposePriceFor","nodeType":"Identifier","overloadedDeclarations":[10157],"referencedDeclaration":10157,"src":"19161:15:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$_t_int256_$returns$_t_uint256_$","typeString":"function (address,address,bytes32,uint256,bytes memory,int256) returns (uint256)"}},"id":10182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19161:91:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10173,"id":10183,"nodeType":"Return","src":"19154:98:44"}]},"baseFunctions":[11525],"documentation":{"id":10158,"nodeType":"StructuredDocumentation","src":"18269:586:44","text":" @notice Proposes a price value for an existing price request.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param proposedPrice price being proposed.\n @return totalBond the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to\n the proposer once settled if the proposal is correct."},"functionSelector":"b8b4f908","implemented":true,"kind":"function","modifiers":[],"name":"proposePrice","nameLocation":"18869:12:44","overrides":{"id":10170,"nodeType":"OverrideSpecifier","overrides":[],"src":"19045:8:44"},"parameters":{"id":10169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10160,"mutability":"mutable","name":"requester","nameLocation":"18899:9:44","nodeType":"VariableDeclaration","scope":10185,"src":"18891:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10159,"name":"address","nodeType":"ElementaryTypeName","src":"18891:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10162,"mutability":"mutable","name":"identifier","nameLocation":"18926:10:44","nodeType":"VariableDeclaration","scope":10185,"src":"18918:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10161,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18918:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10164,"mutability":"mutable","name":"timestamp","nameLocation":"18954:9:44","nodeType":"VariableDeclaration","scope":10185,"src":"18946:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10163,"name":"uint256","nodeType":"ElementaryTypeName","src":"18946:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10166,"mutability":"mutable","name":"ancillaryData","nameLocation":"18986:13:44","nodeType":"VariableDeclaration","scope":10185,"src":"18973:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10165,"name":"bytes","nodeType":"ElementaryTypeName","src":"18973:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":10168,"mutability":"mutable","name":"proposedPrice","nameLocation":"19016:13:44","nodeType":"VariableDeclaration","scope":10185,"src":"19009:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10167,"name":"int256","nodeType":"ElementaryTypeName","src":"19009:6:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18881:154:44"},"returnParameters":{"id":10173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10172,"mutability":"mutable","name":"totalBond","nameLocation":"19071:9:44","nodeType":"VariableDeclaration","scope":10185,"src":"19063:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10171,"name":"uint256","nodeType":"ElementaryTypeName","src":"19063:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19062:19:44"},"scope":11127,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":10415,"nodeType":"FunctionDefinition","src":"20036:2501:44","nodes":[],"body":{"id":10414,"nodeType":"Block","src":"20268:2269:44","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10205,"name":"disputer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10188,"src":"20286:8:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20306:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20298:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10206,"name":"address","nodeType":"ElementaryTypeName","src":"20298:7:44","typeDescriptions":{}}},"id":10209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20298:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"20286:22:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":10211,"name":"DisputerAddressCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11265,"src":"20310:27:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20310:29:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":10204,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"20278:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":10213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20278:62:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10214,"nodeType":"ExpressionStatement","src":"20278:62:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"id":10224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10217,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10190,"src":"20368:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10218,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10192,"src":"20379:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10219,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10194,"src":"20391:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10220,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10196,"src":"20402:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10216,"name":"_getState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10996,"src":"20358:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_enum$_State_$11350_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (enum OptimisticOracleV2Interface.State)"}},"id":10221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20358:58:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10222,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"20420:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":10223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20426:8:44","memberName":"Proposed","nodeType":"MemberAccess","referencedDeclaration":11345,"src":"20420:14:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"src":"20358:76:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":10225,"name":"RequestStateNotProposed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11244,"src":"20436:23:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20436:25:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":10215,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"20350:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":10227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20350:112:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10228,"nodeType":"ExpressionStatement","src":"20350:112:44"},{"assignments":[10231],"declarations":[{"constant":false,"id":10231,"mutability":"mutable","name":"request","nameLocation":"20488:7:44","nodeType":"VariableDeclaration","scope":10414,"src":"20472:23:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"},"typeName":{"id":10230,"nodeType":"UserDefinedTypeName","pathNode":{"id":10229,"name":"Request","nameLocations":["20472:7:44"],"nodeType":"IdentifierPath","referencedDeclaration":11388,"src":"20472:7:44"},"referencedDeclaration":11388,"src":"20472:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"}},"visibility":"internal"}],"id":10238,"initialValue":{"arguments":[{"id":10233,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10190,"src":"20510:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10234,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10192,"src":"20521:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10235,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10194,"src":"20533:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10236,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10196,"src":"20544:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10232,"name":"_getRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10864,"src":"20498:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_Request_$11388_storage_ptr_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (struct OptimisticOracleV2Interface.Request storage pointer)"}},"id":10237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20498:60:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"20472:86:44"},{"expression":{"id":10243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10239,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10231,"src":"20568:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10241,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20576:8:44","memberName":"disputer","nodeType":"MemberAccess","referencedDeclaration":11369,"src":"20568:16:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10242,"name":"disputer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10188,"src":"20587:8:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"20568:27:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10244,"nodeType":"ExpressionStatement","src":"20568:27:44"},{"assignments":[10246],"declarations":[{"constant":false,"id":10246,"mutability":"mutable","name":"finalFee","nameLocation":"20614:8:44","nodeType":"VariableDeclaration","scope":10414,"src":"20606:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10245,"name":"uint256","nodeType":"ElementaryTypeName","src":"20606:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10249,"initialValue":{"expression":{"id":10247,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10231,"src":"20625:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10248,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20633:8:44","memberName":"finalFee","nodeType":"MemberAccess","referencedDeclaration":11387,"src":"20625:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20606:35:44"},{"assignments":[10251],"declarations":[{"constant":false,"id":10251,"mutability":"mutable","name":"bond","nameLocation":"20659:4:44","nodeType":"VariableDeclaration","scope":10414,"src":"20651:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10250,"name":"uint256","nodeType":"ElementaryTypeName","src":"20651:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10255,"initialValue":{"expression":{"expression":{"id":10252,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10231,"src":"20666:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10253,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20674:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"20666:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":10254,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20690:4:44","memberName":"bond","nodeType":"MemberAccess","referencedDeclaration":11362,"src":"20666:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20651:43:44"},{"expression":{"id":10260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10256,"name":"totalBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10202,"src":"20704:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10257,"name":"bond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10251,"src":"20716:4:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":10258,"name":"finalFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10246,"src":"20723:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20716:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20704:27:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10261,"nodeType":"ExpressionStatement","src":"20704:27:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10262,"name":"totalBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10202,"src":"20745:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20757:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20745:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10280,"nodeType":"IfStatement","src":"20741:115:44","trueBody":{"id":10279,"nodeType":"Block","src":"20760:96:44","statements":[{"expression":{"arguments":[{"expression":{"id":10270,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"20808:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20812:6:44","memberName":"sender","nodeType":"MemberAccess","src":"20808:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":10274,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"20828:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_OptimisticOracleV2_$11127","typeString":"contract OptimisticOracleV2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OptimisticOracleV2_$11127","typeString":"contract OptimisticOracleV2"}],"id":10273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20820:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10272,"name":"address","nodeType":"ElementaryTypeName","src":"20820:7:44","typeDescriptions":{}}},"id":10275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20820:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10276,"name":"totalBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10202,"src":"20835:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":10265,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10231,"src":"20774:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10268,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20782:8:44","memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":11372,"src":"20774:16:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"id":10269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20791:16:44","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":2663,"src":"20774:33:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$2591_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":10277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20774:71:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10278,"nodeType":"ExpressionStatement","src":"20774:71:44"}]}},{"assignments":[10283],"declarations":[{"constant":false,"id":10283,"mutability":"mutable","name":"store","nameLocation":"20881:5:44","nodeType":"VariableDeclaration","scope":10414,"src":"20866:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_StoreInterface_$8413","typeString":"contract StoreInterface"},"typeName":{"id":10282,"nodeType":"UserDefinedTypeName","pathNode":{"id":10281,"name":"StoreInterface","nameLocations":["20866:14:44"],"nodeType":"IdentifierPath","referencedDeclaration":8413,"src":"20866:14:44"},"referencedDeclaration":8413,"src":"20866:14:44","typeDescriptions":{"typeIdentifier":"t_contract$_StoreInterface_$8413","typeString":"contract StoreInterface"}},"visibility":"internal"}],"id":10286,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10284,"name":"_getStore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11041,"src":"20889:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_StoreInterface_$8413_$","typeString":"function () view returns (contract StoreInterface)"}},"id":10285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20889:11:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_StoreInterface_$8413","typeString":"contract StoreInterface"}},"nodeType":"VariableDeclarationStatement","src":"20866:34:44"},{"assignments":[10288],"declarations":[{"constant":false,"id":10288,"mutability":"mutable","name":"totalFee","nameLocation":"21242:8:44","nodeType":"VariableDeclaration","scope":10414,"src":"21234:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10287,"name":"uint256","nodeType":"ElementaryTypeName","src":"21234:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10294,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10289,"name":"finalFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10246,"src":"21253:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"id":10291,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10231,"src":"21283:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}],"id":10290,"name":"_computeBurnedBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10879,"src":"21264:18:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Request_$11388_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct OptimisticOracleV2Interface.Request storage pointer) view returns (uint256)"}},"id":10292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21264:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21253:38:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21234:57:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10295,"name":"totalFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10288,"src":"21305:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21316:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21305:12:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10325,"nodeType":"IfStatement","src":"21301:218:44","trueBody":{"id":10324,"nodeType":"Block","src":"21319:200:44","statements":[{"expression":{"arguments":[{"arguments":[{"id":10305,"name":"store","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10283,"src":"21380:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_StoreInterface_$8413","typeString":"contract StoreInterface"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StoreInterface_$8413","typeString":"contract StoreInterface"}],"id":10304,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21372:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10303,"name":"address","nodeType":"ElementaryTypeName","src":"21372:7:44","typeDescriptions":{}}},"id":10306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21372:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10307,"name":"totalFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10288,"src":"21388:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":10298,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10231,"src":"21333:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10301,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21341:8:44","memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":11372,"src":"21333:16:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"id":10302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21350:21:44","memberName":"safeIncreaseAllowance","nodeType":"MemberAccess","referencedDeclaration":2749,"src":"21333:38:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$2591_$","typeString":"function (contract IERC20,address,uint256)"}},"id":10308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21333:64:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10309,"nodeType":"ExpressionStatement","src":"21333:64:44"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":10315,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10231,"src":"21450:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10316,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21458:8:44","memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":11372,"src":"21450:16:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}],"id":10314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21442:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10313,"name":"address","nodeType":"ElementaryTypeName","src":"21442:7:44","typeDescriptions":{}}},"id":10317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21442:25:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":10320,"name":"totalFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10288,"src":"21498:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10318,"name":"FixedPointInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8366,"src":"21469:19:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPointInterface_$8366_$","typeString":"type(contract FixedPointInterface)"}},"id":10319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21489:8:44","memberName":"Unsigned","nodeType":"MemberAccess","referencedDeclaration":8365,"src":"21469:28:44","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Unsigned_$8365_storage_ptr_$","typeString":"type(struct FixedPointInterface.Unsigned storage pointer)"}},"id":10321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21469:38:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Unsigned_$8365_memory_ptr","typeString":"struct FixedPointInterface.Unsigned memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_Unsigned_$8365_memory_ptr","typeString":"struct FixedPointInterface.Unsigned memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10310,"name":"_getStore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11041,"src":"21411:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_StoreInterface_$8413_$","typeString":"function () view returns (contract StoreInterface)"}},"id":10311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21411:11:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_StoreInterface_$8413","typeString":"contract StoreInterface"}},"id":10312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21423:18:44","memberName":"payOracleFeesErc20","nodeType":"MemberAccess","referencedDeclaration":8386,"src":"21411:30:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_struct$_Unsigned_$8365_memory_ptr_$returns$__$","typeString":"function (address,struct FixedPointInterface.Unsigned memory) external"}},"id":10322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21411:97:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10323,"nodeType":"ExpressionStatement","src":"21411:97:44"}]}},{"expression":{"arguments":[{"id":10329,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10192,"src":"21568:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":10331,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10231,"src":"21607:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},{"id":10332,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10194,"src":"21616:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10330,"name":"_getTimestampForDvmRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11093,"src":"21580:26:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Request_$11388_storage_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct OptimisticOracleV2Interface.Request storage pointer,uint256) view returns (uint256)"}},"id":10333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21580:46:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":10335,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10196,"src":"21648:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":10336,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10190,"src":"21663:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10334,"name":"_stampAncillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11111,"src":"21628:19:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_address_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,address) pure returns (bytes memory)"}},"id":10337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21628:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10326,"name":"_getOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11011,"src":"21529:10:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_OracleAncillaryInterface_$7781_$","typeString":"function () view returns (contract OracleAncillaryInterface)"}},"id":10327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21529:12:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OracleAncillaryInterface_$7781","typeString":"contract OracleAncillaryInterface"}},"id":10328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21542:12:44","memberName":"requestPrice","nodeType":"MemberAccess","referencedDeclaration":7756,"src":"21529:25:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes32,uint256,bytes memory) external"}},"id":10338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21529:154:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10339,"nodeType":"ExpressionStatement","src":"21529:154:44"},{"assignments":[10341],"declarations":[{"constant":false,"id":10341,"mutability":"mutable","name":"refund","nameLocation":"21729:6:44","nodeType":"VariableDeclaration","scope":10414,"src":"21721:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10340,"name":"uint256","nodeType":"ElementaryTypeName","src":"21721:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10343,"initialValue":{"hexValue":"30","id":10342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21738:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21721:18:44"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10344,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10231,"src":"21753:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10345,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21761:6:44","memberName":"reward","nodeType":"MemberAccess","referencedDeclaration":11385,"src":"21753:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21770:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21753:18:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"expression":{"expression":{"id":10348,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10231,"src":"21775:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10349,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21783:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"21775:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":10350,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21799:15:44","memberName":"refundOnDispute","nodeType":"MemberAccess","referencedDeclaration":11354,"src":"21775:39:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21753:61:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10373,"nodeType":"IfStatement","src":"21749:209:44","trueBody":{"id":10372,"nodeType":"Block","src":"21816:142:44","statements":[{"expression":{"id":10355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10352,"name":"refund","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10341,"src":"21830:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":10353,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10231,"src":"21839:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10354,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21847:6:44","memberName":"reward","nodeType":"MemberAccess","referencedDeclaration":11385,"src":"21839:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21830:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10356,"nodeType":"ExpressionStatement","src":"21830:23:44"},{"expression":{"id":10361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10357,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10231,"src":"21867:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10359,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"21875:6:44","memberName":"reward","nodeType":"MemberAccess","referencedDeclaration":11385,"src":"21867:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":10360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21884:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21867:18:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10362,"nodeType":"ExpressionStatement","src":"21867:18:44"},{"expression":{"arguments":[{"id":10368,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10190,"src":"21929:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10369,"name":"refund","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10341,"src":"21940:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":10363,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10231,"src":"21899:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10366,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21907:8:44","memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":11372,"src":"21899:16:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"id":10367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21916:12:44","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":2636,"src":"21899:29:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$2591_$","typeString":"function (contract IERC20,address,uint256)"}},"id":10370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21899:48:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10371,"nodeType":"ExpressionStatement","src":"21899:48:44"}]}},{"eventCall":{"arguments":[{"id":10375,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10190,"src":"21999:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":10376,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10231,"src":"22010:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10377,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22018:8:44","memberName":"proposer","nodeType":"MemberAccess","referencedDeclaration":11367,"src":"22010:16:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10378,"name":"disputer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10188,"src":"22028:8:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10379,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10192,"src":"22038:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10380,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10194,"src":"22050:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10381,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10196,"src":"22061:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":10382,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10231,"src":"22076:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10383,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22084:13:44","memberName":"proposedPrice","nodeType":"MemberAccess","referencedDeclaration":11379,"src":"22076:21:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":10374,"name":"DisputePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11324,"src":"21973:12:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$_t_int256_$returns$__$","typeString":"function (address,address,address,bytes32,uint256,bytes memory,int256)"}},"id":10384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21973:134:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10385,"nodeType":"EmitStatement","src":"21968:139:44"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10386,"name":"_startReentrantGuardDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8230,"src":"22229:28:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22229:30:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10388,"nodeType":"ExpressionStatement","src":"22229:30:44"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10391,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10190,"src":"22302:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22294:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10389,"name":"address","nodeType":"ElementaryTypeName","src":"22294:7:44","typeDescriptions":{}}},"id":10392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22294:18:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22313:10:44","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":7799,"src":"22294:29:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$attached_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":10394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22294:31:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"expression":{"expression":{"id":10395,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10231,"src":"22329:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10396,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22337:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"22329:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":10397,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22353:23:44","memberName":"callbackOnPriceDisputed","nodeType":"MemberAccess","referencedDeclaration":11358,"src":"22329:47:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22294:82:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10410,"nodeType":"IfStatement","src":"22290:203:44","trueBody":{"id":10409,"nodeType":"Block","src":"22378:115:44","statements":[{"expression":{"arguments":[{"id":10403,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10192,"src":"22437:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10404,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10194,"src":"22449:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10405,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10196,"src":"22460:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":10406,"name":"refund","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10341,"src":"22475:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":10400,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10190,"src":"22412:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10399,"name":"OptimisticRequester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9413,"src":"22392:19:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OptimisticRequester_$9413_$","typeString":"type(contract OptimisticRequester)"}},"id":10401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22392:30:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimisticRequester_$9413","typeString":"contract OptimisticRequester"}},"id":10402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22423:13:44","memberName":"priceDisputed","nodeType":"MemberAccess","referencedDeclaration":9400,"src":"22392:44:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256,bytes memory,uint256) external"}},"id":10407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22392:90:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10408,"nodeType":"ExpressionStatement","src":"22392:90:44"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10411,"name":"_endReentrantGuardDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8238,"src":"22502:26:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22502:28:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10413,"nodeType":"ExpressionStatement","src":"22502:28:44"}]},"baseFunctions":[11541],"documentation":{"id":10186,"nodeType":"StructuredDocumentation","src":"19265:766:44","text":" @notice Disputes a price request with an active proposal on another address' behalf. Note: this address will\n receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\n @param disputer address to set as the disputer.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the disputer once settled if the dispute was valid (the proposal was incorrect)."},"functionSelector":"76c7823f","implemented":true,"kind":"function","modifiers":[{"id":10200,"kind":"modifierInvocation","modifierName":{"id":10199,"name":"nonReentrant","nameLocations":["20227:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"20227:12:44"},"nodeType":"ModifierInvocation","src":"20227:12:44"}],"name":"disputePriceFor","nameLocation":"20045:15:44","overrides":{"id":10198,"nodeType":"OverrideSpecifier","overrides":[],"src":"20218:8:44"},"parameters":{"id":10197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10188,"mutability":"mutable","name":"disputer","nameLocation":"20078:8:44","nodeType":"VariableDeclaration","scope":10415,"src":"20070:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10187,"name":"address","nodeType":"ElementaryTypeName","src":"20070:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10190,"mutability":"mutable","name":"requester","nameLocation":"20104:9:44","nodeType":"VariableDeclaration","scope":10415,"src":"20096:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10189,"name":"address","nodeType":"ElementaryTypeName","src":"20096:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10192,"mutability":"mutable","name":"identifier","nameLocation":"20131:10:44","nodeType":"VariableDeclaration","scope":10415,"src":"20123:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10191,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20123:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10194,"mutability":"mutable","name":"timestamp","nameLocation":"20159:9:44","nodeType":"VariableDeclaration","scope":10415,"src":"20151:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10193,"name":"uint256","nodeType":"ElementaryTypeName","src":"20151:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10196,"mutability":"mutable","name":"ancillaryData","nameLocation":"20191:13:44","nodeType":"VariableDeclaration","scope":10415,"src":"20178:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10195,"name":"bytes","nodeType":"ElementaryTypeName","src":"20178:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20060:150:44"},"returnParameters":{"id":10203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10202,"mutability":"mutable","name":"totalBond","nameLocation":"20257:9:44","nodeType":"VariableDeclaration","scope":10415,"src":"20249:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10201,"name":"uint256","nodeType":"ElementaryTypeName","src":"20249:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20248:19:44"},"scope":11127,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":10440,"nodeType":"FunctionDefinition","src":"23135:344:44","nodes":[],"body":{"id":10439,"nodeType":"Block","src":"23317:162:44","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":10431,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"23412:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23416:6:44","memberName":"sender","nodeType":"MemberAccess","src":"23412:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10433,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10418,"src":"23424:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10434,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10420,"src":"23435:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10435,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10422,"src":"23447:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10436,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10424,"src":"23458:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10430,"name":"disputePriceFor","nodeType":"Identifier","overloadedDeclarations":[10415],"referencedDeclaration":10415,"src":"23396:15:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (address,address,bytes32,uint256,bytes memory) returns (uint256)"}},"id":10437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23396:76:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10429,"id":10438,"nodeType":"Return","src":"23389:83:44"}]},"baseFunctions":[11555],"documentation":{"id":10416,"nodeType":"StructuredDocumentation","src":"22543:587:44","text":" @notice Disputes a price value for an existing price request with an active proposal.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return totalBond the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to\n the disputer once settled if the dispute was valid (the proposal was incorrect)."},"functionSelector":"fba7f1e3","implemented":true,"kind":"function","modifiers":[],"name":"disputePrice","nameLocation":"23144:12:44","overrides":{"id":10426,"nodeType":"OverrideSpecifier","overrides":[],"src":"23268:8:44"},"parameters":{"id":10425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10418,"mutability":"mutable","name":"requester","nameLocation":"23165:9:44","nodeType":"VariableDeclaration","scope":10440,"src":"23157:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10417,"name":"address","nodeType":"ElementaryTypeName","src":"23157:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10420,"mutability":"mutable","name":"identifier","nameLocation":"23184:10:44","nodeType":"VariableDeclaration","scope":10440,"src":"23176:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10419,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23176:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10422,"mutability":"mutable","name":"timestamp","nameLocation":"23204:9:44","nodeType":"VariableDeclaration","scope":10440,"src":"23196:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10421,"name":"uint256","nodeType":"ElementaryTypeName","src":"23196:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10424,"mutability":"mutable","name":"ancillaryData","nameLocation":"23228:13:44","nodeType":"VariableDeclaration","scope":10440,"src":"23215:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10423,"name":"bytes","nodeType":"ElementaryTypeName","src":"23215:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"23156:86:44"},"returnParameters":{"id":10429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10428,"mutability":"mutable","name":"totalBond","nameLocation":"23302:9:44","nodeType":"VariableDeclaration","scope":10440,"src":"23294:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10427,"name":"uint256","nodeType":"ElementaryTypeName","src":"23294:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23293:19:44"},"scope":11127,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":10485,"nodeType":"FunctionDefinition","src":"24005:451:44","nodes":[],"body":{"id":10484,"nodeType":"Block","src":"24183:273:44","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"id":10464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":10456,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"24207:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24211:6:44","memberName":"sender","nodeType":"MemberAccess","src":"24207:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10458,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10443,"src":"24219:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10459,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10445,"src":"24231:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10460,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10447,"src":"24242:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10455,"name":"_getState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10996,"src":"24197:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_enum$_State_$11350_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (enum OptimisticOracleV2Interface.State)"}},"id":10461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24197:59:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":10462,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"24260:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":10463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"24266:7:44","memberName":"Settled","nodeType":"MemberAccess","referencedDeclaration":11349,"src":"24260:13:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"src":"24197:76:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10474,"nodeType":"IfStatement","src":"24193:164:44","trueBody":{"id":10473,"nodeType":"Block","src":"24275:82:44","statements":[{"expression":{"arguments":[{"expression":{"id":10466,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"24297:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24301:6:44","memberName":"sender","nodeType":"MemberAccess","src":"24297:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10468,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10443,"src":"24309:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10469,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10445,"src":"24321:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10470,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10447,"src":"24332:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10465,"name":"_settle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10840,"src":"24289:7:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (address,bytes32,uint256,bytes memory) returns (uint256)"}},"id":10471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24289:57:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10472,"nodeType":"ExpressionStatement","src":"24289:57:44"}]}},{"expression":{"expression":{"arguments":[{"expression":{"id":10476,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"24386:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24390:6:44","memberName":"sender","nodeType":"MemberAccess","src":"24386:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10478,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10443,"src":"24398:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10479,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10445,"src":"24410:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10480,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10447,"src":"24421:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10475,"name":"_getRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10864,"src":"24374:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_Request_$11388_storage_ptr_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (struct OptimisticOracleV2Interface.Request storage pointer)"}},"id":10481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24374:61:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10482,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24436:13:44","memberName":"resolvedPrice","nodeType":"MemberAccess","referencedDeclaration":11381,"src":"24374:75:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":10454,"id":10483,"nodeType":"Return","src":"24367:82:44"}]},"baseFunctions":[11567],"documentation":{"id":10441,"nodeType":"StructuredDocumentation","src":"23485:515:44","text":" @notice Retrieves a price that was previously requested by a caller. Reverts if the request is not settled\n or settleable. Note: this method is not view so that this call may actually settle the price request if it\n hasn't been settled.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return resolved price."},"functionSelector":"53b59239","implemented":true,"kind":"function","modifiers":[{"id":10451,"kind":"modifierInvocation","modifierName":{"id":10450,"name":"nonReentrant","nameLocations":["24141:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"24141:12:44"},"nodeType":"ModifierInvocation","src":"24141:12:44"}],"name":"settleAndGetPrice","nameLocation":"24014:17:44","overrides":{"id":10449,"nodeType":"OverrideSpecifier","overrides":[],"src":"24124:8:44"},"parameters":{"id":10448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10443,"mutability":"mutable","name":"identifier","nameLocation":"24040:10:44","nodeType":"VariableDeclaration","scope":10485,"src":"24032:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10442,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24032:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10445,"mutability":"mutable","name":"timestamp","nameLocation":"24060:9:44","nodeType":"VariableDeclaration","scope":10485,"src":"24052:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10444,"name":"uint256","nodeType":"ElementaryTypeName","src":"24052:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10447,"mutability":"mutable","name":"ancillaryData","nameLocation":"24084:13:44","nodeType":"VariableDeclaration","scope":10485,"src":"24071:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10446,"name":"bytes","nodeType":"ElementaryTypeName","src":"24071:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"24031:67:44"},"returnParameters":{"id":10454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10485,"src":"24171:6:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10452,"name":"int256","nodeType":"ElementaryTypeName","src":"24171:6:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24170:8:44"},"scope":11127,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":10510,"nodeType":"FunctionDefinition","src":"25032:274:44","nodes":[],"body":{"id":10509,"nodeType":"Block","src":"25226:80:44","nodes":[],"statements":[{"expression":{"arguments":[{"id":10503,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10488,"src":"25251:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10504,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10490,"src":"25262:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10505,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10492,"src":"25274:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10506,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10494,"src":"25285:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10502,"name":"_settle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10840,"src":"25243:7:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (address,bytes32,uint256,bytes memory) returns (uint256)"}},"id":10507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25243:56:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10501,"id":10508,"nodeType":"Return","src":"25236:63:44"}]},"baseFunctions":[11581],"documentation":{"id":10486,"nodeType":"StructuredDocumentation","src":"24462:565:44","text":" @notice Attempts to settle an outstanding price request. Will revert if it isn't settleable.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return payout the amount that the \"winner\" (proposer or disputer) receives on settlement. This amount includes\n the returned bonds as well as additional rewards."},"functionSelector":"5e9a79a9","implemented":true,"kind":"function","modifiers":[{"id":10498,"kind":"modifierInvocation","modifierName":{"id":10497,"name":"nonReentrant","nameLocations":["25176:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":8188,"src":"25176:12:44"},"nodeType":"ModifierInvocation","src":"25176:12:44"}],"name":"settle","nameLocation":"25041:6:44","overrides":{"id":10496,"nodeType":"OverrideSpecifier","overrides":[],"src":"25159:8:44"},"parameters":{"id":10495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10488,"mutability":"mutable","name":"requester","nameLocation":"25056:9:44","nodeType":"VariableDeclaration","scope":10510,"src":"25048:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10487,"name":"address","nodeType":"ElementaryTypeName","src":"25048:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10490,"mutability":"mutable","name":"identifier","nameLocation":"25075:10:44","nodeType":"VariableDeclaration","scope":10510,"src":"25067:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10489,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25067:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10492,"mutability":"mutable","name":"timestamp","nameLocation":"25095:9:44","nodeType":"VariableDeclaration","scope":10510,"src":"25087:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10491,"name":"uint256","nodeType":"ElementaryTypeName","src":"25087:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10494,"mutability":"mutable","name":"ancillaryData","nameLocation":"25119:13:44","nodeType":"VariableDeclaration","scope":10510,"src":"25106:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10493,"name":"bytes","nodeType":"ElementaryTypeName","src":"25106:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"25047:86:44"},"returnParameters":{"id":10501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10500,"mutability":"mutable","name":"payout","nameLocation":"25214:6:44","nodeType":"VariableDeclaration","scope":10510,"src":"25206:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10499,"name":"uint256","nodeType":"ElementaryTypeName","src":"25206:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25205:16:44"},"scope":11127,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":10536,"nodeType":"FunctionDefinition","src":"25746:297:44","nodes":[],"body":{"id":10535,"nodeType":"Block","src":"25959:84:44","nodes":[],"statements":[{"expression":{"arguments":[{"id":10529,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10513,"src":"25988:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10530,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10515,"src":"25999:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10531,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10517,"src":"26011:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10532,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10519,"src":"26022:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10528,"name":"_getRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10864,"src":"25976:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_Request_$11388_storage_ptr_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (struct OptimisticOracleV2Interface.Request storage pointer)"}},"id":10533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25976:60:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"functionReturnParameters":10527,"id":10534,"nodeType":"Return","src":"25969:67:44"}]},"baseFunctions":[11596],"documentation":{"id":10511,"nodeType":"StructuredDocumentation","src":"25312:429:44","text":" @notice Gets the current data structure containing all information about a price request.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return the Request data structure."},"functionSelector":"a9904f9b","implemented":true,"kind":"function","modifiers":[{"id":10523,"kind":"modifierInvocation","modifierName":{"id":10522,"name":"nonReentrantView","nameLocations":["25905:16:44"],"nodeType":"IdentifierPath","referencedDeclaration":8196,"src":"25905:16:44"},"nodeType":"ModifierInvocation","src":"25905:16:44"}],"name":"getRequest","nameLocation":"25755:10:44","overrides":{"id":10521,"nodeType":"OverrideSpecifier","overrides":[],"src":"25888:8:44"},"parameters":{"id":10520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10513,"mutability":"mutable","name":"requester","nameLocation":"25774:9:44","nodeType":"VariableDeclaration","scope":10536,"src":"25766:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10512,"name":"address","nodeType":"ElementaryTypeName","src":"25766:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10515,"mutability":"mutable","name":"identifier","nameLocation":"25793:10:44","nodeType":"VariableDeclaration","scope":10536,"src":"25785:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10514,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25785:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10517,"mutability":"mutable","name":"timestamp","nameLocation":"25813:9:44","nodeType":"VariableDeclaration","scope":10536,"src":"25805:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10516,"name":"uint256","nodeType":"ElementaryTypeName","src":"25805:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10519,"mutability":"mutable","name":"ancillaryData","nameLocation":"25837:13:44","nodeType":"VariableDeclaration","scope":10536,"src":"25824:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10518,"name":"bytes","nodeType":"ElementaryTypeName","src":"25824:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"25765:86:44"},"returnParameters":{"id":10527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10526,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10536,"src":"25939:14:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_memory_ptr","typeString":"struct OptimisticOracleV2Interface.Request"},"typeName":{"id":10525,"nodeType":"UserDefinedTypeName","pathNode":{"id":10524,"name":"Request","nameLocations":["25939:7:44"],"nodeType":"IdentifierPath","referencedDeclaration":11388,"src":"25939:7:44"},"referencedDeclaration":11388,"src":"25939:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"}},"visibility":"internal"}],"src":"25938:16:44"},"scope":11127,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":10562,"nodeType":"FunctionDefinition","src":"26468:284:44","nodes":[],"body":{"id":10561,"nodeType":"Block","src":"26670:82:44","nodes":[],"statements":[{"expression":{"arguments":[{"id":10555,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10539,"src":"26697:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10556,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10541,"src":"26708:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10557,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10543,"src":"26720:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10558,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10545,"src":"26731:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10554,"name":"_getState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10996,"src":"26687:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_enum$_State_$11350_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (enum OptimisticOracleV2Interface.State)"}},"id":10559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26687:58:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"functionReturnParameters":10553,"id":10560,"nodeType":"Return","src":"26680:65:44"}]},"baseFunctions":[11611],"documentation":{"id":10537,"nodeType":"StructuredDocumentation","src":"26049:414:44","text":" @notice Computes the current state of a price request. See the State enum for more details.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return the State."},"functionSelector":"ba4b930c","implemented":true,"kind":"function","modifiers":[{"id":10549,"kind":"modifierInvocation","modifierName":{"id":10548,"name":"nonReentrantView","nameLocations":["26625:16:44"],"nodeType":"IdentifierPath","referencedDeclaration":8196,"src":"26625:16:44"},"nodeType":"ModifierInvocation","src":"26625:16:44"}],"name":"getState","nameLocation":"26477:8:44","overrides":{"id":10547,"nodeType":"OverrideSpecifier","overrides":[],"src":"26608:8:44"},"parameters":{"id":10546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10539,"mutability":"mutable","name":"requester","nameLocation":"26494:9:44","nodeType":"VariableDeclaration","scope":10562,"src":"26486:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10538,"name":"address","nodeType":"ElementaryTypeName","src":"26486:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10541,"mutability":"mutable","name":"identifier","nameLocation":"26513:10:44","nodeType":"VariableDeclaration","scope":10562,"src":"26505:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10540,"name":"bytes32","nodeType":"ElementaryTypeName","src":"26505:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10543,"mutability":"mutable","name":"timestamp","nameLocation":"26533:9:44","nodeType":"VariableDeclaration","scope":10562,"src":"26525:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10542,"name":"uint256","nodeType":"ElementaryTypeName","src":"26525:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10545,"mutability":"mutable","name":"ancillaryData","nameLocation":"26557:13:44","nodeType":"VariableDeclaration","scope":10562,"src":"26544:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10544,"name":"bytes","nodeType":"ElementaryTypeName","src":"26544:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26485:86:44"},"returnParameters":{"id":10553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10552,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10562,"src":"26659:5:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"typeName":{"id":10551,"nodeType":"UserDefinedTypeName","pathNode":{"id":10550,"name":"State","nameLocations":["26659:5:44"],"nodeType":"IdentifierPath","referencedDeclaration":11350,"src":"26659:5:44"},"referencedDeclaration":11350,"src":"26659:5:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"visibility":"internal"}],"src":"26658:7:44"},"scope":11127,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":10605,"nodeType":"FunctionDefinition","src":"27245:382:44","nodes":[],"body":{"id":10604,"nodeType":"Block","src":"27446:181:44","nodes":[],"statements":[{"assignments":[10581],"declarations":[{"constant":false,"id":10581,"mutability":"mutable","name":"state","nameLocation":"27462:5:44","nodeType":"VariableDeclaration","scope":10604,"src":"27456:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"typeName":{"id":10580,"nodeType":"UserDefinedTypeName","pathNode":{"id":10579,"name":"State","nameLocations":["27456:5:44"],"nodeType":"IdentifierPath","referencedDeclaration":11350,"src":"27456:5:44"},"referencedDeclaration":11350,"src":"27456:5:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"visibility":"internal"}],"id":10588,"initialValue":{"arguments":[{"id":10583,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10565,"src":"27480:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10584,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10567,"src":"27491:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10585,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"27503:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10586,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10571,"src":"27514:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10582,"name":"_getState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10996,"src":"27470:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_enum$_State_$11350_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (enum OptimisticOracleV2Interface.State)"}},"id":10587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27470:58:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"nodeType":"VariableDeclarationStatement","src":"27456:72:44"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"id":10592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10589,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10581,"src":"27545:5:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10590,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"27554:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":10591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"27560:7:44","memberName":"Settled","nodeType":"MemberAccess","referencedDeclaration":11349,"src":"27554:13:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"src":"27545:22:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"id":10596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10593,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10581,"src":"27571:5:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10594,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"27580:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":10595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"27586:8:44","memberName":"Resolved","nodeType":"MemberAccess","referencedDeclaration":11348,"src":"27580:14:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"src":"27571:23:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"27545:49:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"id":10601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10598,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10581,"src":"27598:5:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10599,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"27607:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":10600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"27613:7:44","memberName":"Expired","nodeType":"MemberAccess","referencedDeclaration":11346,"src":"27607:13:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"src":"27598:22:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"27545:75:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10578,"id":10603,"nodeType":"Return","src":"27538:82:44"}]},"baseFunctions":[11625],"documentation":{"id":10563,"nodeType":"StructuredDocumentation","src":"26758:482:44","text":" @notice Checks if a given request has resolved, expired or been settled (i.e the optimistic oracle has a price).\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return boolean indicating true if price exists and false if not."},"functionSelector":"bc58ccaa","implemented":true,"kind":"function","modifiers":[{"id":10575,"kind":"modifierInvocation","modifierName":{"id":10574,"name":"nonReentrantView","nameLocations":["27402:16:44"],"nodeType":"IdentifierPath","referencedDeclaration":8196,"src":"27402:16:44"},"nodeType":"ModifierInvocation","src":"27402:16:44"}],"name":"hasPrice","nameLocation":"27254:8:44","overrides":{"id":10573,"nodeType":"OverrideSpecifier","overrides":[],"src":"27385:8:44"},"parameters":{"id":10572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10565,"mutability":"mutable","name":"requester","nameLocation":"27271:9:44","nodeType":"VariableDeclaration","scope":10605,"src":"27263:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10564,"name":"address","nodeType":"ElementaryTypeName","src":"27263:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10567,"mutability":"mutable","name":"identifier","nameLocation":"27290:10:44","nodeType":"VariableDeclaration","scope":10605,"src":"27282:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10566,"name":"bytes32","nodeType":"ElementaryTypeName","src":"27282:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10569,"mutability":"mutable","name":"timestamp","nameLocation":"27310:9:44","nodeType":"VariableDeclaration","scope":10605,"src":"27302:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10568,"name":"uint256","nodeType":"ElementaryTypeName","src":"27302:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10571,"mutability":"mutable","name":"ancillaryData","nameLocation":"27334:13:44","nodeType":"VariableDeclaration","scope":10605,"src":"27321:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10570,"name":"bytes","nodeType":"ElementaryTypeName","src":"27321:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27262:86:44"},"returnParameters":{"id":10578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10577,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10605,"src":"27436:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10576,"name":"bool","nodeType":"ElementaryTypeName","src":"27436:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"27435:6:44"},"scope":11127,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":10622,"nodeType":"FunctionDefinition","src":"27943:224:44","nodes":[],"body":{"id":10621,"nodeType":"Block","src":"28098:69:44","nodes":[],"statements":[{"expression":{"arguments":[{"id":10617,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10608,"src":"28135:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":10618,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10610,"src":"28150:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10616,"name":"_stampAncillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11111,"src":"28115:19:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_address_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,address) pure returns (bytes memory)"}},"id":10619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28115:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":10615,"id":10620,"nodeType":"Return","src":"28108:52:44"}]},"baseFunctions":[11634],"documentation":{"id":10606,"nodeType":"StructuredDocumentation","src":"27633:305:44","text":" @notice Generates stamped ancillary data in the format that it would be used in the case of a price dispute.\n @param ancillaryData ancillary data of the price being requested.\n @param requester sender of the initial price request.\n @return the stamped ancillary bytes."},"functionSelector":"af5d2f39","implemented":true,"kind":"function","modifiers":[],"name":"stampAncillaryData","nameLocation":"27952:18:44","overrides":{"id":10612,"nodeType":"OverrideSpecifier","overrides":[],"src":"28054:8:44"},"parameters":{"id":10611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10608,"mutability":"mutable","name":"ancillaryData","nameLocation":"27984:13:44","nodeType":"VariableDeclaration","scope":10622,"src":"27971:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10607,"name":"bytes","nodeType":"ElementaryTypeName","src":"27971:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":10610,"mutability":"mutable","name":"requester","nameLocation":"28007:9:44","nodeType":"VariableDeclaration","scope":10622,"src":"27999:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10609,"name":"address","nodeType":"ElementaryTypeName","src":"27999:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"27970:47:44"},"returnParameters":{"id":10615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10614,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10622,"src":"28080:12:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10613,"name":"bytes","nodeType":"ElementaryTypeName","src":"28080:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"28079:14:44"},"scope":11127,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":10646,"nodeType":"FunctionDefinition","src":"28173:262:44","nodes":[],"body":{"id":10645,"nodeType":"Block","src":"28335:100:44","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":10638,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10624,"src":"28379:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10639,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10626,"src":"28390:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10640,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10628,"src":"28402:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10641,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10630,"src":"28413:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":10636,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"28362:3:44","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":10637,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"28366:12:44","memberName":"encodePacked","nodeType":"MemberAccess","src":"28362:16:44","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":10642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28362:65:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10635,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"28352:9:44","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":10643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28352:76:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":10634,"id":10644,"nodeType":"Return","src":"28345:83:44"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getId","nameLocation":"28182:6:44","parameters":{"id":10631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10624,"mutability":"mutable","name":"requester","nameLocation":"28197:9:44","nodeType":"VariableDeclaration","scope":10646,"src":"28189:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10623,"name":"address","nodeType":"ElementaryTypeName","src":"28189:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10626,"mutability":"mutable","name":"identifier","nameLocation":"28216:10:44","nodeType":"VariableDeclaration","scope":10646,"src":"28208:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10625,"name":"bytes32","nodeType":"ElementaryTypeName","src":"28208:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10628,"mutability":"mutable","name":"timestamp","nameLocation":"28236:9:44","nodeType":"VariableDeclaration","scope":10646,"src":"28228:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10627,"name":"uint256","nodeType":"ElementaryTypeName","src":"28228:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10630,"mutability":"mutable","name":"ancillaryData","nameLocation":"28260:13:44","nodeType":"VariableDeclaration","scope":10646,"src":"28247:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10629,"name":"bytes","nodeType":"ElementaryTypeName","src":"28247:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"28188:86:44"},"returnParameters":{"id":10634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10633,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10646,"src":"28322:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10632,"name":"bytes32","nodeType":"ElementaryTypeName","src":"28322:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"28321:9:44"},"scope":11127,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":10840,"nodeType":"FunctionDefinition","src":"28441:2692:44","nodes":[],"body":{"id":10839,"nodeType":"Block","src":"28597:2536:44","nodes":[],"statements":[{"assignments":[10661],"declarations":[{"constant":false,"id":10661,"mutability":"mutable","name":"state","nameLocation":"28613:5:44","nodeType":"VariableDeclaration","scope":10839,"src":"28607:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"typeName":{"id":10660,"nodeType":"UserDefinedTypeName","pathNode":{"id":10659,"name":"State","nameLocations":["28607:5:44"],"nodeType":"IdentifierPath","referencedDeclaration":11350,"src":"28607:5:44"},"referencedDeclaration":11350,"src":"28607:5:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"visibility":"internal"}],"id":10668,"initialValue":{"arguments":[{"id":10663,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10648,"src":"28631:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10664,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10650,"src":"28642:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10665,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"28654:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10666,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10654,"src":"28665:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10662,"name":"_getState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10996,"src":"28621:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_enum$_State_$11350_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (enum OptimisticOracleV2Interface.State)"}},"id":10667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28621:58:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"nodeType":"VariableDeclarationStatement","src":"28607:72:44"},{"assignments":[10671],"declarations":[{"constant":false,"id":10671,"mutability":"mutable","name":"request","nameLocation":"28780:7:44","nodeType":"VariableDeclaration","scope":10839,"src":"28764:23:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"},"typeName":{"id":10670,"nodeType":"UserDefinedTypeName","pathNode":{"id":10669,"name":"Request","nameLocations":["28764:7:44"],"nodeType":"IdentifierPath","referencedDeclaration":11388,"src":"28764:7:44"},"referencedDeclaration":11388,"src":"28764:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"}},"visibility":"internal"}],"id":10678,"initialValue":{"arguments":[{"id":10673,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10648,"src":"28802:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10674,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10650,"src":"28813:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10675,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"28825:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10676,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10654,"src":"28836:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10672,"name":"_getRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10864,"src":"28790:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_Request_$11388_storage_ptr_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (struct OptimisticOracleV2Interface.Request storage pointer)"}},"id":10677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28790:60:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"28764:86:44"},{"expression":{"id":10683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10679,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"28860:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10681,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"28868:7:44","memberName":"settled","nodeType":"MemberAccess","referencedDeclaration":11374,"src":"28860:15:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":10682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28878:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"28860:22:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10684,"nodeType":"ExpressionStatement","src":"28860:22:44"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"id":10688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10685,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10661,"src":"28897:5:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10686,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"28906:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":10687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"28912:7:44","memberName":"Expired","nodeType":"MemberAccess","referencedDeclaration":11346,"src":"28906:13:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"src":"28897:22:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"id":10722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10719,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10661,"src":"29263:5:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10720,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"29272:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":10721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29278:8:44","memberName":"Resolved","nodeType":"MemberAccess","referencedDeclaration":11348,"src":"29272:14:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"src":"29263:23:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10793,"nodeType":"Block","src":"30374:54:44","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10790,"name":"RequestNotSettleable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11274,"src":"30395:20:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30395:22:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10792,"nodeType":"RevertStatement","src":"30388:29:44"}]},"id":10794,"nodeType":"IfStatement","src":"29259:1169:44","trueBody":{"id":10789,"nodeType":"Block","src":"29288:1080:44","statements":[{"expression":{"id":10739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10723,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"29418:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10725,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"29426:13:44","memberName":"resolvedPrice","nodeType":"MemberAccess","referencedDeclaration":11381,"src":"29418:21:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10729,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10650,"src":"29481:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":10731,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"29536:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},{"id":10732,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"29545:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10730,"name":"_getTimestampForDvmRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11093,"src":"29509:26:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Request_$11388_storage_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct OptimisticOracleV2Interface.Request storage pointer,uint256) view returns (uint256)"}},"id":10733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29509:46:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":10735,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10654,"src":"29593:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":10736,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10648,"src":"29608:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10734,"name":"_stampAncillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11111,"src":"29573:19:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_address_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,address) pure returns (bytes memory)"}},"id":10737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29573:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10726,"name":"_getOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11011,"src":"29442:10:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_OracleAncillaryInterface_$7781_$","typeString":"function () view returns (contract OracleAncillaryInterface)"}},"id":10727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29442:12:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OracleAncillaryInterface_$7781","typeString":"contract OracleAncillaryInterface"}},"id":10728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29455:8:44","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":7780,"src":"29442:21:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_int256_$","typeString":"function (bytes32,uint256,bytes memory) view external returns (int256)"}},"id":10738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29442:190:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29418:214:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":10740,"nodeType":"ExpressionStatement","src":"29418:214:44"},{"assignments":[10742],"declarations":[{"constant":false,"id":10742,"mutability":"mutable","name":"disputeSuccess","nameLocation":"29651:14:44","nodeType":"VariableDeclaration","scope":10789,"src":"29646:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10741,"name":"bool","nodeType":"ElementaryTypeName","src":"29646:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":10748,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10743,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"29668:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10744,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29676:13:44","memberName":"resolvedPrice","nodeType":"MemberAccess","referencedDeclaration":11381,"src":"29668:21:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":10745,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"29693:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10746,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29701:13:44","memberName":"proposedPrice","nodeType":"MemberAccess","referencedDeclaration":11379,"src":"29693:21:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29668:46:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"29646:68:44"},{"assignments":[10750],"declarations":[{"constant":false,"id":10750,"mutability":"mutable","name":"bond","nameLocation":"29736:4:44","nodeType":"VariableDeclaration","scope":10789,"src":"29728:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10749,"name":"uint256","nodeType":"ElementaryTypeName","src":"29728:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10754,"initialValue":{"expression":{"expression":{"id":10751,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"29743:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10752,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29751:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"29743:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":10753,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29767:4:44","memberName":"bond","nodeType":"MemberAccess","referencedDeclaration":11362,"src":"29743:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29728:43:44"},{"assignments":[10756],"declarations":[{"constant":false,"id":10756,"mutability":"mutable","name":"unburnedBond","nameLocation":"29865:12:44","nodeType":"VariableDeclaration","scope":10789,"src":"29857:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10755,"name":"uint256","nodeType":"ElementaryTypeName","src":"29857:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10762,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10757,"name":"bond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10750,"src":"29880:4:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":10759,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"29906:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}],"id":10758,"name":"_computeBurnedBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10879,"src":"29887:18:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Request_$11388_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct OptimisticOracleV2Interface.Request storage pointer) view returns (uint256)"}},"id":10760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29887:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29880:34:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29857:57:44"},{"expression":{"id":10773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10763,"name":"payout","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10657,"src":"30188:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10764,"name":"bond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10750,"src":"30197:4:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":10765,"name":"unburnedBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10756,"src":"30204:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30197:19:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":10767,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"30219:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10768,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30227:8:44","memberName":"finalFee","nodeType":"MemberAccess","referencedDeclaration":11387,"src":"30219:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30197:38:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":10770,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"30238:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10771,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30246:6:44","memberName":"reward","nodeType":"MemberAccess","referencedDeclaration":11385,"src":"30238:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30197:55:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30188:64:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10774,"nodeType":"ExpressionStatement","src":"30188:64:44"},{"expression":{"arguments":[{"condition":{"id":10780,"name":"disputeSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10742,"src":"30296:14:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":10783,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"30332:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10784,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30340:8:44","memberName":"proposer","nodeType":"MemberAccess","referencedDeclaration":11367,"src":"30332:16:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"30296:52:44","trueExpression":{"expression":{"id":10781,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"30313:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10782,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30321:8:44","memberName":"disputer","nodeType":"MemberAccess","referencedDeclaration":11369,"src":"30313:16:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10786,"name":"payout","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10657,"src":"30350:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":10775,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"30266:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10778,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30274:8:44","memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":11372,"src":"30266:16:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"id":10779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30283:12:44","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":2636,"src":"30266:29:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$2591_$","typeString":"function (contract IERC20,address,uint256)"}},"id":10787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30266:91:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10788,"nodeType":"ExpressionStatement","src":"30266:91:44"}]}},"id":10795,"nodeType":"IfStatement","src":"28893:1535:44","trueBody":{"id":10718,"nodeType":"Block","src":"28921:332:44","statements":[{"expression":{"id":10694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10689,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"29041:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10691,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"29049:13:44","memberName":"resolvedPrice","nodeType":"MemberAccess","referencedDeclaration":11381,"src":"29041:21:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":10692,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"29065:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10693,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29073:13:44","memberName":"proposedPrice","nodeType":"MemberAccess","referencedDeclaration":11379,"src":"29065:21:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29041:45:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":10695,"nodeType":"ExpressionStatement","src":"29041:45:44"},{"expression":{"id":10706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10696,"name":"payout","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10657,"src":"29100:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":10697,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"29109:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10698,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29117:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"29109:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":10699,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29133:4:44","memberName":"bond","nodeType":"MemberAccess","referencedDeclaration":11362,"src":"29109:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":10700,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"29140:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10701,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29148:8:44","memberName":"finalFee","nodeType":"MemberAccess","referencedDeclaration":11387,"src":"29140:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29109:47:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":10703,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"29159:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10704,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29167:6:44","memberName":"reward","nodeType":"MemberAccess","referencedDeclaration":11385,"src":"29159:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29109:64:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29100:73:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10707,"nodeType":"ExpressionStatement","src":"29100:73:44"},{"expression":{"arguments":[{"expression":{"id":10713,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"29217:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10714,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29225:8:44","memberName":"proposer","nodeType":"MemberAccess","referencedDeclaration":11367,"src":"29217:16:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10715,"name":"payout","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10657,"src":"29235:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":10708,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"29187:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10711,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29195:8:44","memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":11372,"src":"29187:16:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"id":10712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29204:12:44","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":2636,"src":"29187:29:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2591_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$2591_$","typeString":"function (contract IERC20,address,uint256)"}},"id":10716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29187:55:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10717,"nodeType":"ExpressionStatement","src":"29187:55:44"}]}},{"eventCall":{"arguments":[{"id":10797,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10648,"src":"30463:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":10798,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"30486:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10799,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30494:8:44","memberName":"proposer","nodeType":"MemberAccess","referencedDeclaration":11367,"src":"30486:16:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":10800,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"30516:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10801,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30524:8:44","memberName":"disputer","nodeType":"MemberAccess","referencedDeclaration":11369,"src":"30516:16:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10802,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10650,"src":"30546:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10803,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"30570:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10804,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10654,"src":"30593:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":10805,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"30620:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10806,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30628:13:44","memberName":"resolvedPrice","nodeType":"MemberAccess","referencedDeclaration":11381,"src":"30620:21:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":10807,"name":"payout","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10657,"src":"30655:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10796,"name":"Settle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11342,"src":"30443:6:44","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,bytes32,uint256,bytes memory,int256,uint256)"}},"id":10808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30443:228:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10809,"nodeType":"EmitStatement","src":"30438:233:44"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10810,"name":"_startReentrantGuardDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8230,"src":"30812:28:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30812:30:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10812,"nodeType":"ExpressionStatement","src":"30812:30:44"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10815,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10648,"src":"30885:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10814,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30877:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10813,"name":"address","nodeType":"ElementaryTypeName","src":"30877:7:44","typeDescriptions":{}}},"id":10816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30877:18:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30896:10:44","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":7799,"src":"30877:29:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$attached_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":10818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30877:31:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"expression":{"expression":{"id":10819,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"30912:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10820,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30920:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"30912:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":10821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30936:22:44","memberName":"callbackOnPriceSettled","nodeType":"MemberAccess","referencedDeclaration":11360,"src":"30912:46:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30877:81:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10835,"nodeType":"IfStatement","src":"30873:216:44","trueBody":{"id":10834,"nodeType":"Block","src":"30960:129:44","statements":[{"expression":{"arguments":[{"id":10827,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10650,"src":"31018:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10828,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"31030:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10829,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10654,"src":"31041:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":10830,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10671,"src":"31056:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10831,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31064:13:44","memberName":"resolvedPrice","nodeType":"MemberAccess","referencedDeclaration":11381,"src":"31056:21:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"arguments":[{"id":10824,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10648,"src":"30994:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10823,"name":"OptimisticRequester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9413,"src":"30974:19:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OptimisticRequester_$9413_$","typeString":"type(contract OptimisticRequester)"}},"id":10825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30974:30:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimisticRequester_$9413","typeString":"contract OptimisticRequester"}},"id":10826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31005:12:44","memberName":"priceSettled","nodeType":"MemberAccess","referencedDeclaration":9412,"src":"30974:43:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$_t_int256_$returns$__$","typeString":"function (bytes32,uint256,bytes memory,int256) external"}},"id":10832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30974:104:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10833,"nodeType":"ExpressionStatement","src":"30974:104:44"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10836,"name":"_endReentrantGuardDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8238,"src":"31098:26:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31098:28:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10838,"nodeType":"ExpressionStatement","src":"31098:28:44"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_settle","nameLocation":"28450:7:44","parameters":{"id":10655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10648,"mutability":"mutable","name":"requester","nameLocation":"28466:9:44","nodeType":"VariableDeclaration","scope":10840,"src":"28458:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10647,"name":"address","nodeType":"ElementaryTypeName","src":"28458:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10650,"mutability":"mutable","name":"identifier","nameLocation":"28485:10:44","nodeType":"VariableDeclaration","scope":10840,"src":"28477:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10649,"name":"bytes32","nodeType":"ElementaryTypeName","src":"28477:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10652,"mutability":"mutable","name":"timestamp","nameLocation":"28505:9:44","nodeType":"VariableDeclaration","scope":10840,"src":"28497:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10651,"name":"uint256","nodeType":"ElementaryTypeName","src":"28497:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10654,"mutability":"mutable","name":"ancillaryData","nameLocation":"28529:13:44","nodeType":"VariableDeclaration","scope":10840,"src":"28516:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10653,"name":"bytes","nodeType":"ElementaryTypeName","src":"28516:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"28457:86:44"},"returnParameters":{"id":10658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10657,"mutability":"mutable","name":"payout","nameLocation":"28585:6:44","nodeType":"VariableDeclaration","scope":10840,"src":"28577:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10656,"name":"uint256","nodeType":"ElementaryTypeName","src":"28577:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28576:16:44"},"scope":11127,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":10864,"nodeType":"FunctionDefinition","src":"31139:264:44","nodes":[],"body":{"id":10863,"nodeType":"Block","src":"31314:89:44","nodes":[],"statements":[{"expression":{"baseExpression":{"id":10854,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11412,"src":"31331:8:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Request_$11388_storage_$","typeString":"mapping(bytes32 => struct OptimisticOracleV2Interface.Request storage ref)"}},"id":10861,"indexExpression":{"arguments":[{"id":10856,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10842,"src":"31347:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10857,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10844,"src":"31358:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10858,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10846,"src":"31370:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10859,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10848,"src":"31381:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10855,"name":"_getId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10646,"src":"31340:6:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (address,bytes32,uint256,bytes memory) pure returns (bytes32)"}},"id":10860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31340:55:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"31331:65:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage","typeString":"struct OptimisticOracleV2Interface.Request storage ref"}},"functionReturnParameters":10853,"id":10862,"nodeType":"Return","src":"31324:72:44"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getRequest","nameLocation":"31148:11:44","parameters":{"id":10849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10842,"mutability":"mutable","name":"requester","nameLocation":"31168:9:44","nodeType":"VariableDeclaration","scope":10864,"src":"31160:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10841,"name":"address","nodeType":"ElementaryTypeName","src":"31160:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10844,"mutability":"mutable","name":"identifier","nameLocation":"31187:10:44","nodeType":"VariableDeclaration","scope":10864,"src":"31179:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10843,"name":"bytes32","nodeType":"ElementaryTypeName","src":"31179:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10846,"mutability":"mutable","name":"timestamp","nameLocation":"31207:9:44","nodeType":"VariableDeclaration","scope":10864,"src":"31199:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10845,"name":"uint256","nodeType":"ElementaryTypeName","src":"31199:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10848,"mutability":"mutable","name":"ancillaryData","nameLocation":"31231:13:44","nodeType":"VariableDeclaration","scope":10864,"src":"31218:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10847,"name":"bytes","nodeType":"ElementaryTypeName","src":"31218:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31159:86:44"},"returnParameters":{"id":10853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10852,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10864,"src":"31293:15:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"},"typeName":{"id":10851,"nodeType":"UserDefinedTypeName","pathNode":{"id":10850,"name":"Request","nameLocations":["31293:7:44"],"nodeType":"IdentifierPath","referencedDeclaration":11388,"src":"31293:7:44"},"referencedDeclaration":11388,"src":"31293:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"}},"visibility":"internal"}],"src":"31292:17:44"},"scope":11127,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":10879,"nodeType":"FunctionDefinition","src":"31409:180:44","nodes":[],"body":{"id":10878,"nodeType":"Block","src":"31493:96:44","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":10872,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10867,"src":"31550:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10873,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31558:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"31550:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":10874,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31574:4:44","memberName":"bond","nodeType":"MemberAccess","referencedDeclaration":11362,"src":"31550:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":10875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31581:1:44","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"31550:32:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10871,"id":10877,"nodeType":"Return","src":"31543:39:44"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_computeBurnedBond","nameLocation":"31418:18:44","parameters":{"id":10868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10867,"mutability":"mutable","name":"request","nameLocation":"31453:7:44","nodeType":"VariableDeclaration","scope":10879,"src":"31437:23:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"},"typeName":{"id":10866,"nodeType":"UserDefinedTypeName","pathNode":{"id":10865,"name":"Request","nameLocations":["31437:7:44"],"nodeType":"IdentifierPath","referencedDeclaration":11388,"src":"31437:7:44"},"referencedDeclaration":11388,"src":"31437:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"}},"visibility":"internal"}],"src":"31436:25:44"},"returnParameters":{"id":10871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10870,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10879,"src":"31484:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10869,"name":"uint256","nodeType":"ElementaryTypeName","src":"31484:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31483:9:44"},"scope":11127,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":10901,"nodeType":"FunctionDefinition","src":"31595:192:44","nodes":[],"body":{"id":10900,"nodeType":"Block","src":"31663:124:44","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10885,"name":"_liveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10881,"src":"31681:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"35323030","id":10886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31693:10:44","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_3144960000_by_1","typeString":"int_const 3144960000"},"value":"5200"},"src":"31681:22:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":10888,"name":"LivenessTooLarge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11268,"src":"31705:16:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31705:18:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":10884,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"31673:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":10890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31673:51:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10891,"nodeType":"ExpressionStatement","src":"31673:51:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10893,"name":"_liveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10881,"src":"31742:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31754:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"31742:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":10896,"name":"LivenessCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11271,"src":"31757:20:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31757:22:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":10892,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"31734:7:44","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":10898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31734:46:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10899,"nodeType":"ExpressionStatement","src":"31734:46:44"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_validateLiveness","nameLocation":"31604:17:44","parameters":{"id":10882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10881,"mutability":"mutable","name":"_liveness","nameLocation":"31630:9:44","nodeType":"VariableDeclaration","scope":10901,"src":"31622:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10880,"name":"uint256","nodeType":"ElementaryTypeName","src":"31622:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31621:19:44"},"returnParameters":{"id":10883,"nodeType":"ParameterList","parameters":[],"src":"31663:0:44"},"scope":11127,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":10996,"nodeType":"FunctionDefinition","src":"31793:818:44","nodes":[],"body":{"id":10995,"nodeType":"Block","src":"31956:655:44","nodes":[],"statements":[{"assignments":[10917],"declarations":[{"constant":false,"id":10917,"mutability":"mutable","name":"request","nameLocation":"31982:7:44","nodeType":"VariableDeclaration","scope":10995,"src":"31966:23:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"},"typeName":{"id":10916,"nodeType":"UserDefinedTypeName","pathNode":{"id":10915,"name":"Request","nameLocations":["31966:7:44"],"nodeType":"IdentifierPath","referencedDeclaration":11388,"src":"31966:7:44"},"referencedDeclaration":11388,"src":"31966:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"}},"visibility":"internal"}],"id":10924,"initialValue":{"arguments":[{"id":10919,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10903,"src":"32004:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10920,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10905,"src":"32015:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10921,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10907,"src":"32027:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10922,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10909,"src":"32038:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10918,"name":"_getRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10864,"src":"31992:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_struct$_Request_$11388_storage_ptr_$","typeString":"function (address,bytes32,uint256,bytes memory) view returns (struct OptimisticOracleV2Interface.Request storage pointer)"}},"id":10923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31992:60:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"31966:86:44"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":10927,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10917,"src":"32075:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10928,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32083:8:44","memberName":"currency","nodeType":"MemberAccess","referencedDeclaration":11372,"src":"32075:16:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}],"id":10926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32067:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10925,"name":"address","nodeType":"ElementaryTypeName","src":"32067:7:44","typeDescriptions":{}}},"id":10929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32067:25:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32104:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32096:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10930,"name":"address","nodeType":"ElementaryTypeName","src":"32096:7:44","typeDescriptions":{}}},"id":10933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32096:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"32067:39:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10938,"nodeType":"IfStatement","src":"32063:65:44","trueBody":{"expression":{"expression":{"id":10935,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"32115:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":10936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32121:7:44","memberName":"Invalid","nodeType":"MemberAccess","referencedDeclaration":11343,"src":"32115:13:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"functionReturnParameters":10914,"id":10937,"nodeType":"Return","src":"32108:20:44"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10939,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10917,"src":"32143:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10940,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32151:8:44","memberName":"proposer","nodeType":"MemberAccess","referencedDeclaration":11367,"src":"32143:16:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32171:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32163:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10941,"name":"address","nodeType":"ElementaryTypeName","src":"32163:7:44","typeDescriptions":{}}},"id":10944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32163:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"32143:30:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10949,"nodeType":"IfStatement","src":"32139:58:44","trueBody":{"expression":{"expression":{"id":10946,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"32182:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":10947,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32188:9:44","memberName":"Requested","nodeType":"MemberAccess","referencedDeclaration":11344,"src":"32182:15:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"functionReturnParameters":10914,"id":10948,"nodeType":"Return","src":"32175:22:44"}},{"condition":{"expression":{"id":10950,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10917,"src":"32212:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32220:7:44","memberName":"settled","nodeType":"MemberAccess","referencedDeclaration":11374,"src":"32212:15:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10955,"nodeType":"IfStatement","src":"32208:41:44","trueBody":{"expression":{"expression":{"id":10952,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"32236:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":10953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32242:7:44","memberName":"Settled","nodeType":"MemberAccess","referencedDeclaration":11349,"src":"32236:13:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"functionReturnParameters":10914,"id":10954,"nodeType":"Return","src":"32229:20:44"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10956,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10917,"src":"32264:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10957,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32272:8:44","memberName":"disputer","nodeType":"MemberAccess","referencedDeclaration":11369,"src":"32264:16:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32292:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10959,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32284:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10958,"name":"address","nodeType":"ElementaryTypeName","src":"32284:7:44","typeDescriptions":{}}},"id":10961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32284:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"32264:30:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10975,"nodeType":"IfStatement","src":"32260:143:44","trueBody":{"id":10974,"nodeType":"Block","src":"32296:107:44","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10963,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10917,"src":"32317:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":10964,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32325:14:44","memberName":"expirationTime","nodeType":"MemberAccess","referencedDeclaration":11383,"src":"32317:22:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10965,"name":"getCurrentTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11121,"src":"32343:14:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":10966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32343:16:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32317:42:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":10970,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"32378:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":10971,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32384:8:44","memberName":"Proposed","nodeType":"MemberAccess","referencedDeclaration":11345,"src":"32378:14:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"id":10972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"32317:75:44","trueExpression":{"expression":{"id":10968,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"32362:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":10969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32368:7:44","memberName":"Expired","nodeType":"MemberAccess","referencedDeclaration":11346,"src":"32362:13:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"functionReturnParameters":10914,"id":10973,"nodeType":"Return","src":"32310:82:44"}]}},{"expression":{"condition":{"arguments":[{"id":10979,"name":"identifier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10905,"src":"32455:10:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":10981,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10917,"src":"32494:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},{"id":10982,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10907,"src":"32503:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10980,"name":"_getTimestampForDvmRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11093,"src":"32467:26:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Request_$11388_storage_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct OptimisticOracleV2Interface.Request storage pointer,uint256) view returns (uint256)"}},"id":10983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32467:46:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":10985,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10909,"src":"32535:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":10986,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10903,"src":"32550:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10984,"name":"_stampAncillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11111,"src":"32515:19:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_address_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,address) pure returns (bytes memory)"}},"id":10987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32515:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10976,"name":"_getOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11011,"src":"32420:10:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_OracleAncillaryInterface_$7781_$","typeString":"function () view returns (contract OracleAncillaryInterface)"}},"id":10977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32420:12:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OracleAncillaryInterface_$7781","typeString":"contract OracleAncillaryInterface"}},"id":10978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32433:8:44","memberName":"hasPrice","nodeType":"MemberAccess","referencedDeclaration":7768,"src":"32420:21:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes32,uint256,bytes memory) view external returns (bool)"}},"id":10988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32420:150:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":10991,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"32590:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":10992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32596:8:44","memberName":"Disputed","nodeType":"MemberAccess","referencedDeclaration":11347,"src":"32590:14:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"id":10993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"32420:184:44","trueExpression":{"expression":{"id":10989,"name":"State","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"32573:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_State_$11350_$","typeString":"type(enum OptimisticOracleV2Interface.State)"}},"id":10990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32579:8:44","memberName":"Resolved","nodeType":"MemberAccess","referencedDeclaration":11348,"src":"32573:14:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"functionReturnParameters":10914,"id":10994,"nodeType":"Return","src":"32413:191:44"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getState","nameLocation":"31802:9:44","parameters":{"id":10910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10903,"mutability":"mutable","name":"requester","nameLocation":"31820:9:44","nodeType":"VariableDeclaration","scope":10996,"src":"31812:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10902,"name":"address","nodeType":"ElementaryTypeName","src":"31812:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10905,"mutability":"mutable","name":"identifier","nameLocation":"31839:10:44","nodeType":"VariableDeclaration","scope":10996,"src":"31831:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10904,"name":"bytes32","nodeType":"ElementaryTypeName","src":"31831:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10907,"mutability":"mutable","name":"timestamp","nameLocation":"31859:9:44","nodeType":"VariableDeclaration","scope":10996,"src":"31851:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10906,"name":"uint256","nodeType":"ElementaryTypeName","src":"31851:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10909,"mutability":"mutable","name":"ancillaryData","nameLocation":"31883:13:44","nodeType":"VariableDeclaration","scope":10996,"src":"31870:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10908,"name":"bytes","nodeType":"ElementaryTypeName","src":"31870:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31811:86:44"},"returnParameters":{"id":10914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10913,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10996,"src":"31945:5:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"typeName":{"id":10912,"nodeType":"UserDefinedTypeName","pathNode":{"id":10911,"name":"State","nameLocations":["31945:5:44"],"nodeType":"IdentifierPath","referencedDeclaration":11350,"src":"31945:5:44"},"referencedDeclaration":11350,"src":"31945:5:44","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"visibility":"internal"}],"src":"31944:7:44"},"scope":11127,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":11011,"nodeType":"FunctionDefinition","src":"32617:177:44","nodes":[],"body":{"id":11010,"nodeType":"Block","src":"32688:106:44","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":11005,"name":"OracleInterfaces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7694,"src":"32762:16:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleInterfaces_$7694_$","typeString":"type(library OracleInterfaces)"}},"id":11006,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32779:6:44","memberName":"Oracle","nodeType":"MemberAccess","referencedDeclaration":7651,"src":"32762:23:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":11003,"name":"finder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9436,"src":"32730:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_FinderInterface_$7719","typeString":"contract FinderInterface"}},"id":11004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32737:24:44","memberName":"getImplementationAddress","nodeType":"MemberAccess","referencedDeclaration":7718,"src":"32730:31:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view external returns (address)"}},"id":11007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32730:56:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11002,"name":"OracleAncillaryInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7781,"src":"32705:24:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleAncillaryInterface_$7781_$","typeString":"type(contract OracleAncillaryInterface)"}},"id":11008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32705:82:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OracleAncillaryInterface_$7781","typeString":"contract OracleAncillaryInterface"}},"functionReturnParameters":11001,"id":11009,"nodeType":"Return","src":"32698:89:44"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getOracle","nameLocation":"32626:10:44","parameters":{"id":10997,"nodeType":"ParameterList","parameters":[],"src":"32636:2:44"},"returnParameters":{"id":11001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11000,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11011,"src":"32662:24:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_OracleAncillaryInterface_$7781","typeString":"contract OracleAncillaryInterface"},"typeName":{"id":10999,"nodeType":"UserDefinedTypeName","pathNode":{"id":10998,"name":"OracleAncillaryInterface","nameLocations":["32662:24:44"],"nodeType":"IdentifierPath","referencedDeclaration":7781,"src":"32662:24:44"},"referencedDeclaration":7781,"src":"32662:24:44","typeDescriptions":{"typeIdentifier":"t_contract$_OracleAncillaryInterface_$7781","typeString":"contract OracleAncillaryInterface"}},"visibility":"internal"}],"src":"32661:26:44"},"scope":11127,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":11026,"nodeType":"FunctionDefinition","src":"32800:187:44","nodes":[],"body":{"id":11025,"nodeType":"Block","src":"32876:111:44","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":11020,"name":"OracleInterfaces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7694,"src":"32942:16:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleInterfaces_$7694_$","typeString":"type(library OracleInterfaces)"}},"id":11021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32959:19:44","memberName":"CollateralWhitelist","nodeType":"MemberAccess","referencedDeclaration":7666,"src":"32942:36:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":11018,"name":"finder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9436,"src":"32910:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_FinderInterface_$7719","typeString":"contract FinderInterface"}},"id":11019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32917:24:44","memberName":"getImplementationAddress","nodeType":"MemberAccess","referencedDeclaration":7718,"src":"32910:31:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view external returns (address)"}},"id":11022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32910:69:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11017,"name":"AddressWhitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"32893:16:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressWhitelist_$8065_$","typeString":"type(contract AddressWhitelist)"}},"id":11023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32893:87:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelist_$8065","typeString":"contract AddressWhitelist"}},"functionReturnParameters":11016,"id":11024,"nodeType":"Return","src":"32886:94:44"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getCollateralWhitelist","nameLocation":"32809:23:44","parameters":{"id":11012,"nodeType":"ParameterList","parameters":[],"src":"32832:2:44"},"returnParameters":{"id":11016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11015,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11026,"src":"32858:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelist_$8065","typeString":"contract AddressWhitelist"},"typeName":{"id":11014,"nodeType":"UserDefinedTypeName","pathNode":{"id":11013,"name":"AddressWhitelist","nameLocations":["32858:16:44"],"nodeType":"IdentifierPath","referencedDeclaration":8065,"src":"32858:16:44"},"referencedDeclaration":8065,"src":"32858:16:44","typeDescriptions":{"typeIdentifier":"t_contract$_AddressWhitelist_$8065","typeString":"contract AddressWhitelist"}},"visibility":"internal"}],"src":"32857:18:44"},"scope":11127,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":11041,"nodeType":"FunctionDefinition","src":"32993:155:44","nodes":[],"body":{"id":11040,"nodeType":"Block","src":"33053:95:44","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":11035,"name":"OracleInterfaces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7694,"src":"33117:16:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleInterfaces_$7694_$","typeString":"type(library OracleInterfaces)"}},"id":11036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"33134:5:44","memberName":"Store","nodeType":"MemberAccess","referencedDeclaration":7657,"src":"33117:22:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":11033,"name":"finder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9436,"src":"33085:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_FinderInterface_$7719","typeString":"contract FinderInterface"}},"id":11034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33092:24:44","memberName":"getImplementationAddress","nodeType":"MemberAccess","referencedDeclaration":7718,"src":"33085:31:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view external returns (address)"}},"id":11037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33085:55:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11032,"name":"StoreInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8413,"src":"33070:14:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StoreInterface_$8413_$","typeString":"type(contract StoreInterface)"}},"id":11038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33070:71:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_StoreInterface_$8413","typeString":"contract StoreInterface"}},"functionReturnParameters":11031,"id":11039,"nodeType":"Return","src":"33063:78:44"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStore","nameLocation":"33002:9:44","parameters":{"id":11027,"nodeType":"ParameterList","parameters":[],"src":"33011:2:44"},"returnParameters":{"id":11031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11030,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11041,"src":"33037:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_StoreInterface_$8413","typeString":"contract StoreInterface"},"typeName":{"id":11029,"nodeType":"UserDefinedTypeName","pathNode":{"id":11028,"name":"StoreInterface","nameLocations":["33037:14:44"],"nodeType":"IdentifierPath","referencedDeclaration":8413,"src":"33037:14:44"},"referencedDeclaration":8413,"src":"33037:14:44","typeDescriptions":{"typeIdentifier":"t_contract$_StoreInterface_$8413","typeString":"contract StoreInterface"}},"visibility":"internal"}],"src":"33036:16:44"},"scope":11127,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":11056,"nodeType":"FunctionDefinition","src":"33154:211:44","nodes":[],"body":{"id":11055,"nodeType":"Block","src":"33242:123:44","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":11050,"name":"OracleInterfaces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7694,"src":"33320:16:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OracleInterfaces_$7694_$","typeString":"type(library OracleInterfaces)"}},"id":11051,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"33337:19:44","memberName":"IdentifierWhitelist","nodeType":"MemberAccess","referencedDeclaration":7654,"src":"33320:36:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":11048,"name":"finder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9436,"src":"33288:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_FinderInterface_$7719","typeString":"contract FinderInterface"}},"id":11049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33295:24:44","memberName":"getImplementationAddress","nodeType":"MemberAccess","referencedDeclaration":7718,"src":"33288:31:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view external returns (address)"}},"id":11052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33288:69:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11047,"name":"IdentifierWhitelistInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7743,"src":"33259:28:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IdentifierWhitelistInterface_$7743_$","typeString":"type(contract IdentifierWhitelistInterface)"}},"id":11053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33259:99:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IdentifierWhitelistInterface_$7743","typeString":"contract IdentifierWhitelistInterface"}},"functionReturnParameters":11046,"id":11054,"nodeType":"Return","src":"33252:106:44"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getIdentifierWhitelist","nameLocation":"33163:23:44","parameters":{"id":11042,"nodeType":"ParameterList","parameters":[],"src":"33186:2:44"},"returnParameters":{"id":11046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11045,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11056,"src":"33212:28:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IdentifierWhitelistInterface_$7743","typeString":"contract IdentifierWhitelistInterface"},"typeName":{"id":11044,"nodeType":"UserDefinedTypeName","pathNode":{"id":11043,"name":"IdentifierWhitelistInterface","nameLocations":["33212:28:44"],"nodeType":"IdentifierPath","referencedDeclaration":7743,"src":"33212:28:44"},"referencedDeclaration":7743,"src":"33212:28:44","typeDescriptions":{"typeIdentifier":"t_contract$_IdentifierWhitelistInterface_$7743","typeString":"contract IdentifierWhitelistInterface"}},"visibility":"internal"}],"src":"33211:30:44"},"scope":11127,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":11093,"nodeType":"FunctionDefinition","src":"33371:473:44","nodes":[],"body":{"id":11092,"nodeType":"Block","src":"33518:326:44","nodes":[],"statements":[{"condition":{"expression":{"expression":{"id":11066,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11059,"src":"33532:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":11067,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33540:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"33532:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":11068,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33556:10:44","memberName":"eventBased","nodeType":"MemberAccess","referencedDeclaration":11352,"src":"33532:34:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11090,"nodeType":"Block","src":"33790:48:44","statements":[{"expression":{"id":11088,"name":"requestTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11061,"src":"33811:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11065,"id":11089,"nodeType":"Return","src":"33804:23:44"}]},"id":11091,"nodeType":"IfStatement","src":"33528:310:44","trueBody":{"id":11087,"nodeType":"Block","src":"33568:216:44","statements":[{"assignments":[11070],"declarations":[{"constant":false,"id":11070,"mutability":"mutable","name":"liveness","nameLocation":"33590:8:44","nodeType":"VariableDeclaration","scope":11087,"src":"33582:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11069,"name":"uint256","nodeType":"ElementaryTypeName","src":"33582:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11081,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":11071,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11059,"src":"33617:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":11072,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33625:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"33617:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":11073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33641:14:44","memberName":"customLiveness","nodeType":"MemberAccess","referencedDeclaration":11364,"src":"33617:38:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":11074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33659:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"33617:43:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":11079,"name":"defaultLiveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9439,"src":"33704:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"33617:102:44","trueExpression":{"expression":{"expression":{"id":11076,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11059,"src":"33663:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":11077,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33671:15:44","memberName":"requestSettings","nodeType":"MemberAccess","referencedDeclaration":11377,"src":"33663:23:44","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage","typeString":"struct OptimisticOracleV2Interface.RequestSettings storage ref"}},"id":11078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33687:14:44","memberName":"customLiveness","nodeType":"MemberAccess","referencedDeclaration":11364,"src":"33663:38:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"33582:137:44"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11082,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11059,"src":"33740:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request storage pointer"}},"id":11083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33748:14:44","memberName":"expirationTime","nodeType":"MemberAccess","referencedDeclaration":11383,"src":"33740:22:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11084,"name":"liveness","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11070,"src":"33765:8:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33740:33:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11065,"id":11086,"nodeType":"Return","src":"33733:40:44"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getTimestampForDvmRequest","nameLocation":"33380:26:44","parameters":{"id":11062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11059,"mutability":"mutable","name":"request","nameLocation":"33423:7:44","nodeType":"VariableDeclaration","scope":11093,"src":"33407:23:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"},"typeName":{"id":11058,"nodeType":"UserDefinedTypeName","pathNode":{"id":11057,"name":"Request","nameLocations":["33407:7:44"],"nodeType":"IdentifierPath","referencedDeclaration":11388,"src":"33407:7:44"},"referencedDeclaration":11388,"src":"33407:7:44","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"}},"visibility":"internal"},{"constant":false,"id":11061,"mutability":"mutable","name":"requestTimestamp","nameLocation":"33440:16:44","nodeType":"VariableDeclaration","scope":11093,"src":"33432:24:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11060,"name":"uint256","nodeType":"ElementaryTypeName","src":"33432:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33406:51:44"},"returnParameters":{"id":11065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11064,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11093,"src":"33505:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11063,"name":"uint256","nodeType":"ElementaryTypeName","src":"33505:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33504:9:44"},"scope":11127,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":11111,"nodeType":"FunctionDefinition","src":"34144:372:44","nodes":[],"body":{"id":11110,"nodeType":"Block","src":"34257:259:44","nodes":[],"statements":[{"expression":{"arguments":[{"id":11105,"name":"ancillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11096,"src":"34469:13:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"6f6f526571756573746572","id":11106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"34484:13:44","typeDescriptions":{"typeIdentifier":"t_stringliteral_f157c788a16e56e9d89a91fe9bcb3c66f2c2807a4b0fd965beac18e7acd71364","typeString":"literal_string \"ooRequester\""},"value":"ooRequester"},{"id":11107,"name":"requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11098,"src":"34499:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_f157c788a16e56e9d89a91fe9bcb3c66f2c2807a4b0fd965beac18e7acd71364","typeString":"literal_string \"ooRequester\""},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11103,"name":"AncillaryData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7568,"src":"34433:13:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AncillaryData_$7568_$","typeString":"type(library AncillaryData)"}},"id":11104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34447:21:44","memberName":"appendKeyValueAddress","nodeType":"MemberAccess","referencedDeclaration":7507,"src":"34433:35:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_address_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,bytes memory,address) pure returns (bytes memory)"}},"id":11108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34433:76:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11102,"id":11109,"nodeType":"Return","src":"34426:83:44"}]},"documentation":{"id":11094,"nodeType":"StructuredDocumentation","src":"33850:289:44","text":" @dev We don't handle specifically the case where `ancillaryData` is not already readily translateable in utf8.\n For those cases, we assume that the client will be able to strip out the utf8-translateable part of the\n ancillary data that this contract stamps."},"implemented":true,"kind":"function","modifiers":[],"name":"_stampAncillaryData","nameLocation":"34153:19:44","parameters":{"id":11099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11096,"mutability":"mutable","name":"ancillaryData","nameLocation":"34186:13:44","nodeType":"VariableDeclaration","scope":11111,"src":"34173:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11095,"name":"bytes","nodeType":"ElementaryTypeName","src":"34173:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11098,"mutability":"mutable","name":"requester","nameLocation":"34209:9:44","nodeType":"VariableDeclaration","scope":11111,"src":"34201:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11097,"name":"address","nodeType":"ElementaryTypeName","src":"34201:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34172:47:44"},"returnParameters":{"id":11102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11101,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11111,"src":"34243:12:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11100,"name":"bytes","nodeType":"ElementaryTypeName","src":"34243:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"34242:14:44"},"scope":11127,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":11121,"nodeType":"FunctionDefinition","src":"34522:104:44","nodes":[],"body":{"id":11120,"nodeType":"Block","src":"34587:39:44","nodes":[],"statements":[{"expression":{"expression":{"id":11117,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"34604:5:44","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34610:9:44","memberName":"timestamp","nodeType":"MemberAccess","src":"34604:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11116,"id":11119,"nodeType":"Return","src":"34597:22:44"}]},"baseFunctions":[11407],"functionSelector":"29cb924d","implemented":true,"kind":"function","modifiers":[],"name":"getCurrentTime","nameLocation":"34531:14:44","overrides":{"id":11113,"nodeType":"OverrideSpecifier","overrides":[],"src":"34560:8:44"},"parameters":{"id":11112,"nodeType":"ParameterList","parameters":[],"src":"34545:2:44"},"returnParameters":{"id":11116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11115,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11121,"src":"34578:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11114,"name":"uint256","nodeType":"ElementaryTypeName","src":"34578:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34577:9:44"},"scope":11127,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":11126,"nodeType":"VariableDeclaration","src":"35054:26:44","nodes":[],"constant":false,"documentation":{"id":11122,"nodeType":"StructuredDocumentation","src":"34632:417:44","text":" @dev Reserve storage slots for future versions of this base contract to add state variables without affecting the\n storage layout of child contracts. Decrement the size of __gap whenever state variables are added. This is at the\n bottom of contract to make sure its always at the end of storage.\n See https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable#storage-gaps"},"mutability":"mutable","name":"__gap","nameLocation":"35075:5:44","scope":11127,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$998_storage","typeString":"uint256[998]"},"typeName":{"baseType":{"id":11123,"name":"uint256","nodeType":"ElementaryTypeName","src":"35054:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11125,"length":{"hexValue":"393938","id":11124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35062:3:44","typeDescriptions":{"typeIdentifier":"t_rational_998_by_1","typeString":"int_const 998"},"value":"998"},"nodeType":"ArrayTypeName","src":"35054:12:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$998_storage_ptr","typeString":"uint256[998]"}},"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":9415,"name":"OptimisticOracleV2Interface","nameLocations":["3750:27:44"],"nodeType":"IdentifierPath","referencedDeclaration":11640,"src":"3750:27:44"},"id":9416,"nodeType":"InheritanceSpecifier","src":"3750:27:44"},{"baseName":{"id":9417,"name":"UUPSUpgradeable","nameLocations":["3783:15:44"],"nodeType":"IdentifierPath","referencedDeclaration":1662,"src":"3783:15:44"},"id":9418,"nodeType":"InheritanceSpecifier","src":"3783:15:44"},{"baseName":{"id":9419,"name":"AccessControlDefaultAdminRulesUpgradeable","nameLocations":["3804:41:44"],"nodeType":"IdentifierPath","referencedDeclaration":1212,"src":"3804:41:44"},"id":9420,"nodeType":"InheritanceSpecifier","src":"3804:41:44"},{"baseName":{"id":9421,"name":"LockableUpgradeable","nameLocations":["3851:19:44"],"nodeType":"IdentifierPath","referencedDeclaration":8244,"src":"3851:19:44"},"id":9422,"nodeType":"InheritanceSpecifier","src":"3851:19:44"}],"canonicalName":"OptimisticOracleV2","contractDependencies":[],"contractKind":"contract","documentation":{"id":9414,"nodeType":"StructuredDocumentation","src":"3560:154:44","text":" @title Optimistic Oracle.\n @notice Pre-DVM escalation contract that allows faster settlement.\n @custom:security-contact bugs@umaproject.org"},"fullyImplemented":true,"linearizedBaseContracts":[11127,8244,1212,364,1748,3774,2199,2078,1831,1708,1662,2209,1480,11640],"name":"OptimisticOracleV2","nameLocation":"3724:18:44","scope":11128,"usedErrors":[1229,1232,1507,1512,1758,1761,1991,1994,1999,2229,2242,2603,3065,3358,5405,8161,11238,11241,11244,11247,11250,11253,11256,11259,11262,11265,11268,11271,11274],"usedEvents":[1237,1770,1779,1788,2006,2009,2016,2019,2172,11290,11308,11324,11342]}],"license":"AGPL-3.0-only"}},"src/optimistic-oracle-v2/interfaces/ManagedOptimisticOracleV2Interface.sol":{"id":45,"ast":{"absolutePath":"src/optimistic-oracle-v2/interfaces/ManagedOptimisticOracleV2Interface.sol","id":11229,"exportedSymbols":{"IERC20":[2591],"ManagedOptimisticOracleV2Interface":[11228]},"nodeType":"SourceUnit","src":"42:2501:45","nodes":[{"id":11129,"nodeType":"PragmaDirective","src":"42:23:45","nodes":[],"literals":["solidity","^","0.8",".4"]},{"id":11131,"nodeType":"ImportDirective","src":"67:70:45","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":11229,"sourceUnit":2592,"symbolAliases":[{"foreign":{"id":11130,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2591,"src":"75:6:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":11228,"nodeType":"ContractDefinition","src":"366:2176:45","nodes":[{"id":11135,"nodeType":"ErrorDefinition","src":"500:32:45","nodes":[],"documentation":{"id":11133,"nodeType":"StructuredDocumentation","src":"425:70:45","text":"@notice Thrown when a requester is not on the requester whitelist."},"errorSelector":"0f3c7c27","name":"RequesterNotWhitelisted","nameLocation":"506:23:45","parameters":{"id":11134,"nodeType":"ParameterList","parameters":[],"src":"529:2:45"}},{"id":11138,"nodeType":"ErrorDefinition","src":"591:27:45","nodes":[],"documentation":{"id":11136,"nodeType":"StructuredDocumentation","src":"537:49:45","text":"@notice Thrown when a zero value bond is set."},"errorSelector":"926bee02","name":"ZeroBondNotAllowed","nameLocation":"597:18:45","parameters":{"id":11137,"nodeType":"ParameterList","parameters":[],"src":"615:2:45"}},{"id":11141,"nodeType":"ErrorDefinition","src":"702:29:45","nodes":[],"documentation":{"id":11139,"nodeType":"StructuredDocumentation","src":"623:74:45","text":"@notice Thrown when a bond is set lower than the minimum allowed bond."},"errorSelector":"dba3b861","name":"BondBelowMinimumBond","nameLocation":"708:20:45","parameters":{"id":11140,"nodeType":"ParameterList","parameters":[],"src":"728:2:45"}},{"id":11144,"nodeType":"ErrorDefinition","src":"816:31:45","nodes":[],"documentation":{"id":11142,"nodeType":"StructuredDocumentation","src":"736:75:45","text":"@notice Thrown when a bond is set higher than the maximum allowed bond."},"errorSelector":"1f7b5d61","name":"BondExceedsMaximumBond","nameLocation":"822:22:45","parameters":{"id":11143,"nodeType":"ParameterList","parameters":[],"src":"844:2:45"}},{"id":11147,"nodeType":"ErrorDefinition","src":"939:23:45","nodes":[],"documentation":{"id":11145,"nodeType":"StructuredDocumentation","src":"852:82:45","text":"@notice Thrown when a liveness is set lower than the minimum allowed liveness."},"errorSelector":"df40ad74","name":"LivenessTooLow","nameLocation":"945:14:45","parameters":{"id":11146,"nodeType":"ParameterList","parameters":[],"src":"959:2:45"}},{"id":11150,"nodeType":"ErrorDefinition","src":"1050:31:45","nodes":[],"documentation":{"id":11148,"nodeType":"StructuredDocumentation","src":"967:78:45","text":"@notice Thrown when a proposer is not on the effective proposer whitelist."},"errorSelector":"6ffe5a95","name":"ProposerNotWhitelisted","nameLocation":"1056:22:45","parameters":{"id":11149,"nodeType":"ParameterList","parameters":[],"src":"1078:2:45"}},{"id":11153,"nodeType":"ErrorDefinition","src":"1192:29:45","nodes":[],"documentation":{"id":11151,"nodeType":"StructuredDocumentation","src":"1086:101:45","text":"@notice Thrown when the message sender is not on the effective proposer whitelist for a proposal."},"errorSelector":"7ed449a9","name":"SenderNotWhitelisted","nameLocation":"1198:20:45","parameters":{"id":11152,"nodeType":"ParameterList","parameters":[],"src":"1218:2:45"}},{"id":11156,"nodeType":"ErrorDefinition","src":"1307:38:45","nodes":[],"documentation":{"id":11154,"nodeType":"StructuredDocumentation","src":"1226:76:45","text":"@notice Thrown when a whitelist does not support the required interface."},"errorSelector":"67cc38ef","name":"UnsupportedWhitelistInterface","nameLocation":"1313:29:45","parameters":{"id":11155,"nodeType":"ParameterList","parameters":[],"src":"1342:2:45"}},{"id":11159,"nodeType":"ErrorDefinition","src":"1420:36:45","nodes":[],"documentation":{"id":11157,"nodeType":"StructuredDocumentation","src":"1350:65:45","text":"@notice Thrown when minimum bond is higher than maximum bond."},"errorSelector":"5b1a7437","name":"MinimumBondAboveMaximumBond","nameLocation":"1426:27:45","parameters":{"id":11158,"nodeType":"ParameterList","parameters":[],"src":"1453:2:45"}},{"id":11163,"nodeType":"EventDefinition","src":"1462:58:45","nodes":[],"anonymous":false,"eventSelector":"824f6fd7083aebf3e4245045a366a32f9489c6ce94efaba90ec0abbd10ddb1fb","name":"RequestManagerAdded","nameLocation":"1468:19:45","parameters":{"id":11162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11161,"indexed":true,"mutability":"mutable","name":"requestManager","nameLocation":"1504:14:45","nodeType":"VariableDeclaration","scope":11163,"src":"1488:30:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11160,"name":"address","nodeType":"ElementaryTypeName","src":"1488:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1487:32:45"}},{"id":11167,"nodeType":"EventDefinition","src":"1525:60:45","nodes":[],"anonymous":false,"eventSelector":"fed5843dda9e5d83f59e467c52752f2241404c2a28c007aff779c3d8efeed2e6","name":"RequestManagerRemoved","nameLocation":"1531:21:45","parameters":{"id":11166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11165,"indexed":true,"mutability":"mutable","name":"requestManager","nameLocation":"1569:14:45","nodeType":"VariableDeclaration","scope":11167,"src":"1553:30:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11164,"name":"address","nodeType":"ElementaryTypeName","src":"1553:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1552:32:45"}},{"id":11176,"nodeType":"EventDefinition","src":"1590:103:45","nodes":[],"anonymous":false,"eventSelector":"143b6bf2ebf8381dc4db7edfc69b944d4a518b2be84f1d6230aecb2b698100e4","name":"AllowedBondRangeUpdated","nameLocation":"1596:23:45","parameters":{"id":11175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11170,"indexed":true,"mutability":"mutable","name":"currency","nameLocation":"1635:8:45","nodeType":"VariableDeclaration","scope":11176,"src":"1620:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":11169,"nodeType":"UserDefinedTypeName","pathNode":{"id":11168,"name":"IERC20","nameLocations":["1620:6:45"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"1620:6:45"},"referencedDeclaration":2591,"src":"1620:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":11172,"indexed":false,"mutability":"mutable","name":"newMinimumBond","nameLocation":"1653:14:45","nodeType":"VariableDeclaration","scope":11176,"src":"1645:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11171,"name":"uint256","nodeType":"ElementaryTypeName","src":"1645:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11174,"indexed":false,"mutability":"mutable","name":"newMaximumBond","nameLocation":"1677:14:45","nodeType":"VariableDeclaration","scope":11176,"src":"1669:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11173,"name":"uint256","nodeType":"ElementaryTypeName","src":"1669:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1619:73:45"}},{"id":11180,"nodeType":"EventDefinition","src":"1698:57:45","nodes":[],"anonymous":false,"eventSelector":"c41d1b4ad42d6f594ce26dc949c6aa711df74301f1f2c17b3a36d30c9761abf3","name":"MinimumLivenessUpdated","nameLocation":"1704:22:45","parameters":{"id":11179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11178,"indexed":false,"mutability":"mutable","name":"newMinimumLiveness","nameLocation":"1735:18:45","nodeType":"VariableDeclaration","scope":11180,"src":"1727:26:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11177,"name":"uint256","nodeType":"ElementaryTypeName","src":"1727:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1726:28:45"}},{"id":11184,"nodeType":"EventDefinition","src":"1760:68:45","nodes":[],"anonymous":false,"eventSelector":"e983c4450684b2324d78afaa992b88be67cf4d3919d7a6539ca774d7bb5189f4","name":"DefaultProposerWhitelistUpdated","nameLocation":"1766:31:45","parameters":{"id":11183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11182,"indexed":true,"mutability":"mutable","name":"newWhitelist","nameLocation":"1814:12:45","nodeType":"VariableDeclaration","scope":11184,"src":"1798:28:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11181,"name":"address","nodeType":"ElementaryTypeName","src":"1798:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1797:30:45"}},{"id":11188,"nodeType":"EventDefinition","src":"1833:62:45","nodes":[],"anonymous":false,"eventSelector":"ab1796ea525d29607f67aabc405756efd2fc7c4eb2531e627f6ec697ac618a8e","name":"RequesterWhitelistUpdated","nameLocation":"1839:25:45","parameters":{"id":11187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11186,"indexed":true,"mutability":"mutable","name":"newWhitelist","nameLocation":"1881:12:45","nodeType":"VariableDeclaration","scope":11188,"src":"1865:28:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11185,"name":"address","nodeType":"ElementaryTypeName","src":"1865:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1864:30:45"}},{"id":11203,"nodeType":"EventDefinition","src":"1900:215:45","nodes":[],"anonymous":false,"eventSelector":"4544c320b43beb5421d5149ff92fa72b40f00ac65294c4b8ca3906f08fb5a8c2","name":"CustomBondSet","nameLocation":"1906:13:45","parameters":{"id":11202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11190,"indexed":true,"mutability":"mutable","name":"managedRequestId","nameLocation":"1945:16:45","nodeType":"VariableDeclaration","scope":11203,"src":"1929:32:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11189,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1929:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11192,"indexed":false,"mutability":"mutable","name":"requester","nameLocation":"1979:9:45","nodeType":"VariableDeclaration","scope":11203,"src":"1971:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11191,"name":"address","nodeType":"ElementaryTypeName","src":"1971:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11194,"indexed":true,"mutability":"mutable","name":"identifier","nameLocation":"2014:10:45","nodeType":"VariableDeclaration","scope":11203,"src":"1998:26:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11193,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1998:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11196,"indexed":false,"mutability":"mutable","name":"ancillaryData","nameLocation":"2040:13:45","nodeType":"VariableDeclaration","scope":11203,"src":"2034:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11195,"name":"bytes","nodeType":"ElementaryTypeName","src":"2034:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11199,"indexed":true,"mutability":"mutable","name":"currency","nameLocation":"2078:8:45","nodeType":"VariableDeclaration","scope":11203,"src":"2063:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":11198,"nodeType":"UserDefinedTypeName","pathNode":{"id":11197,"name":"IERC20","nameLocations":["2063:6:45"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"2063:6:45"},"referencedDeclaration":2591,"src":"2063:6:45","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":11201,"indexed":false,"mutability":"mutable","name":"bond","nameLocation":"2104:4:45","nodeType":"VariableDeclaration","scope":11203,"src":"2096:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11200,"name":"uint256","nodeType":"ElementaryTypeName","src":"2096:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1919:195:45"}},{"id":11215,"nodeType":"EventDefinition","src":"2120:204:45","nodes":[],"anonymous":false,"eventSelector":"c5314bcb93c25473b858a5086195e309861a64b4c3ddae4d0a5cb9c5fb6f30f4","name":"CustomLivenessSet","nameLocation":"2126:17:45","parameters":{"id":11214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11205,"indexed":true,"mutability":"mutable","name":"managedRequestId","nameLocation":"2169:16:45","nodeType":"VariableDeclaration","scope":11215,"src":"2153:32:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11204,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2153:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11207,"indexed":true,"mutability":"mutable","name":"requester","nameLocation":"2211:9:45","nodeType":"VariableDeclaration","scope":11215,"src":"2195:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11206,"name":"address","nodeType":"ElementaryTypeName","src":"2195:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11209,"indexed":true,"mutability":"mutable","name":"identifier","nameLocation":"2246:10:45","nodeType":"VariableDeclaration","scope":11215,"src":"2230:26:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11208,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2230:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11211,"indexed":false,"mutability":"mutable","name":"ancillaryData","nameLocation":"2272:13:45","nodeType":"VariableDeclaration","scope":11215,"src":"2266:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11210,"name":"bytes","nodeType":"ElementaryTypeName","src":"2266:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11213,"indexed":false,"mutability":"mutable","name":"customLiveness","nameLocation":"2303:14:45","nodeType":"VariableDeclaration","scope":11215,"src":"2295:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11212,"name":"uint256","nodeType":"ElementaryTypeName","src":"2295:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2143:180:45"}},{"id":11227,"nodeType":"EventDefinition","src":"2329:211:45","nodes":[],"anonymous":false,"eventSelector":"6176bed8b34e20579b664c32ad00534f173e1f7c4410232beef89bed4464ddc0","name":"CustomProposerWhitelistSet","nameLocation":"2335:26:45","parameters":{"id":11226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11217,"indexed":true,"mutability":"mutable","name":"managedRequestId","nameLocation":"2387:16:45","nodeType":"VariableDeclaration","scope":11227,"src":"2371:32:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11216,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2371:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11219,"indexed":false,"mutability":"mutable","name":"requester","nameLocation":"2421:9:45","nodeType":"VariableDeclaration","scope":11227,"src":"2413:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11218,"name":"address","nodeType":"ElementaryTypeName","src":"2413:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11221,"indexed":true,"mutability":"mutable","name":"identifier","nameLocation":"2456:10:45","nodeType":"VariableDeclaration","scope":11227,"src":"2440:26:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11220,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2440:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11223,"indexed":false,"mutability":"mutable","name":"ancillaryData","nameLocation":"2482:13:45","nodeType":"VariableDeclaration","scope":11227,"src":"2476:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11222,"name":"bytes","nodeType":"ElementaryTypeName","src":"2476:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11225,"indexed":true,"mutability":"mutable","name":"newWhitelist","nameLocation":"2521:12:45","nodeType":"VariableDeclaration","scope":11227,"src":"2505:28:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11224,"name":"address","nodeType":"ElementaryTypeName","src":"2505:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2361:178:45"}}],"abstract":true,"baseContracts":[],"canonicalName":"ManagedOptimisticOracleV2Interface","contractDependencies":[],"contractKind":"contract","documentation":{"id":11132,"nodeType":"StructuredDocumentation","src":"139:226:45","text":" @title Events and Errors for the ManagedOptimisticOracleV2 contract.\n @notice Contains events for request manager management, bond and liveness updates, and whitelists,\n and custom errors for various conditions."},"fullyImplemented":true,"linearizedBaseContracts":[11228],"name":"ManagedOptimisticOracleV2Interface","nameLocation":"384:34:45","scope":11229,"usedErrors":[11135,11138,11141,11144,11147,11150,11153,11156,11159],"usedEvents":[11163,11167,11176,11180,11184,11188,11203,11215,11227]}],"license":"AGPL-3.0-only"}},"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol":{"id":46,"ast":{"absolutePath":"src/optimistic-oracle-v2/interfaces/OptimisticOracleV2Interface.sol","id":11641,"exportedSymbols":{"FinderInterface":[7719],"IERC20":[2591],"OptimisticOracleV2Interface":[11640]},"nodeType":"SourceUnit","src":"361:17870:46","nodes":[{"id":11230,"nodeType":"PragmaDirective","src":"361:23:46","nodes":[],"literals":["solidity","^","0.8",".4"]},{"id":11232,"nodeType":"ImportDirective","src":"386:70:46","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":11641,"sourceUnit":2592,"symbolAliases":[{"foreign":{"id":11231,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2591,"src":"394:6:46","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":11234,"nodeType":"ImportDirective","src":"457:106:46","nodes":[],"absolutePath":"lib/protocol/packages/core/contracts/data-verification-mechanism/interfaces/FinderInterface.sol","file":"@uma/contracts/data-verification-mechanism/interfaces/FinderInterface.sol","nameLocation":"-1:-1:-1","scope":11641,"sourceUnit":7720,"symbolAliases":[{"foreign":{"id":11233,"name":"FinderInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7719,"src":"465:15:46","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":11640,"nodeType":"ContractDefinition","src":"741:17489:46","nodes":[{"id":11238,"nodeType":"ErrorDefinition","src":"869:31:46","nodes":[],"documentation":{"id":11236,"nodeType":"StructuredDocumentation","src":"793:71:46","text":"@notice Thrown when a request is not in the expected Invalid state."},"errorSelector":"f757fcff","name":"RequestStateNotInvalid","nameLocation":"875:22:46","parameters":{"id":11237,"nodeType":"ParameterList","parameters":[],"src":"897:2:46"}},{"id":11241,"nodeType":"ErrorDefinition","src":"983:33:46","nodes":[],"documentation":{"id":11239,"nodeType":"StructuredDocumentation","src":"905:73:46","text":"@notice Thrown when a request is not in the expected Requested state."},"errorSelector":"749c249a","name":"RequestStateNotRequested","nameLocation":"989:24:46","parameters":{"id":11240,"nodeType":"ParameterList","parameters":[],"src":"1013:2:46"}},{"id":11244,"nodeType":"ErrorDefinition","src":"1098:32:46","nodes":[],"documentation":{"id":11242,"nodeType":"StructuredDocumentation","src":"1021:72:46","text":"@notice Thrown when a request is not in the expected Proposed state."},"errorSelector":"de0cc838","name":"RequestStateNotProposed","nameLocation":"1104:23:46","parameters":{"id":11243,"nodeType":"ParameterList","parameters":[],"src":"1127:2:46"}},{"id":11247,"nodeType":"ErrorDefinition","src":"1223:30:46","nodes":[],"documentation":{"id":11245,"nodeType":"StructuredDocumentation","src":"1135:83:46","text":"@notice Thrown when an identifier is not supported by the identifier whitelist."},"errorSelector":"56175d8f","name":"UnsupportedIdentifier","nameLocation":"1229:21:46","parameters":{"id":11246,"nodeType":"ParameterList","parameters":[],"src":"1250:2:46"}},{"id":11250,"nodeType":"ErrorDefinition","src":"1343:28:46","nodes":[],"documentation":{"id":11248,"nodeType":"StructuredDocumentation","src":"1258:80:46","text":"@notice Thrown when a currency is not supported by the collateral whitelist."},"errorSelector":"2263f4e2","name":"UnsupportedCurrency","nameLocation":"1349:19:46","parameters":{"id":11249,"nodeType":"ParameterList","parameters":[],"src":"1368:2:46"}},{"id":11253,"nodeType":"ErrorDefinition","src":"1434:26:46","nodes":[],"documentation":{"id":11251,"nodeType":"StructuredDocumentation","src":"1376:53:46","text":"@notice Thrown when a timestamp is in the future."},"errorSelector":"47860b97","name":"TimestampInFuture","nameLocation":"1440:17:46","parameters":{"id":11252,"nodeType":"ParameterList","parameters":[],"src":"1457:2:46"}},{"id":11256,"nodeType":"ErrorDefinition","src":"1535:29:46","nodes":[],"documentation":{"id":11254,"nodeType":"StructuredDocumentation","src":"1465:65:46","text":"@notice Thrown when ancillary data exceeds the allowed limit."},"errorSelector":"0a56acd9","name":"AncillaryDataTooLong","nameLocation":"1541:20:46","parameters":{"id":11255,"nodeType":"ParameterList","parameters":[],"src":"1561:2:46"}},{"id":11259,"nodeType":"ErrorDefinition","src":"1625:36:46","nodes":[],"documentation":{"id":11257,"nodeType":"StructuredDocumentation","src":"1569:51:46","text":"@notice Thrown when a proposer address is zero."},"errorSelector":"18a83d6c","name":"ProposerAddressCannotBeZero","nameLocation":"1631:27:46","parameters":{"id":11258,"nodeType":"ParameterList","parameters":[],"src":"1658:2:46"}},{"id":11262,"nodeType":"ErrorDefinition","src":"1763:30:46","nodes":[],"documentation":{"id":11260,"nodeType":"StructuredDocumentation","src":"1666:92:46","text":"@notice Thrown when trying to propose the \"too early\" response for event-based requests."},"errorSelector":"cad802eb","name":"CannotProposeTooEarly","nameLocation":"1769:21:46","parameters":{"id":11261,"nodeType":"ParameterList","parameters":[],"src":"1790:2:46"}},{"id":11265,"nodeType":"ErrorDefinition","src":"1854:36:46","nodes":[],"documentation":{"id":11263,"nodeType":"StructuredDocumentation","src":"1798:51:46","text":"@notice Thrown when a disputer address is zero."},"errorSelector":"bef5ceeb","name":"DisputerAddressCannotBeZero","nameLocation":"1860:27:46","parameters":{"id":11264,"nodeType":"ParameterList","parameters":[],"src":"1887:2:46"}},{"id":11268,"nodeType":"ErrorDefinition","src":"1953:25:46","nodes":[],"documentation":{"id":11266,"nodeType":"StructuredDocumentation","src":"1895:53:46","text":"@notice Thrown when liveness period is too large."},"errorSelector":"cb40339f","name":"LivenessTooLarge","nameLocation":"1959:16:46","parameters":{"id":11267,"nodeType":"ParameterList","parameters":[],"src":"1975:2:46"}},{"id":11271,"nodeType":"ErrorDefinition","src":"2043:29:46","nodes":[],"documentation":{"id":11269,"nodeType":"StructuredDocumentation","src":"1983:55:46","text":"@notice Thrown when liveness period cannot be zero."},"errorSelector":"fa050ec1","name":"LivenessCannotBeZero","nameLocation":"2049:20:46","parameters":{"id":11270,"nodeType":"ParameterList","parameters":[],"src":"2069:2:46"}},{"id":11274,"nodeType":"ErrorDefinition","src":"2156:29:46","nodes":[],"documentation":{"id":11272,"nodeType":"StructuredDocumentation","src":"2077:74:46","text":"@notice Thrown when trying to settle a request that is not settleable."},"errorSelector":"9c71cb83","name":"RequestNotSettleable","nameLocation":"2162:20:46","parameters":{"id":11273,"nodeType":"ParameterList","parameters":[],"src":"2182:2:46"}},{"id":11290,"nodeType":"EventDefinition","src":"2191:220:46","nodes":[],"anonymous":false,"eventSelector":"f1679315ff325c257a944e0ca1bfe7b26616039e9511f9610d4ba3eca851027b","name":"RequestPrice","nameLocation":"2197:12:46","parameters":{"id":11289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11276,"indexed":true,"mutability":"mutable","name":"requester","nameLocation":"2235:9:46","nodeType":"VariableDeclaration","scope":11290,"src":"2219:25:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11275,"name":"address","nodeType":"ElementaryTypeName","src":"2219:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11278,"indexed":false,"mutability":"mutable","name":"identifier","nameLocation":"2262:10:46","nodeType":"VariableDeclaration","scope":11290,"src":"2254:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11277,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2254:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11280,"indexed":false,"mutability":"mutable","name":"timestamp","nameLocation":"2290:9:46","nodeType":"VariableDeclaration","scope":11290,"src":"2282:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11279,"name":"uint256","nodeType":"ElementaryTypeName","src":"2282:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11282,"indexed":false,"mutability":"mutable","name":"ancillaryData","nameLocation":"2315:13:46","nodeType":"VariableDeclaration","scope":11290,"src":"2309:19:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11281,"name":"bytes","nodeType":"ElementaryTypeName","src":"2309:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11284,"indexed":false,"mutability":"mutable","name":"currency","nameLocation":"2346:8:46","nodeType":"VariableDeclaration","scope":11290,"src":"2338:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11283,"name":"address","nodeType":"ElementaryTypeName","src":"2338:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11286,"indexed":false,"mutability":"mutable","name":"reward","nameLocation":"2372:6:46","nodeType":"VariableDeclaration","scope":11290,"src":"2364:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11285,"name":"uint256","nodeType":"ElementaryTypeName","src":"2364:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11288,"indexed":false,"mutability":"mutable","name":"finalFee","nameLocation":"2396:8:46","nodeType":"VariableDeclaration","scope":11290,"src":"2388:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11287,"name":"uint256","nodeType":"ElementaryTypeName","src":"2388:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2209:201:46"}},{"id":11308,"nodeType":"EventDefinition","src":"2416:271:46","nodes":[],"anonymous":false,"eventSelector":"6e51dd00371aabffa82cd401592f76ed51e98a9ea4b58751c70463a2c78b5ca1","name":"ProposePrice","nameLocation":"2422:12:46","parameters":{"id":11307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11292,"indexed":true,"mutability":"mutable","name":"requester","nameLocation":"2460:9:46","nodeType":"VariableDeclaration","scope":11308,"src":"2444:25:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11291,"name":"address","nodeType":"ElementaryTypeName","src":"2444:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11294,"indexed":true,"mutability":"mutable","name":"proposer","nameLocation":"2495:8:46","nodeType":"VariableDeclaration","scope":11308,"src":"2479:24:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11293,"name":"address","nodeType":"ElementaryTypeName","src":"2479:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11296,"indexed":false,"mutability":"mutable","name":"identifier","nameLocation":"2521:10:46","nodeType":"VariableDeclaration","scope":11308,"src":"2513:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11295,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2513:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11298,"indexed":false,"mutability":"mutable","name":"timestamp","nameLocation":"2549:9:46","nodeType":"VariableDeclaration","scope":11308,"src":"2541:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11297,"name":"uint256","nodeType":"ElementaryTypeName","src":"2541:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11300,"indexed":false,"mutability":"mutable","name":"ancillaryData","nameLocation":"2574:13:46","nodeType":"VariableDeclaration","scope":11308,"src":"2568:19:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11299,"name":"bytes","nodeType":"ElementaryTypeName","src":"2568:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11302,"indexed":false,"mutability":"mutable","name":"proposedPrice","nameLocation":"2604:13:46","nodeType":"VariableDeclaration","scope":11308,"src":"2597:20:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11301,"name":"int256","nodeType":"ElementaryTypeName","src":"2597:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":11304,"indexed":false,"mutability":"mutable","name":"expirationTimestamp","nameLocation":"2635:19:46","nodeType":"VariableDeclaration","scope":11308,"src":"2627:27:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11303,"name":"uint256","nodeType":"ElementaryTypeName","src":"2627:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11306,"indexed":false,"mutability":"mutable","name":"currency","nameLocation":"2672:8:46","nodeType":"VariableDeclaration","scope":11308,"src":"2664:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11305,"name":"address","nodeType":"ElementaryTypeName","src":"2664:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2434:252:46"}},{"id":11324,"nodeType":"EventDefinition","src":"2692:242:46","nodes":[],"anonymous":false,"eventSelector":"5165909c3d1c01c5d1e121ac6f6d01dda1ba24bc9e1f975b5a375339c15be7f3","name":"DisputePrice","nameLocation":"2698:12:46","parameters":{"id":11323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11310,"indexed":true,"mutability":"mutable","name":"requester","nameLocation":"2736:9:46","nodeType":"VariableDeclaration","scope":11324,"src":"2720:25:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11309,"name":"address","nodeType":"ElementaryTypeName","src":"2720:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11312,"indexed":true,"mutability":"mutable","name":"proposer","nameLocation":"2771:8:46","nodeType":"VariableDeclaration","scope":11324,"src":"2755:24:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11311,"name":"address","nodeType":"ElementaryTypeName","src":"2755:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11314,"indexed":true,"mutability":"mutable","name":"disputer","nameLocation":"2805:8:46","nodeType":"VariableDeclaration","scope":11324,"src":"2789:24:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11313,"name":"address","nodeType":"ElementaryTypeName","src":"2789:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11316,"indexed":false,"mutability":"mutable","name":"identifier","nameLocation":"2831:10:46","nodeType":"VariableDeclaration","scope":11324,"src":"2823:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11315,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2823:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11318,"indexed":false,"mutability":"mutable","name":"timestamp","nameLocation":"2859:9:46","nodeType":"VariableDeclaration","scope":11324,"src":"2851:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11317,"name":"uint256","nodeType":"ElementaryTypeName","src":"2851:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11320,"indexed":false,"mutability":"mutable","name":"ancillaryData","nameLocation":"2884:13:46","nodeType":"VariableDeclaration","scope":11324,"src":"2878:19:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11319,"name":"bytes","nodeType":"ElementaryTypeName","src":"2878:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11322,"indexed":false,"mutability":"mutable","name":"proposedPrice","nameLocation":"2914:13:46","nodeType":"VariableDeclaration","scope":11324,"src":"2907:20:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11321,"name":"int256","nodeType":"ElementaryTypeName","src":"2907:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2710:223:46"}},{"id":11342,"nodeType":"EventDefinition","src":"2939:252:46","nodes":[],"anonymous":false,"eventSelector":"3f384afb4bd9f0aef0298c80399950011420eb33b0e1a750b20966270247b9a0","name":"Settle","nameLocation":"2945:6:46","parameters":{"id":11341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11326,"indexed":true,"mutability":"mutable","name":"requester","nameLocation":"2977:9:46","nodeType":"VariableDeclaration","scope":11342,"src":"2961:25:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11325,"name":"address","nodeType":"ElementaryTypeName","src":"2961:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11328,"indexed":true,"mutability":"mutable","name":"proposer","nameLocation":"3012:8:46","nodeType":"VariableDeclaration","scope":11342,"src":"2996:24:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11327,"name":"address","nodeType":"ElementaryTypeName","src":"2996:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11330,"indexed":true,"mutability":"mutable","name":"disputer","nameLocation":"3046:8:46","nodeType":"VariableDeclaration","scope":11342,"src":"3030:24:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11329,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11332,"indexed":false,"mutability":"mutable","name":"identifier","nameLocation":"3072:10:46","nodeType":"VariableDeclaration","scope":11342,"src":"3064:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11331,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3064:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11334,"indexed":false,"mutability":"mutable","name":"timestamp","nameLocation":"3100:9:46","nodeType":"VariableDeclaration","scope":11342,"src":"3092:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11333,"name":"uint256","nodeType":"ElementaryTypeName","src":"3092:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11336,"indexed":false,"mutability":"mutable","name":"ancillaryData","nameLocation":"3125:13:46","nodeType":"VariableDeclaration","scope":11342,"src":"3119:19:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11335,"name":"bytes","nodeType":"ElementaryTypeName","src":"3119:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11338,"indexed":false,"mutability":"mutable","name":"price","nameLocation":"3155:5:46","nodeType":"VariableDeclaration","scope":11342,"src":"3148:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11337,"name":"int256","nodeType":"ElementaryTypeName","src":"3148:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":11340,"indexed":false,"mutability":"mutable","name":"payout","nameLocation":"3178:6:46","nodeType":"VariableDeclaration","scope":11342,"src":"3170:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11339,"name":"uint256","nodeType":"ElementaryTypeName","src":"3170:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2951:239:46"}},{"id":11350,"nodeType":"EnumDefinition","src":"3254:457:46","nodes":[],"canonicalName":"OptimisticOracleV2Interface.State","members":[{"id":11343,"name":"Invalid","nameLocation":"3275:7:46","nodeType":"EnumValue","src":"3275:7:46"},{"id":11344,"name":"Requested","nameLocation":"3312:9:46","nodeType":"EnumValue","src":"3312:9:46"},{"id":11345,"name":"Proposed","nameLocation":"3369:8:46","nodeType":"EnumValue","src":"3369:8:46"},{"id":11346,"name":"Expired","nameLocation":"3433:7:46","nodeType":"EnumValue","src":"3433:7:46"},{"id":11347,"name":"Disputed","nameLocation":"3492:8:46","nodeType":"EnumValue","src":"3492:8:46"},{"id":11348,"name":"Resolved","nameLocation":"3554:8:46","nodeType":"EnumValue","src":"3554:8:46"},{"id":11349,"name":"Settled","nameLocation":"3612:7:46","nodeType":"EnumValue","src":"3612:7:46"}],"name":"State","nameLocation":"3259:5:46"},{"id":11365,"nodeType":"StructDefinition","src":"3717:660:46","nodes":[],"canonicalName":"OptimisticOracleV2Interface.RequestSettings","members":[{"constant":false,"id":11352,"mutability":"mutable","name":"eventBased","nameLocation":"3755:10:46","nodeType":"VariableDeclaration","scope":11365,"src":"3750:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11351,"name":"bool","nodeType":"ElementaryTypeName","src":"3750:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11354,"mutability":"mutable","name":"refundOnDispute","nameLocation":"3829:15:46","nodeType":"VariableDeclaration","scope":11365,"src":"3824:20:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11353,"name":"bool","nodeType":"ElementaryTypeName","src":"3824:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11356,"mutability":"mutable","name":"callbackOnPriceProposed","nameLocation":"3928:23:46","nodeType":"VariableDeclaration","scope":11365,"src":"3923:28:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11355,"name":"bool","nodeType":"ElementaryTypeName","src":"3923:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11358,"mutability":"mutable","name":"callbackOnPriceDisputed","nameLocation":"4023:23:46","nodeType":"VariableDeclaration","scope":11365,"src":"4018:28:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11357,"name":"bool","nodeType":"ElementaryTypeName","src":"4018:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11360,"mutability":"mutable","name":"callbackOnPriceSettled","nameLocation":"4118:22:46","nodeType":"VariableDeclaration","scope":11365,"src":"4113:27:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11359,"name":"bool","nodeType":"ElementaryTypeName","src":"4113:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11362,"mutability":"mutable","name":"bond","nameLocation":"4214:4:46","nodeType":"VariableDeclaration","scope":11365,"src":"4206:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11361,"name":"uint256","nodeType":"ElementaryTypeName","src":"4206:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11364,"mutability":"mutable","name":"customLiveness","nameLocation":"4309:14:46","nodeType":"VariableDeclaration","scope":11365,"src":"4301:22:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11363,"name":"uint256","nodeType":"ElementaryTypeName","src":"4301:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"RequestSettings","nameLocation":"3724:15:46","scope":11640,"visibility":"public"},{"id":11388,"nodeType":"StructDefinition","src":"4427:754:46","nodes":[],"canonicalName":"OptimisticOracleV2Interface.Request","members":[{"constant":false,"id":11367,"mutability":"mutable","name":"proposer","nameLocation":"4460:8:46","nodeType":"VariableDeclaration","scope":11388,"src":"4452:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11366,"name":"address","nodeType":"ElementaryTypeName","src":"4452:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11369,"mutability":"mutable","name":"disputer","nameLocation":"4514:8:46","nodeType":"VariableDeclaration","scope":11388,"src":"4506:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11368,"name":"address","nodeType":"ElementaryTypeName","src":"4506:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11372,"mutability":"mutable","name":"currency","nameLocation":"4567:8:46","nodeType":"VariableDeclaration","scope":11388,"src":"4560:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":11371,"nodeType":"UserDefinedTypeName","pathNode":{"id":11370,"name":"IERC20","nameLocations":["4560:6:46"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"4560:6:46"},"referencedDeclaration":2591,"src":"4560:6:46","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":11374,"mutability":"mutable","name":"settled","nameLocation":"4635:7:46","nodeType":"VariableDeclaration","scope":11388,"src":"4630:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11373,"name":"bool","nodeType":"ElementaryTypeName","src":"4630:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11377,"mutability":"mutable","name":"requestSettings","nameLocation":"4703:15:46","nodeType":"VariableDeclaration","scope":11388,"src":"4687:31:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage_ptr","typeString":"struct OptimisticOracleV2Interface.RequestSettings"},"typeName":{"id":11376,"nodeType":"UserDefinedTypeName","pathNode":{"id":11375,"name":"RequestSettings","nameLocations":["4687:15:46"],"nodeType":"IdentifierPath","referencedDeclaration":11365,"src":"4687:15:46"},"referencedDeclaration":11365,"src":"4687:15:46","typeDescriptions":{"typeIdentifier":"t_struct$_RequestSettings_$11365_storage_ptr","typeString":"struct OptimisticOracleV2Interface.RequestSettings"}},"visibility":"internal"},{"constant":false,"id":11379,"mutability":"mutable","name":"proposedPrice","nameLocation":"4781:13:46","nodeType":"VariableDeclaration","scope":11388,"src":"4774:20:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11378,"name":"int256","nodeType":"ElementaryTypeName","src":"4774:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":11381,"mutability":"mutable","name":"resolvedPrice","nameLocation":"4849:13:46","nodeType":"VariableDeclaration","scope":11388,"src":"4842:20:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11380,"name":"int256","nodeType":"ElementaryTypeName","src":"4842:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":11383,"mutability":"mutable","name":"expirationTime","nameLocation":"4927:14:46","nodeType":"VariableDeclaration","scope":11388,"src":"4919:22:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11382,"name":"uint256","nodeType":"ElementaryTypeName","src":"4919:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11385,"mutability":"mutable","name":"reward","nameLocation":"5020:6:46","nodeType":"VariableDeclaration","scope":11388,"src":"5012:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11384,"name":"uint256","nodeType":"ElementaryTypeName","src":"5012:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11387,"mutability":"mutable","name":"finalFee","nameLocation":"5108:8:46","nodeType":"VariableDeclaration","scope":11388,"src":"5100:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11386,"name":"uint256","nodeType":"ElementaryTypeName","src":"5100:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Request","nameLocation":"4434:7:46","scope":11640,"visibility":"public"},{"id":11391,"nodeType":"VariableDeclaration","src":"5492:50:46","nodes":[],"constant":true,"functionSelector":"c371dda7","mutability":"constant","name":"ancillaryBytesLimit","nameLocation":"5516:19:46","scope":11640,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11389,"name":"uint256","nodeType":"ElementaryTypeName","src":"5492:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"38313932","id":11390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5538:4:46","typeDescriptions":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"},"value":"8192"},"visibility":"public"},{"id":11396,"nodeType":"FunctionDefinition","src":"5549:67:46","nodes":[],"functionSelector":"fe4e1983","implemented":false,"kind":"function","modifiers":[],"name":"defaultLiveness","nameLocation":"5558:15:46","parameters":{"id":11392,"nodeType":"ParameterList","parameters":[],"src":"5573:2:46"},"returnParameters":{"id":11395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11394,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11396,"src":"5607:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11393,"name":"uint256","nodeType":"ElementaryTypeName","src":"5607:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5606:9:46"},"scope":11640,"stateMutability":"view","virtual":true,"visibility":"external"},{"id":11402,"nodeType":"FunctionDefinition","src":"5622:66:46","nodes":[],"functionSelector":"b9a3c84c","implemented":false,"kind":"function","modifiers":[],"name":"finder","nameLocation":"5631:6:46","parameters":{"id":11397,"nodeType":"ParameterList","parameters":[],"src":"5637:2:46"},"returnParameters":{"id":11401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11400,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11402,"src":"5671:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_FinderInterface_$7719","typeString":"contract FinderInterface"},"typeName":{"id":11399,"nodeType":"UserDefinedTypeName","pathNode":{"id":11398,"name":"FinderInterface","nameLocations":["5671:15:46"],"nodeType":"IdentifierPath","referencedDeclaration":7719,"src":"5671:15:46"},"referencedDeclaration":7719,"src":"5671:15:46","typeDescriptions":{"typeIdentifier":"t_contract$_FinderInterface_$7719","typeString":"contract FinderInterface"}},"visibility":"internal"}],"src":"5670:17:46"},"scope":11640,"stateMutability":"view","virtual":true,"visibility":"external"},{"id":11407,"nodeType":"FunctionDefinition","src":"5694:66:46","nodes":[],"functionSelector":"29cb924d","implemented":false,"kind":"function","modifiers":[],"name":"getCurrentTime","nameLocation":"5703:14:46","parameters":{"id":11403,"nodeType":"ParameterList","parameters":[],"src":"5717:2:46"},"returnParameters":{"id":11406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11405,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11407,"src":"5751:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11404,"name":"uint256","nodeType":"ElementaryTypeName","src":"5751:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5750:9:46"},"scope":11640,"stateMutability":"view","virtual":true,"visibility":"external"},{"id":11412,"nodeType":"VariableDeclaration","src":"5858:43:46","nodes":[],"constant":false,"functionSelector":"9d866985","mutability":"mutable","name":"requests","nameLocation":"5893:8:46","scope":11640,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Request_$11388_storage_$","typeString":"mapping(bytes32 => struct OptimisticOracleV2Interface.Request)"},"typeName":{"id":11411,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":11408,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5866:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"5858:27:46","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Request_$11388_storage_$","typeString":"mapping(bytes32 => struct OptimisticOracleV2Interface.Request)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":11410,"nodeType":"UserDefinedTypeName","pathNode":{"id":11409,"name":"Request","nameLocations":["5877:7:46"],"nodeType":"IdentifierPath","referencedDeclaration":11388,"src":"5877:7:46"},"referencedDeclaration":11388,"src":"5877:7:46","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"}}},"visibility":"public"},{"id":11429,"nodeType":"FunctionDefinition","src":"6767:213:46","nodes":[],"documentation":{"id":11413,"nodeType":"StructuredDocumentation","src":"5908:854:46","text":" @notice Requests a new price.\n @param identifier price identifier being requested.\n @param timestamp timestamp of the price being requested.\n @param ancillaryData ancillary data representing additional args being passed with the price request.\n @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n which could make sense if the contract requests and proposes the value in the same call or\n provides its own reward system.\n @return totalBond default bond (final fee) + final fee that the proposer and disputer will be required to pay.\n This can be changed with a subsequent call to setBond()."},"functionSelector":"11df92f1","implemented":false,"kind":"function","modifiers":[],"name":"requestPrice","nameLocation":"6776:12:46","parameters":{"id":11425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11415,"mutability":"mutable","name":"identifier","nameLocation":"6806:10:46","nodeType":"VariableDeclaration","scope":11429,"src":"6798:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11414,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6798:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11417,"mutability":"mutable","name":"timestamp","nameLocation":"6834:9:46","nodeType":"VariableDeclaration","scope":11429,"src":"6826:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11416,"name":"uint256","nodeType":"ElementaryTypeName","src":"6826:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11419,"mutability":"mutable","name":"ancillaryData","nameLocation":"6866:13:46","nodeType":"VariableDeclaration","scope":11429,"src":"6853:26:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11418,"name":"bytes","nodeType":"ElementaryTypeName","src":"6853:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11422,"mutability":"mutable","name":"currency","nameLocation":"6896:8:46","nodeType":"VariableDeclaration","scope":11429,"src":"6889:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"},"typeName":{"id":11421,"nodeType":"UserDefinedTypeName","pathNode":{"id":11420,"name":"IERC20","nameLocations":["6889:6:46"],"nodeType":"IdentifierPath","referencedDeclaration":2591,"src":"6889:6:46"},"referencedDeclaration":2591,"src":"6889:6:46","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2591","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":11424,"mutability":"mutable","name":"reward","nameLocation":"6922:6:46","nodeType":"VariableDeclaration","scope":11429,"src":"6914:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11423,"name":"uint256","nodeType":"ElementaryTypeName","src":"6914:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6788:146:46"},"returnParameters":{"id":11428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11427,"mutability":"mutable","name":"totalBond","nameLocation":"6969:9:46","nodeType":"VariableDeclaration","scope":11429,"src":"6961:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11426,"name":"uint256","nodeType":"ElementaryTypeName","src":"6961:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6960:19:46"},"scope":11640,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":11443,"nodeType":"FunctionDefinition","src":"7507:167:46","nodes":[],"documentation":{"id":11430,"nodeType":"StructuredDocumentation","src":"6986:516:46","text":" @notice Set the proposal bond associated with a price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param bond custom bond amount to set.\n @return totalBond new bond + final fee that the proposer and disputer will be required to pay. This can be\n changed again with a subsequent call to setBond()."},"functionSelector":"ad5a755a","implemented":false,"kind":"function","modifiers":[],"name":"setBond","nameLocation":"7516:7:46","parameters":{"id":11439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11432,"mutability":"mutable","name":"identifier","nameLocation":"7532:10:46","nodeType":"VariableDeclaration","scope":11443,"src":"7524:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11431,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7524:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11434,"mutability":"mutable","name":"timestamp","nameLocation":"7552:9:46","nodeType":"VariableDeclaration","scope":11443,"src":"7544:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11433,"name":"uint256","nodeType":"ElementaryTypeName","src":"7544:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11436,"mutability":"mutable","name":"ancillaryData","nameLocation":"7576:13:46","nodeType":"VariableDeclaration","scope":11443,"src":"7563:26:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11435,"name":"bytes","nodeType":"ElementaryTypeName","src":"7563:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11438,"mutability":"mutable","name":"bond","nameLocation":"7599:4:46","nodeType":"VariableDeclaration","scope":11443,"src":"7591:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11437,"name":"uint256","nodeType":"ElementaryTypeName","src":"7591:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7523:81:46"},"returnParameters":{"id":11442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11441,"mutability":"mutable","name":"totalBond","nameLocation":"7663:9:46","nodeType":"VariableDeclaration","scope":11443,"src":"7655:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11440,"name":"uint256","nodeType":"ElementaryTypeName","src":"7655:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7654:19:46"},"scope":11640,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":11453,"nodeType":"FunctionDefinition","src":"8230:112:46","nodes":[],"documentation":{"id":11444,"nodeType":"StructuredDocumentation","src":"7680:545:46","text":" @notice Sets the request to refund the reward if the proposal is disputed. This can help to \"hedge\" the caller\n in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's\n bond, so there is still profit to be made even if the reward is refunded.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested."},"functionSelector":"91f58dcb","implemented":false,"kind":"function","modifiers":[],"name":"setRefundOnDispute","nameLocation":"8239:18:46","parameters":{"id":11451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11446,"mutability":"mutable","name":"identifier","nameLocation":"8266:10:46","nodeType":"VariableDeclaration","scope":11453,"src":"8258:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11445,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8258:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11448,"mutability":"mutable","name":"timestamp","nameLocation":"8286:9:46","nodeType":"VariableDeclaration","scope":11453,"src":"8278:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11447,"name":"uint256","nodeType":"ElementaryTypeName","src":"8278:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11450,"mutability":"mutable","name":"ancillaryData","nameLocation":"8310:13:46","nodeType":"VariableDeclaration","scope":11453,"src":"8297:26:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11449,"name":"bytes","nodeType":"ElementaryTypeName","src":"8297:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8257:67:46"},"returnParameters":{"id":11452,"nodeType":"ParameterList","parameters":[],"src":"8341:0:46"},"scope":11640,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":11465,"nodeType":"FunctionDefinition","src":"8779:173:46","nodes":[],"documentation":{"id":11454,"nodeType":"StructuredDocumentation","src":"8348:426:46","text":" @notice Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before\n being auto-resolved.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param customLiveness new custom liveness."},"functionSelector":"473c45fe","implemented":false,"kind":"function","modifiers":[],"name":"setCustomLiveness","nameLocation":"8788:17:46","parameters":{"id":11463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11456,"mutability":"mutable","name":"identifier","nameLocation":"8823:10:46","nodeType":"VariableDeclaration","scope":11465,"src":"8815:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11455,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8815:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11458,"mutability":"mutable","name":"timestamp","nameLocation":"8851:9:46","nodeType":"VariableDeclaration","scope":11465,"src":"8843:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11457,"name":"uint256","nodeType":"ElementaryTypeName","src":"8843:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11460,"mutability":"mutable","name":"ancillaryData","nameLocation":"8883:13:46","nodeType":"VariableDeclaration","scope":11465,"src":"8870:26:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11459,"name":"bytes","nodeType":"ElementaryTypeName","src":"8870:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11462,"mutability":"mutable","name":"customLiveness","nameLocation":"8914:14:46","nodeType":"VariableDeclaration","scope":11465,"src":"8906:22:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11461,"name":"uint256","nodeType":"ElementaryTypeName","src":"8906:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8805:129:46"},"returnParameters":{"id":11464,"nodeType":"ParameterList","parameters":[],"src":"8951:0:46"},"scope":11640,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":11475,"nodeType":"FunctionDefinition","src":"9825:107:46","nodes":[],"documentation":{"id":11466,"nodeType":"StructuredDocumentation","src":"8958:862:46","text":" @notice Sets the request to be an \"event-based\" request.\n @dev Calling this method has a few impacts on the request:\n 1. The timestamp at which the request is evaluated is the time of the proposal, not the timestamp associated\n with the request.\n 2. The proposer cannot propose the \"too early\" value (TOO_EARLY_RESPONSE). This is to ensure that a proposer who\n prematurely proposes a response loses their bond.\n 3. RefundoOnDispute is automatically set, meaning disputes trigger the reward to be automatically refunded to\n the requesting contract.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested."},"functionSelector":"120698af","implemented":false,"kind":"function","modifiers":[],"name":"setEventBased","nameLocation":"9834:13:46","parameters":{"id":11473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11468,"mutability":"mutable","name":"identifier","nameLocation":"9856:10:46","nodeType":"VariableDeclaration","scope":11475,"src":"9848:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11467,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9848:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11470,"mutability":"mutable","name":"timestamp","nameLocation":"9876:9:46","nodeType":"VariableDeclaration","scope":11475,"src":"9868:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11469,"name":"uint256","nodeType":"ElementaryTypeName","src":"9868:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11472,"mutability":"mutable","name":"ancillaryData","nameLocation":"9900:13:46","nodeType":"VariableDeclaration","scope":11475,"src":"9887:26:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11471,"name":"bytes","nodeType":"ElementaryTypeName","src":"9887:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9847:67:46"},"returnParameters":{"id":11474,"nodeType":"ParameterList","parameters":[],"src":"9931:0:46"},"scope":11640,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":11491,"nodeType":"FunctionDefinition","src":"10498:249:46","nodes":[],"documentation":{"id":11476,"nodeType":"StructuredDocumentation","src":"9938:555:46","text":" @notice Sets which callbacks should be enabled for the request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param callbackOnPriceProposed whether to enable the callback onPriceProposed.\n @param callbackOnPriceDisputed whether to enable the callback onPriceDisputed.\n @param callbackOnPriceSettled whether to enable the callback onPriceSettled."},"functionSelector":"f327b075","implemented":false,"kind":"function","modifiers":[],"name":"setCallbacks","nameLocation":"10507:12:46","parameters":{"id":11489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11478,"mutability":"mutable","name":"identifier","nameLocation":"10537:10:46","nodeType":"VariableDeclaration","scope":11491,"src":"10529:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11477,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10529:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11480,"mutability":"mutable","name":"timestamp","nameLocation":"10565:9:46","nodeType":"VariableDeclaration","scope":11491,"src":"10557:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11479,"name":"uint256","nodeType":"ElementaryTypeName","src":"10557:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11482,"mutability":"mutable","name":"ancillaryData","nameLocation":"10597:13:46","nodeType":"VariableDeclaration","scope":11491,"src":"10584:26:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11481,"name":"bytes","nodeType":"ElementaryTypeName","src":"10584:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11484,"mutability":"mutable","name":"callbackOnPriceProposed","nameLocation":"10625:23:46","nodeType":"VariableDeclaration","scope":11491,"src":"10620:28:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11483,"name":"bool","nodeType":"ElementaryTypeName","src":"10620:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11486,"mutability":"mutable","name":"callbackOnPriceDisputed","nameLocation":"10663:23:46","nodeType":"VariableDeclaration","scope":11491,"src":"10658:28:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11485,"name":"bool","nodeType":"ElementaryTypeName","src":"10658:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11488,"mutability":"mutable","name":"callbackOnPriceSettled","nameLocation":"10701:22:46","nodeType":"VariableDeclaration","scope":11491,"src":"10696:27:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11487,"name":"bool","nodeType":"ElementaryTypeName","src":"10696:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10519:210:46"},"returnParameters":{"id":11490,"nodeType":"ParameterList","parameters":[],"src":"10746:0:46"},"scope":11640,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":11509,"nodeType":"FunctionDefinition","src":"11522:248:46","nodes":[],"documentation":{"id":11492,"nodeType":"StructuredDocumentation","src":"10753:764:46","text":" @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\n from this proposal. However, any bonds are pulled from the caller.\n @param proposer address to set as the proposer.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param proposedPrice price being proposed.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the proposer once settled if the proposal is correct."},"functionSelector":"7c82288f","implemented":false,"kind":"function","modifiers":[],"name":"proposePriceFor","nameLocation":"11531:15:46","parameters":{"id":11505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11494,"mutability":"mutable","name":"proposer","nameLocation":"11564:8:46","nodeType":"VariableDeclaration","scope":11509,"src":"11556:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11493,"name":"address","nodeType":"ElementaryTypeName","src":"11556:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11496,"mutability":"mutable","name":"requester","nameLocation":"11590:9:46","nodeType":"VariableDeclaration","scope":11509,"src":"11582:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11495,"name":"address","nodeType":"ElementaryTypeName","src":"11582:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11498,"mutability":"mutable","name":"identifier","nameLocation":"11617:10:46","nodeType":"VariableDeclaration","scope":11509,"src":"11609:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11497,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11609:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11500,"mutability":"mutable","name":"timestamp","nameLocation":"11645:9:46","nodeType":"VariableDeclaration","scope":11509,"src":"11637:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11499,"name":"uint256","nodeType":"ElementaryTypeName","src":"11637:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11502,"mutability":"mutable","name":"ancillaryData","nameLocation":"11677:13:46","nodeType":"VariableDeclaration","scope":11509,"src":"11664:26:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11501,"name":"bytes","nodeType":"ElementaryTypeName","src":"11664:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11504,"mutability":"mutable","name":"proposedPrice","nameLocation":"11707:13:46","nodeType":"VariableDeclaration","scope":11509,"src":"11700:20:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11503,"name":"int256","nodeType":"ElementaryTypeName","src":"11700:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"11546:180:46"},"returnParameters":{"id":11508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11507,"mutability":"mutable","name":"totalBond","nameLocation":"11759:9:46","nodeType":"VariableDeclaration","scope":11509,"src":"11751:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11506,"name":"uint256","nodeType":"ElementaryTypeName","src":"11751:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11750:19:46"},"scope":11640,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":11525,"nodeType":"FunctionDefinition","src":"12367:221:46","nodes":[],"documentation":{"id":11510,"nodeType":"StructuredDocumentation","src":"11776:586:46","text":" @notice Proposes a price value for an existing price request.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param proposedPrice price being proposed.\n @return totalBond the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to\n the proposer once settled if the proposal is correct."},"functionSelector":"b8b4f908","implemented":false,"kind":"function","modifiers":[],"name":"proposePrice","nameLocation":"12376:12:46","parameters":{"id":11521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11512,"mutability":"mutable","name":"requester","nameLocation":"12406:9:46","nodeType":"VariableDeclaration","scope":11525,"src":"12398:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11511,"name":"address","nodeType":"ElementaryTypeName","src":"12398:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11514,"mutability":"mutable","name":"identifier","nameLocation":"12433:10:46","nodeType":"VariableDeclaration","scope":11525,"src":"12425:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12425:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11516,"mutability":"mutable","name":"timestamp","nameLocation":"12461:9:46","nodeType":"VariableDeclaration","scope":11525,"src":"12453:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11515,"name":"uint256","nodeType":"ElementaryTypeName","src":"12453:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11518,"mutability":"mutable","name":"ancillaryData","nameLocation":"12493:13:46","nodeType":"VariableDeclaration","scope":11525,"src":"12480:26:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11517,"name":"bytes","nodeType":"ElementaryTypeName","src":"12480:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11520,"mutability":"mutable","name":"proposedPrice","nameLocation":"12523:13:46","nodeType":"VariableDeclaration","scope":11525,"src":"12516:20:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11519,"name":"int256","nodeType":"ElementaryTypeName","src":"12516:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"12388:154:46"},"returnParameters":{"id":11524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11523,"mutability":"mutable","name":"totalBond","nameLocation":"12577:9:46","nodeType":"VariableDeclaration","scope":11525,"src":"12569:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11522,"name":"uint256","nodeType":"ElementaryTypeName","src":"12569:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12568:19:46"},"scope":11640,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":11541,"nodeType":"FunctionDefinition","src":"13365:218:46","nodes":[],"documentation":{"id":11526,"nodeType":"StructuredDocumentation","src":"12594:766:46","text":" @notice Disputes a price request with an active proposal on another address' behalf. Note: this address will\n receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\n @param disputer address to set as the disputer.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the disputer once settled if the dispute was value (the proposal was incorrect)."},"functionSelector":"76c7823f","implemented":false,"kind":"function","modifiers":[],"name":"disputePriceFor","nameLocation":"13374:15:46","parameters":{"id":11537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11528,"mutability":"mutable","name":"disputer","nameLocation":"13407:8:46","nodeType":"VariableDeclaration","scope":11541,"src":"13399:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11527,"name":"address","nodeType":"ElementaryTypeName","src":"13399:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11530,"mutability":"mutable","name":"requester","nameLocation":"13433:9:46","nodeType":"VariableDeclaration","scope":11541,"src":"13425:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11529,"name":"address","nodeType":"ElementaryTypeName","src":"13425:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11532,"mutability":"mutable","name":"identifier","nameLocation":"13460:10:46","nodeType":"VariableDeclaration","scope":11541,"src":"13452:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11531,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13452:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11534,"mutability":"mutable","name":"timestamp","nameLocation":"13488:9:46","nodeType":"VariableDeclaration","scope":11541,"src":"13480:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11533,"name":"uint256","nodeType":"ElementaryTypeName","src":"13480:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11536,"mutability":"mutable","name":"ancillaryData","nameLocation":"13520:13:46","nodeType":"VariableDeclaration","scope":11541,"src":"13507:26:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11535,"name":"bytes","nodeType":"ElementaryTypeName","src":"13507:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13389:150:46"},"returnParameters":{"id":11540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11539,"mutability":"mutable","name":"totalBond","nameLocation":"13572:9:46","nodeType":"VariableDeclaration","scope":11541,"src":"13564:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11538,"name":"uint256","nodeType":"ElementaryTypeName","src":"13564:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13563:19:46"},"scope":11640,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":11555,"nodeType":"FunctionDefinition","src":"14181:177:46","nodes":[],"documentation":{"id":11542,"nodeType":"StructuredDocumentation","src":"13589:587:46","text":" @notice Disputes a price value for an existing price request with an active proposal.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return totalBond the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to\n the disputer once settled if the dispute was valid (the proposal was incorrect)."},"functionSelector":"fba7f1e3","implemented":false,"kind":"function","modifiers":[],"name":"disputePrice","nameLocation":"14190:12:46","parameters":{"id":11551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11544,"mutability":"mutable","name":"requester","nameLocation":"14211:9:46","nodeType":"VariableDeclaration","scope":11555,"src":"14203:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11543,"name":"address","nodeType":"ElementaryTypeName","src":"14203:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11546,"mutability":"mutable","name":"identifier","nameLocation":"14230:10:46","nodeType":"VariableDeclaration","scope":11555,"src":"14222:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11545,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14222:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11548,"mutability":"mutable","name":"timestamp","nameLocation":"14250:9:46","nodeType":"VariableDeclaration","scope":11555,"src":"14242:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11547,"name":"uint256","nodeType":"ElementaryTypeName","src":"14242:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11550,"mutability":"mutable","name":"ancillaryData","nameLocation":"14274:13:46","nodeType":"VariableDeclaration","scope":11555,"src":"14261:26:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11549,"name":"bytes","nodeType":"ElementaryTypeName","src":"14261:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14202:86:46"},"returnParameters":{"id":11554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11553,"mutability":"mutable","name":"totalBond","nameLocation":"14347:9:46","nodeType":"VariableDeclaration","scope":11555,"src":"14339:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11552,"name":"uint256","nodeType":"ElementaryTypeName","src":"14339:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14338:19:46"},"scope":11640,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":11567,"nodeType":"FunctionDefinition","src":"14884:152:46","nodes":[],"documentation":{"id":11556,"nodeType":"StructuredDocumentation","src":"14364:515:46","text":" @notice Retrieves a price that was previously requested by a caller. Reverts if the request is not settled\n or settleable. Note: this method is not view so that this call may actually settle the price request if it\n hasn't been settled.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return resolved price."},"functionSelector":"53b59239","implemented":false,"kind":"function","modifiers":[],"name":"settleAndGetPrice","nameLocation":"14893:17:46","parameters":{"id":11563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11558,"mutability":"mutable","name":"identifier","nameLocation":"14919:10:46","nodeType":"VariableDeclaration","scope":11567,"src":"14911:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11557,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14911:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11560,"mutability":"mutable","name":"timestamp","nameLocation":"14939:9:46","nodeType":"VariableDeclaration","scope":11567,"src":"14931:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11559,"name":"uint256","nodeType":"ElementaryTypeName","src":"14931:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11562,"mutability":"mutable","name":"ancillaryData","nameLocation":"14963:13:46","nodeType":"VariableDeclaration","scope":11567,"src":"14950:26:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11561,"name":"bytes","nodeType":"ElementaryTypeName","src":"14950:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14910:67:46"},"returnParameters":{"id":11566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11565,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11567,"src":"15028:6:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11564,"name":"int256","nodeType":"ElementaryTypeName","src":"15028:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"15027:8:46"},"scope":11640,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":11581,"nodeType":"FunctionDefinition","src":"15612:168:46","nodes":[],"documentation":{"id":11568,"nodeType":"StructuredDocumentation","src":"15042:565:46","text":" @notice Attempts to settle an outstanding price request. Will revert if it isn't settleable.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return payout the amount that the \"winner\" (proposer or disputer) receives on settlement. This amount includes\n the returned bonds as well as additional rewards."},"functionSelector":"5e9a79a9","implemented":false,"kind":"function","modifiers":[],"name":"settle","nameLocation":"15621:6:46","parameters":{"id":11577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11570,"mutability":"mutable","name":"requester","nameLocation":"15636:9:46","nodeType":"VariableDeclaration","scope":11581,"src":"15628:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11569,"name":"address","nodeType":"ElementaryTypeName","src":"15628:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11572,"mutability":"mutable","name":"identifier","nameLocation":"15655:10:46","nodeType":"VariableDeclaration","scope":11581,"src":"15647:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11571,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15647:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11574,"mutability":"mutable","name":"timestamp","nameLocation":"15675:9:46","nodeType":"VariableDeclaration","scope":11581,"src":"15667:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11573,"name":"uint256","nodeType":"ElementaryTypeName","src":"15667:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11576,"mutability":"mutable","name":"ancillaryData","nameLocation":"15699:13:46","nodeType":"VariableDeclaration","scope":11581,"src":"15686:26:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11575,"name":"bytes","nodeType":"ElementaryTypeName","src":"15686:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15627:86:46"},"returnParameters":{"id":11580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11579,"mutability":"mutable","name":"payout","nameLocation":"15772:6:46","nodeType":"VariableDeclaration","scope":11581,"src":"15764:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11578,"name":"uint256","nodeType":"ElementaryTypeName","src":"15764:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15763:16:46"},"scope":11640,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":11596,"nodeType":"FunctionDefinition","src":"16220:183:46","nodes":[],"documentation":{"id":11582,"nodeType":"StructuredDocumentation","src":"15786:429:46","text":" @notice Gets the current data structure containing all information about a price request.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return the Request data structure."},"functionSelector":"a9904f9b","implemented":false,"kind":"function","modifiers":[],"name":"getRequest","nameLocation":"16229:10:46","parameters":{"id":11591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11584,"mutability":"mutable","name":"requester","nameLocation":"16248:9:46","nodeType":"VariableDeclaration","scope":11596,"src":"16240:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11583,"name":"address","nodeType":"ElementaryTypeName","src":"16240:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11586,"mutability":"mutable","name":"identifier","nameLocation":"16267:10:46","nodeType":"VariableDeclaration","scope":11596,"src":"16259:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11585,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16259:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11588,"mutability":"mutable","name":"timestamp","nameLocation":"16287:9:46","nodeType":"VariableDeclaration","scope":11596,"src":"16279:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11587,"name":"uint256","nodeType":"ElementaryTypeName","src":"16279:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11590,"mutability":"mutable","name":"ancillaryData","nameLocation":"16311:13:46","nodeType":"VariableDeclaration","scope":11596,"src":"16298:26:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11589,"name":"bytes","nodeType":"ElementaryTypeName","src":"16298:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16239:86:46"},"returnParameters":{"id":11595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11594,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11596,"src":"16387:14:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_memory_ptr","typeString":"struct OptimisticOracleV2Interface.Request"},"typeName":{"id":11593,"nodeType":"UserDefinedTypeName","pathNode":{"id":11592,"name":"Request","nameLocations":["16387:7:46"],"nodeType":"IdentifierPath","referencedDeclaration":11388,"src":"16387:7:46"},"referencedDeclaration":11388,"src":"16387:7:46","typeDescriptions":{"typeIdentifier":"t_struct$_Request_$11388_storage_ptr","typeString":"struct OptimisticOracleV2Interface.Request"}},"visibility":"internal"}],"src":"16386:16:46"},"scope":11640,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":11611,"nodeType":"FunctionDefinition","src":"16793:172:46","nodes":[],"documentation":{"id":11597,"nodeType":"StructuredDocumentation","src":"16409:379:46","text":" @notice Returns the state of a price request.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return the State enum value."},"functionSelector":"ba4b930c","implemented":false,"kind":"function","modifiers":[],"name":"getState","nameLocation":"16802:8:46","parameters":{"id":11606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11599,"mutability":"mutable","name":"requester","nameLocation":"16819:9:46","nodeType":"VariableDeclaration","scope":11611,"src":"16811:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11598,"name":"address","nodeType":"ElementaryTypeName","src":"16811:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11601,"mutability":"mutable","name":"identifier","nameLocation":"16838:10:46","nodeType":"VariableDeclaration","scope":11611,"src":"16830:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11600,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16830:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11603,"mutability":"mutable","name":"timestamp","nameLocation":"16858:9:46","nodeType":"VariableDeclaration","scope":11611,"src":"16850:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11602,"name":"uint256","nodeType":"ElementaryTypeName","src":"16850:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11605,"mutability":"mutable","name":"ancillaryData","nameLocation":"16882:13:46","nodeType":"VariableDeclaration","scope":11611,"src":"16869:26:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11604,"name":"bytes","nodeType":"ElementaryTypeName","src":"16869:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16810:86:46"},"returnParameters":{"id":11610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11609,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11611,"src":"16958:5:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"},"typeName":{"id":11608,"nodeType":"UserDefinedTypeName","pathNode":{"id":11607,"name":"State","nameLocations":["16958:5:46"],"nodeType":"IdentifierPath","referencedDeclaration":11350,"src":"16958:5:46"},"referencedDeclaration":11350,"src":"16958:5:46","typeDescriptions":{"typeIdentifier":"t_enum$_State_$11350","typeString":"enum OptimisticOracleV2Interface.State"}},"visibility":"internal"}],"src":"16957:7:46"},"scope":11640,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":11625,"nodeType":"FunctionDefinition","src":"17447:171:46","nodes":[],"documentation":{"id":11612,"nodeType":"StructuredDocumentation","src":"16971:471:46","text":" @notice Checks if a given request has resolved or been settled (i.e the optimistic oracle has a price).\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return true if price has resolved or settled, false otherwise."},"functionSelector":"bc58ccaa","implemented":false,"kind":"function","modifiers":[],"name":"hasPrice","nameLocation":"17456:8:46","parameters":{"id":11621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11614,"mutability":"mutable","name":"requester","nameLocation":"17473:9:46","nodeType":"VariableDeclaration","scope":11625,"src":"17465:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11613,"name":"address","nodeType":"ElementaryTypeName","src":"17465:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11616,"mutability":"mutable","name":"identifier","nameLocation":"17492:10:46","nodeType":"VariableDeclaration","scope":11625,"src":"17484:18:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11615,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17484:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11618,"mutability":"mutable","name":"timestamp","nameLocation":"17512:9:46","nodeType":"VariableDeclaration","scope":11625,"src":"17504:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11617,"name":"uint256","nodeType":"ElementaryTypeName","src":"17504:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11620,"mutability":"mutable","name":"ancillaryData","nameLocation":"17536:13:46","nodeType":"VariableDeclaration","scope":11625,"src":"17523:26:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11619,"name":"bytes","nodeType":"ElementaryTypeName","src":"17523:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17464:86:46"},"returnParameters":{"id":11624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11623,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11625,"src":"17612:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11622,"name":"bool","nodeType":"ElementaryTypeName","src":"17612:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17611:6:46"},"scope":11640,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":11634,"nodeType":"FunctionDefinition","src":"17624:150:46","nodes":[],"functionSelector":"af5d2f39","implemented":false,"kind":"function","modifiers":[],"name":"stampAncillaryData","nameLocation":"17633:18:46","parameters":{"id":11630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11627,"mutability":"mutable","name":"ancillaryData","nameLocation":"17665:13:46","nodeType":"VariableDeclaration","scope":11634,"src":"17652:26:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11626,"name":"bytes","nodeType":"ElementaryTypeName","src":"17652:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":11629,"mutability":"mutable","name":"requester","nameLocation":"17688:9:46","nodeType":"VariableDeclaration","scope":11634,"src":"17680:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11628,"name":"address","nodeType":"ElementaryTypeName","src":"17680:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17651:47:46"},"returnParameters":{"id":11633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11632,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11634,"src":"17760:12:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11631,"name":"bytes","nodeType":"ElementaryTypeName","src":"17760:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17759:14:46"},"scope":11640,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":11639,"nodeType":"VariableDeclaration","src":"18202:25:46","nodes":[],"constant":false,"documentation":{"id":11635,"nodeType":"StructuredDocumentation","src":"17780:417:46","text":" @dev Reserve storage slots for future versions of this base contract to add state variables without affecting the\n storage layout of child contracts. Decrement the size of __gap whenever state variables are added. This is at the\n bottom of contract to make sure its always at the end of storage.\n See https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable#storage-gaps"},"mutability":"mutable","name":"__gap","nameLocation":"18222:5:46","scope":11640,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":11636,"name":"uint256","nodeType":"ElementaryTypeName","src":"18202:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11638,"length":{"hexValue":"3439","id":11637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18210:2:46","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"18202:11:46","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"abstract":true,"baseContracts":[],"canonicalName":"OptimisticOracleV2Interface","contractDependencies":[],"contractKind":"contract","documentation":{"id":11235,"nodeType":"StructuredDocumentation","src":"565:175:46","text":" @title Financial contract facing Oracle interface.\n @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface."},"fullyImplemented":false,"linearizedBaseContracts":[11640],"name":"OptimisticOracleV2Interface","nameLocation":"759:27:46","scope":11641,"usedErrors":[11238,11241,11244,11247,11250,11253,11256,11259,11262,11265,11268,11271,11274],"usedEvents":[11290,11308,11324,11342]}],"license":"AGPL-3.0-only"}}}},"solcLongVersion":"0.8.30","solcVersion":"0.8.30"} \ No newline at end of file From a39c265dede95a12fef51f2c34f4bb4ab748f6bb Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Mon, 18 Aug 2025 16:15:39 +0000 Subject: [PATCH 02/17] fix: upgrade script Signed-off-by: Reinis Martinsons --- script/UpgradeManagedOptimisticOracleV2.s.sol | 139 ++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 script/UpgradeManagedOptimisticOracleV2.s.sol diff --git a/script/UpgradeManagedOptimisticOracleV2.s.sol b/script/UpgradeManagedOptimisticOracleV2.s.sol new file mode 100644 index 0000000..add6eda --- /dev/null +++ b/script/UpgradeManagedOptimisticOracleV2.s.sol @@ -0,0 +1,139 @@ +// SPDX-License-Identifier: AGPL-3.0-only +pragma solidity ^0.8.0; + +import {Script} from "forge-std/Script.sol"; +import {console} from "forge-std/console.sol"; +import {Upgrades} from "@openzeppelin/foundry-upgrades/Upgrades.sol"; +import {Options} from "@openzeppelin/foundry-upgrades/Options.sol"; + +import {ManagedOptimisticOracleV2} from "../src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol"; + +/** + * @title Upgrade script for ManagedOptimisticOracleV2 + * @notice Upgrades the ManagedOptimisticOracleV2 contract implementation using OZ Upgrades + * + * Environment variables: + * - MNEMONIC: Required. The mnemonic phrase for the upgrade admin wallet + * - PROXY_ADDRESS: Required. Address of the existing proxy contract to upgrade + * - REFERENCE_BUILD_VERSION: Required. Integer version number to derive reference contract and build info dir (e.g., 1 for "build-info-v1:ManagedOptimisticOracleV2" and "old-builds/build-info-v1") + * - UNSAFE_SKIP_STORAGE_CHECK: Optional. Skip storage layout validation for local testing (defaults to false) + */ +contract UpgradeManagedOptimisticOracleV2 is Script { + function run() external { + uint256 upgradeAdminPrivateKey = _getUpgradeAdminPrivateKey(); + address derivedUpgradeAdmin = vm.addr(upgradeAdminPrivateKey); + + // Get the proxy address to upgrade + address proxyAddress = vm.envAddress("PROXY_ADDRESS"); + + // Fetch the actual upgrade admin from the contract + address actualUpgradeAdmin = ManagedOptimisticOracleV2(proxyAddress).owner(); + + // Required reference build version for upgrade validation + uint256 referenceBuildVersion = vm.envUint("REFERENCE_BUILD_VERSION"); + + // Optional unsafe validation flags (use only for local/testing) + bool unsafeSkipStorageCheck = vm.envOr("UNSAFE_SKIP_STORAGE_CHECK", false); + + // Log initial setup + console.log("Derived Upgrade Admin:", derivedUpgradeAdmin); + console.log("Actual Upgrade Admin:", actualUpgradeAdmin); + console.log("Proxy Address:", proxyAddress); + console.log("Reference Contract:", string.concat("build-info-v", vm.toString(referenceBuildVersion), ":ManagedOptimisticOracleV2")); + console.log("Reference Build Info Dir:", string.concat("old-builds/build-info-v", vm.toString(referenceBuildVersion))); + + // Check if we need to impersonate or can execute directly + bool shouldImpersonate = actualUpgradeAdmin != derivedUpgradeAdmin; + + // Build common options for both modes + Options memory opts; + opts.referenceContract = string.concat("build-info-v", vm.toString(referenceBuildVersion), ":ManagedOptimisticOracleV2"); + opts.referenceBuildInfoDir = string.concat("old-builds/build-info-v", vm.toString(referenceBuildVersion)); + opts.unsafeSkipStorageCheck = unsafeSkipStorageCheck; + + if (shouldImpersonate) { + // Multisig mode - deploy implementation and generate transaction data + console.log("\n=== IMPERSONATION MODE ==="); + console.log("MNEMONIC does not correspond to actual upgrade admin"); + console.log("Deploying new implementation and generating upgrade transaction data"); + + // Deploy the new implementation + console.log("\n=== DEPLOYING NEW IMPLEMENTATION ==="); + vm.startBroadcast(upgradeAdminPrivateKey); + address newImplementationAddress = Upgrades.prepareUpgrade( + "ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2", + opts + ); + vm.stopBroadcast(); + console.log("New Implementation Address:", newImplementationAddress); + + // Generate upgrade transaction data + bytes memory upgradeData = abi.encodeWithSignature( + "upgradeToAndCall(address,bytes)", + newImplementationAddress, + bytes("") + ); + + // Simulate the upgrade transaction to verify it would succeed + console.log("\n=== SIMULATING UPGRADE TRANSACTION ==="); + vm.startPrank(actualUpgradeAdmin); + (bool success, bytes memory result) = proxyAddress.call(upgradeData); + vm.stopPrank(); + + if (success) { + console.log("Upgrade simulation successful!"); + } else { + console.log("Upgrade simulation failed!"); + console.log("Error:", vm.toString(result)); + revert("Upgrade simulation failed - check the error above"); + } + + // Log transaction data for multisig + console.log("\n=== MULTISIG UPGRADE TRANSACTION DATA ==="); + console.log("Target Contract:", proxyAddress); + console.log("Transaction Data:", vm.toString(upgradeData)); + console.log("Upgrade Admin:", actualUpgradeAdmin); + console.log("Chain ID:", block.chainid); + console.log("\nUse this transaction data in your multisig wallet to execute the upgrade."); + console.log("The new implementation has been deployed at:", newImplementationAddress); + + } else { + // Direct mode - execute upgrade directly + console.log("\n=== DIRECT EXECUTION MODE ==="); + console.log("MNEMONIC corresponds to actual upgrade admin"); + console.log("Executing upgrade directly"); + + // Start broadcasting transactions with the derived private key + vm.startBroadcast(upgradeAdminPrivateKey); + + // Upgrade the proxy + Upgrades.upgradeProxy( + proxyAddress, + "ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2", + bytes(""), + opts + ); + + vm.stopBroadcast(); + + // Output upgrade summary + console.log("\n=== Upgrade Summary ==="); + console.log("Proxy Address:", proxyAddress); + console.log("New Implementation Address:", Upgrades.getImplementationAddress(proxyAddress)); + console.log("Chain ID:", block.chainid); + console.log("Upgrade Admin:", actualUpgradeAdmin); + } + } + + + + /** + * @notice Derives the upgrade admin's private key from the mnemonic + * @return upgradeAdminPrivateKey The derived private key for the upgrade admin + */ + function _getUpgradeAdminPrivateKey() internal view returns (uint256) { + string memory mnemonic = vm.envString("MNEMONIC"); + // Derive the 0 index address from mnemonic + return vm.deriveKey(mnemonic, 0); + } +} From 708c1c223bbf4c4bcbebc347b9e621f21f4b087a Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Mon, 18 Aug 2025 16:15:39 +0000 Subject: [PATCH 03/17] fix: update readme on upgrades Signed-off-by: Reinis Martinsons --- script/README.md | 124 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 123 insertions(+), 1 deletion(-) diff --git a/script/README.md b/script/README.md index 693ff6c..adf0c9c 100644 --- a/script/README.md +++ b/script/README.md @@ -29,6 +29,11 @@ REQUESTER_WHITELIST="0x1234567890123456789012345678901234567890" # CUSTOM_CURRENCY="" # Optional, defaults to none or USDC.e on Polygon # MINIMUM_BOND_AMOUNT="100000000" # Optional, defaults to 100 USDC.e on Polygon # MAXIMUM_BOND_AMOUNT="100000000000" # Optional, defaults to 100,000 USDC.e on Polygon + +# ManagedOptimisticOracleV2 Upgrade-specific variables +PROXY_ADDRESS="0x1234567890123456789012345678901234567890" +REFERENCE_BUILD_VERSION="1" # Required, integer version to derive reference paths (e.g., 1 for build-info-v1) + ``` ## AddressWhitelist Deployment @@ -212,4 +217,121 @@ The `ManagedOptimisticOracleV2` contract: - Supports role-based access control with config and upgrade admins - Allows request managers to set custom bonds, liveness, and proposer whitelists - Enforces maximum bonds and minimum liveness set by admins -- Requires whitelisted requesters and proposers \ No newline at end of file +- Requires whitelisted requesters and proposers + +## ManagedOptimisticOracleV2 Upgrade + +The `UpgradeManagedOptimisticOracleV2.s.sol` script upgrades the `ManagedOptimisticOracleV2` contract implementation using OpenZeppelin Upgrades library. + +### Environment Variables + +| Variable | Required | Description | +|----------|----------|-------------| +| `MNEMONIC` | Yes | The mnemonic phrase for the upgrade admin wallet (uses 0 index address) | +| `PROXY_ADDRESS` | Yes | Address of the existing proxy contract to upgrade | +| `REFERENCE_BUILD_VERSION` | Yes | Integer version number to derive reference contract and build info dir (e.g., 1 for "build-info-v1:ManagedOptimisticOracleV2" and "old-builds/build-info-v1") | +| `UNSAFE_SKIP_STORAGE_CHECK` | No | Skip storage layout validation for local testing (defaults to false) | + +### Usage Examples + +#### Direct Execution (MNEMONIC corresponds to upgrade admin) +```bash +REFERENCE_BUILD_VERSION=1 \ +forge script script/UpgradeManagedOptimisticOracleV2.s.sol --rpc-url "YOUR_RPC_URL" --broadcast +``` + +#### Multisig Mode (MNEMONIC does not correspond to upgrade admin) +```bash +REFERENCE_BUILD_VERSION=1 \ +forge script script/UpgradeManagedOptimisticOracleV2.s.sol --rpc-url "YOUR_RPC_URL" +``` + +### Features + +- **UUPS upgradeable**: Uses UUPS (Universal Upgradeable Proxy Standard) pattern +- **Mandatory reference validation**: Always uses reference contracts for upgrade safety validation +- **Optional storage check skip**: Supports skipping storage layout validation for local testing +- **Dual execution modes**: Supports both direct execution and multisig transaction data generation +- **Upgrade simulation**: In multisig mode, simulates the upgrade transaction to verify it would succeed +- **Automatic admin detection**: Automatically fetches the upgrade admin from the proxy contract +- **Detailed logging**: Provides comprehensive upgrade information and status updates + +### Important Notes + +1. **Upgrade Admin**: The script automatically fetches the actual upgrade admin from the proxy contract using the `owner()` function. It compares this with the address derived from the mnemonic to determine the execution mode. + +2. **Multisig Support**: If the MNEMONIC doesn't correspond to the actual upgrade admin (e.g., if it's a multisig wallet), the script will: + - Deploy the new implementation using the mnemonic's private key + - Simulate the upgrade transaction to verify it would succeed + - Generate transaction data for manual multisig execution + +3. **Upgrade Validation**: The script automatically derives reference contract and build info directory from the `REFERENCE_BUILD_VERSION` environment variable. The upgrade validation uses the automatically derived reference paths based on `REFERENCE_BUILD_VERSION`. + +4. **Upgrade Simulation**: In multisig mode, the script simulates the upgrade transaction using `vm.startPrank()` to impersonate the actual upgrade admin, ensuring the transaction would succeed before generating the multisig data. + +5. **Storage Check Skip**: For local testing, you can skip storage layout validation by setting `UNSAFE_SKIP_STORAGE_CHECK=true`. + +6. **Testing**: Always test upgrades on a forked mainnet or testnet before executing on mainnet. + +### Etherscan Verification + +After upgrading, verify the new implementation contract on Etherscan: + +```bash +forge verify-contract src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2 --chain-id --etherscan-api-key +``` + +**Replace:** +- `` with the new implementation contract address (printed in the upgrade summary) +- `` with the network chain ID (1 for Ethereum mainnet, 11155111 for Sepolia, etc.) +- `` with your Etherscan API key + +### Example Upgrade Process + +#### Direct Execution (Single Signer) +1. **Prepare the upgrade**: + ```bash + # Set environment variables + export MNEMONIC="your mnemonic phrase here" + export PROXY_ADDRESS="0x2c0367a9db231ddebd88a94b4f6461a6e47c58b1" + export REFERENCE_BUILD_VERSION="1" + ``` + +2. **Run the upgrade**: + ```bash + forge script script/UpgradeManagedOptimisticOracleV2.s.sol --rpc-url "YOUR_RPC_URL" --broadcast + ``` + +3. **Verify the new implementation**: + ```bash + # Use the new implementation address from the upgrade summary + forge verify-contract 0xNEW_IMPLEMENTATION_ADDRESS src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2 --chain-id 137 --etherscan-api-key + ``` + +#### Multisig Execution +1. **Prepare the upgrade**: + ```bash + # Set environment variables + export MNEMONIC="your mnemonic phrase here" + export PROXY_ADDRESS="0x2c0367a9db231ddebd88a94b4f6461a6e47c58b1" + export REFERENCE_BUILD_VERSION="1" + ``` + +2. **Generate transaction data and deploy implementation**: + ```bash + forge script script/UpgradeManagedOptimisticOracleV2.s.sol --rpc-url "YOUR_RPC_URL" + ``` + + The script will: + - Deploy the new implementation using your mnemonic's private key + - Simulate the upgrade transaction to verify it would succeed + - Generate transaction data for multisig execution + - Display the new implementation address and transaction data + +3. **Execute via multisig**: Use the generated transaction data in your multisig wallet to execute the upgrade. + +4. **Verify the new implementation**: + ```bash + # Use the new implementation address from the script output + forge verify-contract 0xNEW_IMPLEMENTATION_ADDRESS src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2 --chain-id 137 --etherscan-api-key + ``` \ No newline at end of file From 4c7f4e2a4196b239ccb4be57b67ed41541fb9978 Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Mon, 18 Aug 2025 16:15:42 +0000 Subject: [PATCH 04/17] fix: use encode call Signed-off-by: Reinis Martinsons --- script/DeployManagedOptimisticOracleV2.s.sol | 22 +++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/script/DeployManagedOptimisticOracleV2.s.sol b/script/DeployManagedOptimisticOracleV2.s.sol index 2179850..0da2eab 100644 --- a/script/DeployManagedOptimisticOracleV2.s.sol +++ b/script/DeployManagedOptimisticOracleV2.s.sol @@ -84,16 +84,18 @@ contract DeployManagedOptimisticOracleV2 is Script { ManagedOptimisticOracleV2 proxy = ManagedOptimisticOracleV2( Upgrades.deployUUPSProxy( "ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2", - abi.encodeWithSelector( - ManagedOptimisticOracleV2.initialize.selector, - defaultLiveness, - finderAddress, - defaultProposerWhitelist, - requesterWhitelist, - currencyBondRanges, - minimumLiveness, - configAdmin, - upgradeAdmin + abi.encodeCall( + ManagedOptimisticOracleV2.initialize, + ( + defaultLiveness, + finderAddress, + defaultProposerWhitelist, + requesterWhitelist, + currencyBondRanges, + minimumLiveness, + configAdmin, + upgradeAdmin + ) ) ) ); From ab04f5131cc1753b0a3ba2a5b4ecd07e659d72f2 Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Mon, 18 Aug 2025 16:23:18 +0000 Subject: [PATCH 05/17] fix: forge fmt Signed-off-by: Reinis Martinsons --- script/UpgradeManagedOptimisticOracleV2.s.sol | 41 ++++++++----------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/script/UpgradeManagedOptimisticOracleV2.s.sol b/script/UpgradeManagedOptimisticOracleV2.s.sol index add6eda..d84d863 100644 --- a/script/UpgradeManagedOptimisticOracleV2.s.sol +++ b/script/UpgradeManagedOptimisticOracleV2.s.sol @@ -31,7 +31,7 @@ contract UpgradeManagedOptimisticOracleV2 is Script { // Required reference build version for upgrade validation uint256 referenceBuildVersion = vm.envUint("REFERENCE_BUILD_VERSION"); - + // Optional unsafe validation flags (use only for local/testing) bool unsafeSkipStorageCheck = vm.envOr("UNSAFE_SKIP_STORAGE_CHECK", false); @@ -39,15 +39,21 @@ contract UpgradeManagedOptimisticOracleV2 is Script { console.log("Derived Upgrade Admin:", derivedUpgradeAdmin); console.log("Actual Upgrade Admin:", actualUpgradeAdmin); console.log("Proxy Address:", proxyAddress); - console.log("Reference Contract:", string.concat("build-info-v", vm.toString(referenceBuildVersion), ":ManagedOptimisticOracleV2")); - console.log("Reference Build Info Dir:", string.concat("old-builds/build-info-v", vm.toString(referenceBuildVersion))); + console.log( + "Reference Contract:", + string.concat("build-info-v", vm.toString(referenceBuildVersion), ":ManagedOptimisticOracleV2") + ); + console.log( + "Reference Build Info Dir:", string.concat("old-builds/build-info-v", vm.toString(referenceBuildVersion)) + ); // Check if we need to impersonate or can execute directly bool shouldImpersonate = actualUpgradeAdmin != derivedUpgradeAdmin; // Build common options for both modes Options memory opts; - opts.referenceContract = string.concat("build-info-v", vm.toString(referenceBuildVersion), ":ManagedOptimisticOracleV2"); + opts.referenceContract = + string.concat("build-info-v", vm.toString(referenceBuildVersion), ":ManagedOptimisticOracleV2"); opts.referenceBuildInfoDir = string.concat("old-builds/build-info-v", vm.toString(referenceBuildVersion)); opts.unsafeSkipStorageCheck = unsafeSkipStorageCheck; @@ -56,30 +62,25 @@ contract UpgradeManagedOptimisticOracleV2 is Script { console.log("\n=== IMPERSONATION MODE ==="); console.log("MNEMONIC does not correspond to actual upgrade admin"); console.log("Deploying new implementation and generating upgrade transaction data"); - + // Deploy the new implementation console.log("\n=== DEPLOYING NEW IMPLEMENTATION ==="); vm.startBroadcast(upgradeAdminPrivateKey); - address newImplementationAddress = Upgrades.prepareUpgrade( - "ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2", - opts - ); + address newImplementationAddress = + Upgrades.prepareUpgrade("ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2", opts); vm.stopBroadcast(); console.log("New Implementation Address:", newImplementationAddress); - + // Generate upgrade transaction data - bytes memory upgradeData = abi.encodeWithSignature( - "upgradeToAndCall(address,bytes)", - newImplementationAddress, - bytes("") - ); + bytes memory upgradeData = + abi.encodeWithSignature("upgradeToAndCall(address,bytes)", newImplementationAddress, bytes("")); // Simulate the upgrade transaction to verify it would succeed console.log("\n=== SIMULATING UPGRADE TRANSACTION ==="); vm.startPrank(actualUpgradeAdmin); (bool success, bytes memory result) = proxyAddress.call(upgradeData); vm.stopPrank(); - + if (success) { console.log("Upgrade simulation successful!"); } else { @@ -96,7 +97,6 @@ contract UpgradeManagedOptimisticOracleV2 is Script { console.log("Chain ID:", block.chainid); console.log("\nUse this transaction data in your multisig wallet to execute the upgrade."); console.log("The new implementation has been deployed at:", newImplementationAddress); - } else { // Direct mode - execute upgrade directly console.log("\n=== DIRECT EXECUTION MODE ==="); @@ -108,10 +108,7 @@ contract UpgradeManagedOptimisticOracleV2 is Script { // Upgrade the proxy Upgrades.upgradeProxy( - proxyAddress, - "ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2", - bytes(""), - opts + proxyAddress, "ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2", bytes(""), opts ); vm.stopBroadcast(); @@ -125,8 +122,6 @@ contract UpgradeManagedOptimisticOracleV2 is Script { } } - - /** * @notice Derives the upgrade admin's private key from the mnemonic * @return upgradeAdminPrivateKey The derived private key for the upgrade admin From adf08aa52433053600ea69d96e3f6a2894d8fe54 Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Tue, 19 Aug 2025 09:10:15 +0000 Subject: [PATCH 06/17] revert: deploy script fixes Signed-off-by: Reinis Martinsons --- script/DeployManagedOptimisticOracleV2.s.sol | 22 +++++++++----------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/script/DeployManagedOptimisticOracleV2.s.sol b/script/DeployManagedOptimisticOracleV2.s.sol index 0da2eab..2179850 100644 --- a/script/DeployManagedOptimisticOracleV2.s.sol +++ b/script/DeployManagedOptimisticOracleV2.s.sol @@ -84,18 +84,16 @@ contract DeployManagedOptimisticOracleV2 is Script { ManagedOptimisticOracleV2 proxy = ManagedOptimisticOracleV2( Upgrades.deployUUPSProxy( "ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2", - abi.encodeCall( - ManagedOptimisticOracleV2.initialize, - ( - defaultLiveness, - finderAddress, - defaultProposerWhitelist, - requesterWhitelist, - currencyBondRanges, - minimumLiveness, - configAdmin, - upgradeAdmin - ) + abi.encodeWithSelector( + ManagedOptimisticOracleV2.initialize.selector, + defaultLiveness, + finderAddress, + defaultProposerWhitelist, + requesterWhitelist, + currencyBondRanges, + minimumLiveness, + configAdmin, + upgradeAdmin ) ) ); From 0fbfc226f8f828638c55fc952c649e7d2b9c8cc6 Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Tue, 19 Aug 2025 09:21:30 +0000 Subject: [PATCH 07/17] fix: remove skipping storage check Signed-off-by: Reinis Martinsons --- script/README.md | 7 +++---- script/UpgradeManagedOptimisticOracleV2.s.sol | 6 ++---- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/script/README.md b/script/README.md index adf0c9c..aed323e 100644 --- a/script/README.md +++ b/script/README.md @@ -230,7 +230,6 @@ The `UpgradeManagedOptimisticOracleV2.s.sol` script upgrades the `ManagedOptimis | `MNEMONIC` | Yes | The mnemonic phrase for the upgrade admin wallet (uses 0 index address) | | `PROXY_ADDRESS` | Yes | Address of the existing proxy contract to upgrade | | `REFERENCE_BUILD_VERSION` | Yes | Integer version number to derive reference contract and build info dir (e.g., 1 for "build-info-v1:ManagedOptimisticOracleV2" and "old-builds/build-info-v1") | -| `UNSAFE_SKIP_STORAGE_CHECK` | No | Skip storage layout validation for local testing (defaults to false) | ### Usage Examples @@ -250,7 +249,7 @@ forge script script/UpgradeManagedOptimisticOracleV2.s.sol --rpc-url "YOUR_RPC_U - **UUPS upgradeable**: Uses UUPS (Universal Upgradeable Proxy Standard) pattern - **Mandatory reference validation**: Always uses reference contracts for upgrade safety validation -- **Optional storage check skip**: Supports skipping storage layout validation for local testing + - **Dual execution modes**: Supports both direct execution and multisig transaction data generation - **Upgrade simulation**: In multisig mode, simulates the upgrade transaction to verify it would succeed - **Automatic admin detection**: Automatically fetches the upgrade admin from the proxy contract @@ -269,9 +268,9 @@ forge script script/UpgradeManagedOptimisticOracleV2.s.sol --rpc-url "YOUR_RPC_U 4. **Upgrade Simulation**: In multisig mode, the script simulates the upgrade transaction using `vm.startPrank()` to impersonate the actual upgrade admin, ensuring the transaction would succeed before generating the multisig data. -5. **Storage Check Skip**: For local testing, you can skip storage layout validation by setting `UNSAFE_SKIP_STORAGE_CHECK=true`. -6. **Testing**: Always test upgrades on a forked mainnet or testnet before executing on mainnet. + +5. **Testing**: Always test upgrades on a forked mainnet or testnet before executing on mainnet. ### Etherscan Verification diff --git a/script/UpgradeManagedOptimisticOracleV2.s.sol b/script/UpgradeManagedOptimisticOracleV2.s.sol index d84d863..3c4a0c1 100644 --- a/script/UpgradeManagedOptimisticOracleV2.s.sol +++ b/script/UpgradeManagedOptimisticOracleV2.s.sol @@ -16,7 +16,7 @@ import {ManagedOptimisticOracleV2} from "../src/optimistic-oracle-v2/implementat * - MNEMONIC: Required. The mnemonic phrase for the upgrade admin wallet * - PROXY_ADDRESS: Required. Address of the existing proxy contract to upgrade * - REFERENCE_BUILD_VERSION: Required. Integer version number to derive reference contract and build info dir (e.g., 1 for "build-info-v1:ManagedOptimisticOracleV2" and "old-builds/build-info-v1") - * - UNSAFE_SKIP_STORAGE_CHECK: Optional. Skip storage layout validation for local testing (defaults to false) + */ contract UpgradeManagedOptimisticOracleV2 is Script { function run() external { @@ -32,8 +32,7 @@ contract UpgradeManagedOptimisticOracleV2 is Script { // Required reference build version for upgrade validation uint256 referenceBuildVersion = vm.envUint("REFERENCE_BUILD_VERSION"); - // Optional unsafe validation flags (use only for local/testing) - bool unsafeSkipStorageCheck = vm.envOr("UNSAFE_SKIP_STORAGE_CHECK", false); + // Log initial setup console.log("Derived Upgrade Admin:", derivedUpgradeAdmin); @@ -55,7 +54,6 @@ contract UpgradeManagedOptimisticOracleV2 is Script { opts.referenceContract = string.concat("build-info-v", vm.toString(referenceBuildVersion), ":ManagedOptimisticOracleV2"); opts.referenceBuildInfoDir = string.concat("old-builds/build-info-v", vm.toString(referenceBuildVersion)); - opts.unsafeSkipStorageCheck = unsafeSkipStorageCheck; if (shouldImpersonate) { // Multisig mode - deploy implementation and generate transaction data From 55aee827bb3edd11b69a7304c1ff42aa7e8855e6 Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Tue, 19 Aug 2025 09:29:32 +0000 Subject: [PATCH 08/17] fix: update readme Signed-off-by: Reinis Martinsons --- script/README.md | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/script/README.md b/script/README.md index aed323e..1892456 100644 --- a/script/README.md +++ b/script/README.md @@ -233,17 +233,12 @@ The `UpgradeManagedOptimisticOracleV2.s.sol` script upgrades the `ManagedOptimis ### Usage Examples -#### Direct Execution (MNEMONIC corresponds to upgrade admin) ```bash REFERENCE_BUILD_VERSION=1 \ forge script script/UpgradeManagedOptimisticOracleV2.s.sol --rpc-url "YOUR_RPC_URL" --broadcast ``` -#### Multisig Mode (MNEMONIC does not correspond to upgrade admin) -```bash -REFERENCE_BUILD_VERSION=1 \ -forge script script/UpgradeManagedOptimisticOracleV2.s.sol --rpc-url "YOUR_RPC_URL" -``` +**Note**: The script automatically detects whether the MNEMONIC corresponds to the actual upgrade admin and adjusts its behavior accordingly. ### Features @@ -318,7 +313,7 @@ forge verify-contract src/optimistic-oracle-v2/impl 2. **Generate transaction data and deploy implementation**: ```bash - forge script script/UpgradeManagedOptimisticOracleV2.s.sol --rpc-url "YOUR_RPC_URL" + forge script script/UpgradeManagedOptimisticOracleV2.s.sol --rpc-url "YOUR_RPC_URL" --broadcast ``` The script will: From 9246550faf9a2f5e559eb70713bcfd1651c99556 Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Tue, 19 Aug 2025 09:39:20 +0000 Subject: [PATCH 09/17] fix: update readme Signed-off-by: Reinis Martinsons --- script/README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/script/README.md b/script/README.md index 1892456..05f758a 100644 --- a/script/README.md +++ b/script/README.md @@ -234,7 +234,6 @@ The `UpgradeManagedOptimisticOracleV2.s.sol` script upgrades the `ManagedOptimis ### Usage Examples ```bash -REFERENCE_BUILD_VERSION=1 \ forge script script/UpgradeManagedOptimisticOracleV2.s.sol --rpc-url "YOUR_RPC_URL" --broadcast ``` @@ -244,7 +243,6 @@ forge script script/UpgradeManagedOptimisticOracleV2.s.sol --rpc-url "YOUR_RPC_U - **UUPS upgradeable**: Uses UUPS (Universal Upgradeable Proxy Standard) pattern - **Mandatory reference validation**: Always uses reference contracts for upgrade safety validation - - **Dual execution modes**: Supports both direct execution and multisig transaction data generation - **Upgrade simulation**: In multisig mode, simulates the upgrade transaction to verify it would succeed - **Automatic admin detection**: Automatically fetches the upgrade admin from the proxy contract @@ -263,8 +261,6 @@ forge script script/UpgradeManagedOptimisticOracleV2.s.sol --rpc-url "YOUR_RPC_U 4. **Upgrade Simulation**: In multisig mode, the script simulates the upgrade transaction using `vm.startPrank()` to impersonate the actual upgrade admin, ensuring the transaction would succeed before generating the multisig data. - - 5. **Testing**: Always test upgrades on a forked mainnet or testnet before executing on mainnet. ### Etherscan Verification @@ -328,4 +324,4 @@ forge verify-contract src/optimistic-oracle-v2/impl ```bash # Use the new implementation address from the script output forge verify-contract 0xNEW_IMPLEMENTATION_ADDRESS src/optimistic-oracle-v2/implementation/ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2 --chain-id 137 --etherscan-api-key - ``` \ No newline at end of file + ``` \ No newline at end of file From a3034ba997f2a234b13cd40a927373261cf8c8e5 Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Tue, 19 Aug 2025 09:48:31 +0000 Subject: [PATCH 10/17] fix: upgrade prerequisites in readme Signed-off-by: Reinis Martinsons --- script/README.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/script/README.md b/script/README.md index 05f758a..fb62ef2 100644 --- a/script/README.md +++ b/script/README.md @@ -223,6 +223,35 @@ The `ManagedOptimisticOracleV2` contract: The `UpgradeManagedOptimisticOracleV2.s.sol` script upgrades the `ManagedOptimisticOracleV2` contract implementation using OpenZeppelin Upgrades library. +### Prerequisites + +The old build info should normally be created and committed at the time of deployment. If this was missed, you need to generate it before running the upgrade script: + +```bash +# 1. Checkout the exact commit corresponding to the previous version deployment +git checkout + +# 2. Create a new branch for the build info +git checkout -b add-build-info-v1 + +# 3. Generate build info for the previous version (e.g., v1) +forge build --build-info --build-info-path old-builds/build-info-v1 + +# 4. Add and commit the build info to the repository +git add old-builds/build-info-v1/ +git commit -m "Add build info for version v1" + +# 5. Push the branch and create a PR +git push origin add-build-info-v1 +# Create PR on GitHub/GitLab, get review, and merge + +# 6. Switch back to the latest branch for the upgrade +git checkout master # or your latest development branch +git pull origin master # ensure you have the latest changes +``` + +**Note**: The `REFERENCE_BUILD_VERSION` environment variable should match the version number in the build info path (e.g., `REFERENCE_BUILD_VERSION=1` for `old-builds/build-info-v1`). + ### Environment Variables | Variable | Required | Description | From f7d83cc4f5f7373daea00222297ac9b897ae03c4 Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Tue, 19 Aug 2025 09:53:07 +0000 Subject: [PATCH 11/17] fix: update readme Signed-off-by: Reinis Martinsons --- script/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/script/README.md b/script/README.md index fb62ef2..c181cca 100644 --- a/script/README.md +++ b/script/README.md @@ -231,15 +231,15 @@ The old build info should normally be created and committed at the time of deplo # 1. Checkout the exact commit corresponding to the previous version deployment git checkout -# 2. Create a new branch for the build info +# 2. Create a new branch for the previous version build info (e.g., for v1) git checkout -b add-build-info-v1 -# 3. Generate build info for the previous version (e.g., v1) +# 3. Generate build info for the previous version forge build --build-info --build-info-path old-builds/build-info-v1 # 4. Add and commit the build info to the repository git add old-builds/build-info-v1/ -git commit -m "Add build info for version v1" +git commit -s -m "fix: add build info for version v1" # 5. Push the branch and create a PR git push origin add-build-info-v1 From f28fd4050335e9c938df1259b3bf7bda6e3acaca Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Tue, 19 Aug 2025 09:54:50 +0000 Subject: [PATCH 12/17] fix: update readme Signed-off-by: Reinis Martinsons --- script/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/README.md b/script/README.md index c181cca..b231cd9 100644 --- a/script/README.md +++ b/script/README.md @@ -235,7 +235,7 @@ git checkout git checkout -b add-build-info-v1 # 3. Generate build info for the previous version -forge build --build-info --build-info-path old-builds/build-info-v1 +forge clean && forge build --build-info --build-info-path old-builds/build-info-v1 # 4. Add and commit the build info to the repository git add old-builds/build-info-v1/ From 46447a3f12310b4d75c17a0446cd4e64a68dd8fc Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Tue, 19 Aug 2025 09:55:40 +0000 Subject: [PATCH 13/17] fix: update readme Signed-off-by: Reinis Martinsons --- script/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/README.md b/script/README.md index b231cd9..9f74c3f 100644 --- a/script/README.md +++ b/script/README.md @@ -243,7 +243,7 @@ git commit -s -m "fix: add build info for version v1" # 5. Push the branch and create a PR git push origin add-build-info-v1 -# Create PR on GitHub/GitLab, get review, and merge +# Create PR on GitHub, get review, and merge # 6. Switch back to the latest branch for the upgrade git checkout master # or your latest development branch From 8b21d61f391bff7d87733136ad4c0946959e693b Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Tue, 19 Aug 2025 09:55:22 +0000 Subject: [PATCH 14/17] fix: rebuild in readme Signed-off-by: Reinis Martinsons --- script/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/script/README.md b/script/README.md index 9f74c3f..85fc1c0 100644 --- a/script/README.md +++ b/script/README.md @@ -248,6 +248,9 @@ git push origin add-build-info-v1 # 6. Switch back to the latest branch for the upgrade git checkout master # or your latest development branch git pull origin master # ensure you have the latest changes + +# 7. Clean and rebuild for the upgrade script +forge clean && forge build ``` **Note**: The `REFERENCE_BUILD_VERSION` environment variable should match the version number in the build info path (e.g., `REFERENCE_BUILD_VERSION=1` for `old-builds/build-info-v1`). From db82ed2eb3f0264e9738b410cb5d8b421eb80c2b Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Tue, 19 Aug 2025 10:18:10 +0000 Subject: [PATCH 15/17] fix: forge fmt Signed-off-by: Reinis Martinsons --- script/UpgradeManagedOptimisticOracleV2.s.sol | 3 --- 1 file changed, 3 deletions(-) diff --git a/script/UpgradeManagedOptimisticOracleV2.s.sol b/script/UpgradeManagedOptimisticOracleV2.s.sol index 3c4a0c1..905ade4 100644 --- a/script/UpgradeManagedOptimisticOracleV2.s.sol +++ b/script/UpgradeManagedOptimisticOracleV2.s.sol @@ -16,7 +16,6 @@ import {ManagedOptimisticOracleV2} from "../src/optimistic-oracle-v2/implementat * - MNEMONIC: Required. The mnemonic phrase for the upgrade admin wallet * - PROXY_ADDRESS: Required. Address of the existing proxy contract to upgrade * - REFERENCE_BUILD_VERSION: Required. Integer version number to derive reference contract and build info dir (e.g., 1 for "build-info-v1:ManagedOptimisticOracleV2" and "old-builds/build-info-v1") - */ contract UpgradeManagedOptimisticOracleV2 is Script { function run() external { @@ -32,8 +31,6 @@ contract UpgradeManagedOptimisticOracleV2 is Script { // Required reference build version for upgrade validation uint256 referenceBuildVersion = vm.envUint("REFERENCE_BUILD_VERSION"); - - // Log initial setup console.log("Derived Upgrade Admin:", derivedUpgradeAdmin); console.log("Actual Upgrade Admin:", actualUpgradeAdmin); From dcdc7a29f942a67b55e9011b2c72752f0c1e015a Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Tue, 19 Aug 2025 10:21:48 +0000 Subject: [PATCH 16/17] fix: upgrade script naming Signed-off-by: Reinis Martinsons --- script/UpgradeManagedOptimisticOracleV2.s.sol | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/script/UpgradeManagedOptimisticOracleV2.s.sol b/script/UpgradeManagedOptimisticOracleV2.s.sol index 905ade4..28dad71 100644 --- a/script/UpgradeManagedOptimisticOracleV2.s.sol +++ b/script/UpgradeManagedOptimisticOracleV2.s.sol @@ -19,21 +19,21 @@ import {ManagedOptimisticOracleV2} from "../src/optimistic-oracle-v2/implementat */ contract UpgradeManagedOptimisticOracleV2 is Script { function run() external { - uint256 upgradeAdminPrivateKey = _getUpgradeAdminPrivateKey(); - address derivedUpgradeAdmin = vm.addr(upgradeAdminPrivateKey); + uint256 deployerPrivateKey = _getDeployerPrivateKey(); + address deployerAddress = vm.addr(deployerPrivateKey); // Get the proxy address to upgrade address proxyAddress = vm.envAddress("PROXY_ADDRESS"); - // Fetch the actual upgrade admin from the contract - address actualUpgradeAdmin = ManagedOptimisticOracleV2(proxyAddress).owner(); + // Fetch the upgrade admin from the contract + address upgradeAdmin = ManagedOptimisticOracleV2(proxyAddress).owner(); // Required reference build version for upgrade validation uint256 referenceBuildVersion = vm.envUint("REFERENCE_BUILD_VERSION"); // Log initial setup - console.log("Derived Upgrade Admin:", derivedUpgradeAdmin); - console.log("Actual Upgrade Admin:", actualUpgradeAdmin); + console.log("Deployer Address:", deployerAddress); + console.log("Upgrade Admin:", upgradeAdmin); console.log("Proxy Address:", proxyAddress); console.log( "Reference Contract:", @@ -44,7 +44,7 @@ contract UpgradeManagedOptimisticOracleV2 is Script { ); // Check if we need to impersonate or can execute directly - bool shouldImpersonate = actualUpgradeAdmin != derivedUpgradeAdmin; + bool shouldImpersonate = upgradeAdmin != deployerAddress; // Build common options for both modes Options memory opts; @@ -55,12 +55,12 @@ contract UpgradeManagedOptimisticOracleV2 is Script { if (shouldImpersonate) { // Multisig mode - deploy implementation and generate transaction data console.log("\n=== IMPERSONATION MODE ==="); - console.log("MNEMONIC does not correspond to actual upgrade admin"); + console.log("MNEMONIC does not correspond to upgrade admin"); console.log("Deploying new implementation and generating upgrade transaction data"); // Deploy the new implementation console.log("\n=== DEPLOYING NEW IMPLEMENTATION ==="); - vm.startBroadcast(upgradeAdminPrivateKey); + vm.startBroadcast(deployerPrivateKey); address newImplementationAddress = Upgrades.prepareUpgrade("ManagedOptimisticOracleV2.sol:ManagedOptimisticOracleV2", opts); vm.stopBroadcast(); @@ -72,7 +72,7 @@ contract UpgradeManagedOptimisticOracleV2 is Script { // Simulate the upgrade transaction to verify it would succeed console.log("\n=== SIMULATING UPGRADE TRANSACTION ==="); - vm.startPrank(actualUpgradeAdmin); + vm.startPrank(upgradeAdmin); (bool success, bytes memory result) = proxyAddress.call(upgradeData); vm.stopPrank(); @@ -88,18 +88,18 @@ contract UpgradeManagedOptimisticOracleV2 is Script { console.log("\n=== MULTISIG UPGRADE TRANSACTION DATA ==="); console.log("Target Contract:", proxyAddress); console.log("Transaction Data:", vm.toString(upgradeData)); - console.log("Upgrade Admin:", actualUpgradeAdmin); + console.log("Upgrade Admin:", upgradeAdmin); console.log("Chain ID:", block.chainid); console.log("\nUse this transaction data in your multisig wallet to execute the upgrade."); console.log("The new implementation has been deployed at:", newImplementationAddress); } else { // Direct mode - execute upgrade directly console.log("\n=== DIRECT EXECUTION MODE ==="); - console.log("MNEMONIC corresponds to actual upgrade admin"); + console.log("MNEMONIC corresponds to upgrade admin"); console.log("Executing upgrade directly"); // Start broadcasting transactions with the derived private key - vm.startBroadcast(upgradeAdminPrivateKey); + vm.startBroadcast(deployerPrivateKey); // Upgrade the proxy Upgrades.upgradeProxy( @@ -113,15 +113,15 @@ contract UpgradeManagedOptimisticOracleV2 is Script { console.log("Proxy Address:", proxyAddress); console.log("New Implementation Address:", Upgrades.getImplementationAddress(proxyAddress)); console.log("Chain ID:", block.chainid); - console.log("Upgrade Admin:", actualUpgradeAdmin); + console.log("Upgrade Admin:", upgradeAdmin); } } /** - * @notice Derives the upgrade admin's private key from the mnemonic - * @return upgradeAdminPrivateKey The derived private key for the upgrade admin + * @notice Derives the deployer's private key from the mnemonic + * @return deployerPrivateKey The derived private key for the deployer */ - function _getUpgradeAdminPrivateKey() internal view returns (uint256) { + function _getDeployerPrivateKey() internal view returns (uint256) { string memory mnemonic = vm.envString("MNEMONIC"); // Derive the 0 index address from mnemonic return vm.deriveKey(mnemonic, 0); From 3e9716dfb6b74da12f05cf35f65774b373e82655 Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Tue, 19 Aug 2025 10:33:56 +0000 Subject: [PATCH 17/17] fix: avoid duplication Signed-off-by: Reinis Martinsons --- script/UpgradeManagedOptimisticOracleV2.s.sol | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/script/UpgradeManagedOptimisticOracleV2.s.sol b/script/UpgradeManagedOptimisticOracleV2.s.sol index 28dad71..b5880aa 100644 --- a/script/UpgradeManagedOptimisticOracleV2.s.sol +++ b/script/UpgradeManagedOptimisticOracleV2.s.sol @@ -31,27 +31,22 @@ contract UpgradeManagedOptimisticOracleV2 is Script { // Required reference build version for upgrade validation uint256 referenceBuildVersion = vm.envUint("REFERENCE_BUILD_VERSION"); + // Build upgrade validation options + Options memory opts; + opts.referenceContract = + string.concat("build-info-v", vm.toString(referenceBuildVersion), ":ManagedOptimisticOracleV2"); + opts.referenceBuildInfoDir = string.concat("old-builds/build-info-v", vm.toString(referenceBuildVersion)); + // Log initial setup console.log("Deployer Address:", deployerAddress); console.log("Upgrade Admin:", upgradeAdmin); console.log("Proxy Address:", proxyAddress); - console.log( - "Reference Contract:", - string.concat("build-info-v", vm.toString(referenceBuildVersion), ":ManagedOptimisticOracleV2") - ); - console.log( - "Reference Build Info Dir:", string.concat("old-builds/build-info-v", vm.toString(referenceBuildVersion)) - ); + console.log("Reference Contract:", opts.referenceContract); + console.log("Reference Build Info Dir:", opts.referenceBuildInfoDir); // Check if we need to impersonate or can execute directly bool shouldImpersonate = upgradeAdmin != deployerAddress; - // Build common options for both modes - Options memory opts; - opts.referenceContract = - string.concat("build-info-v", vm.toString(referenceBuildVersion), ":ManagedOptimisticOracleV2"); - opts.referenceBuildInfoDir = string.concat("old-builds/build-info-v", vm.toString(referenceBuildVersion)); - if (shouldImpersonate) { // Multisig mode - deploy implementation and generate transaction data console.log("\n=== IMPERSONATION MODE ===");