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 diff --git a/script/README.md b/script/README.md index 693ff6c..85fc1c0 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,143 @@ 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. + +### 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 previous version build info (e.g., for v1) +git checkout -b add-build-info-v1 + +# 3. Generate build info for the previous version +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/ +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, 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 + +# 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`). + +### 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") | + +### Usage Examples + +```bash +forge script script/UpgradeManagedOptimisticOracleV2.s.sol --rpc-url "YOUR_RPC_URL" --broadcast +``` + +**Note**: The script automatically detects whether the MNEMONIC corresponds to the actual upgrade admin and adjusts its behavior accordingly. + +### Features + +- **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 +- **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. **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" --broadcast + ``` + + 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 diff --git a/script/UpgradeManagedOptimisticOracleV2.s.sol b/script/UpgradeManagedOptimisticOracleV2.s.sol new file mode 100644 index 0000000..b5880aa --- /dev/null +++ b/script/UpgradeManagedOptimisticOracleV2.s.sol @@ -0,0 +1,124 @@ +// 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") + */ +contract UpgradeManagedOptimisticOracleV2 is Script { + function run() external { + uint256 deployerPrivateKey = _getDeployerPrivateKey(); + address deployerAddress = vm.addr(deployerPrivateKey); + + // Get the proxy address to upgrade + address proxyAddress = vm.envAddress("PROXY_ADDRESS"); + + // 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"); + + // 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:", opts.referenceContract); + console.log("Reference Build Info Dir:", opts.referenceBuildInfoDir); + + // Check if we need to impersonate or can execute directly + bool shouldImpersonate = upgradeAdmin != deployerAddress; + + if (shouldImpersonate) { + // Multisig mode - deploy implementation and generate transaction data + console.log("\n=== IMPERSONATION MODE ==="); + 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(deployerPrivateKey); + 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(upgradeAdmin); + (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:", 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 upgrade admin"); + console.log("Executing upgrade directly"); + + // Start broadcasting transactions with the derived private key + vm.startBroadcast(deployerPrivateKey); + + // 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:", upgradeAdmin); + } + } + + /** + * @notice Derives the deployer's private key from the mnemonic + * @return deployerPrivateKey The derived private key for the deployer + */ + function _getDeployerPrivateKey() internal view returns (uint256) { + string memory mnemonic = vm.envString("MNEMONIC"); + // Derive the 0 index address from mnemonic + return vm.deriveKey(mnemonic, 0); + } +}