Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save coffeexcoin/8e56c72fdc1d3af809d8107c615daf6b to your computer and use it in GitHub Desktop.
Save coffeexcoin/8e56c72fdc1d3af809d8107c615daf6b to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.21+commit.d9974bed.js&optimize=false&runs=200&gist=
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)
pragma solidity ^0.8.20;
/**
* @dev This is the interface that {BeaconProxy} expects of its beacon.
*/
interface IBeacon {
/**
* @dev Must return an address that can be used as a delegate call target.
*
* {UpgradeableBeacon} will check that this address is a contract.
*/
function implementation() external view returns (address);
}
{
"id": "e5b79be88e045dbe08556fd06d9218f2",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.21",
"solcLongVersion": "0.8.21+commit.d9974bed",
"input": {
"language": "Solidity",
"sources": {
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.20;\n\nimport {Proxy} from \"../Proxy.sol\";\nimport {ERC1967Utils} from \"./ERC1967Utils.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy {\n /**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n * encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n *\n * Requirements:\n *\n * - If `data` is empty, `msg.value` must be zero.\n */\n constructor(address implementation, bytes memory _data) payable {\n ERC1967Utils.upgradeToAndCall(implementation, _data);\n }\n\n /**\n * @dev Returns the current implementation address.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n */\n function _implementation() internal view virtual override returns (address) {\n return ERC1967Utils.getImplementation();\n }\n}\n"
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\n\npragma solidity ^0.8.20;\n\nimport {IBeacon} from \"../beacon/IBeacon.sol\";\nimport {Address} from \"../../utils/Address.sol\";\nimport {StorageSlot} from \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n */\nlibrary ERC1967Utils {\n // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\n // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev The `implementation` of the proxy is invalid.\n */\n error ERC1967InvalidImplementation(address implementation);\n\n /**\n * @dev The `admin` of the proxy is invalid.\n */\n error ERC1967InvalidAdmin(address admin);\n\n /**\n * @dev The `beacon` of the proxy is invalid.\n */\n error ERC1967InvalidBeacon(address beacon);\n\n /**\n * @dev An upgrade function sees `msg.value > 0` that may be lost.\n */\n error ERC1967NonPayable();\n\n /**\n * @dev Returns the current implementation address.\n */\n function getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n if (newImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(newImplementation);\n }\n StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Performs implementation upgrade with additional setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-Upgraded} event.\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n\n if (data.length > 0) {\n Address.functionDelegateCall(newImplementation, data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */\n function getAdmin() internal view returns (address) {\n return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n if (newAdmin == address(0)) {\n revert ERC1967InvalidAdmin(address(0));\n }\n StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {IERC1967-AdminChanged} event.\n */\n function changeAdmin(address newAdmin) internal {\n emit AdminChanged(getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n if (newBeacon.code.length == 0) {\n revert ERC1967InvalidBeacon(newBeacon);\n }\n\n StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\n\n address beaconImplementation = IBeacon(newBeacon).implementation();\n if (beaconImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(beaconImplementation);\n }\n }\n\n /**\n * @dev Change the beacon and trigger a setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-BeaconUpgraded} event.\n *\n * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n * efficiency.\n */\n function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n\n if (data.length > 0) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n * if an upgrade doesn't perform an initialization call.\n */\n function _checkNonPayable() private {\n if (msg.value > 0) {\n revert ERC1967NonPayable();\n }\n }\n}\n"
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n * function and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n}\n"
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(newImplementation.code.length > 0);\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n}\n"
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev The ETH balance of the account is not enough to perform the operation.\n */\n error AddressInsufficientBalance(address account);\n\n /**\n * @dev There's no code at `target` (it is not a contract).\n */\n error AddressEmptyCode(address target);\n\n /**\n * @dev A call to an address target failed. The target may have reverted.\n */\n error FailedInnerCall();\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n if (address(this).balance < amount) {\n revert AddressInsufficientBalance(address(this));\n }\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n if (!success) {\n revert FailedInnerCall();\n }\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason or custom error, it is bubbled\n * up by this function (like regular Solidity function calls). However, if\n * the call reverted with no returned reason, this function reverts with a\n * {FailedInnerCall} error.\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n if (address(this).balance < value) {\n revert AddressInsufficientBalance(address(this));\n }\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n * unsuccessful call.\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata\n ) internal view returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n // only check if target is a contract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n if (returndata.length == 0 && target.code.length == 0) {\n revert AddressEmptyCode(target);\n }\n return returndata;\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n * revert reason or with a default {FailedInnerCall} error.\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n return returndata;\n }\n }\n\n /**\n * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\n */\n function _revert(bytes memory returndata) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert FailedInnerCall();\n }\n }\n}\n"
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {UpgradeableBeacon} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
}
}
},
"output": {
"contracts": {
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol": {
"ERC1967Proxy": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"stateMutability": "payable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"stateMutability": "payable",
"type": "fallback"
}
],
"devdoc": {
"details": "This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.",
"errors": {
"AddressEmptyCode(address)": [
{
"details": "There's no code at `target` (it is not a contract)."
}
],
"ERC1967InvalidImplementation(address)": [
{
"details": "The `implementation` of the proxy is invalid."
}
],
"ERC1967NonPayable()": [
{
"details": "An upgrade function sees `msg.value > 0` that may be lost."
}
],
"FailedInnerCall()": [
{
"details": "A call to an address target failed. The target may have reverted."
}
]
},
"events": {
"Upgraded(address)": {
"details": "Emitted when the implementation is upgraded."
}
},
"kind": "dev",
"methods": {
"constructor": {
"details": "Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero."
}
},
"version": 1
},
"evm": {
"assembly": " /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":599:1715 contract ERC1967Proxy is Proxy {... */\n mstore(0x40, 0x80)\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":1080:1213 constructor(address implementation, bytes memory _data) payable {... */\n mload(0x40)\n sub(codesize, bytecodeSize)\n dup1\n bytecodeSize\n dup4\n codecopy\n dup2\n dup2\n add\n 0x40\n mstore\n dup2\n add\n swap1\n tag_1\n swap2\n swap1\n tag_2\n jump\t// in\ntag_1:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":1154:1206 ERC1967Utils.upgradeToAndCall(implementation, _data) */\n tag_5\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":1184:1198 implementation */\n dup3\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":1200:1205 _data */\n dup3\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":1154:1183 ERC1967Utils.upgradeToAndCall */\n shl(0x20, tag_6)\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":1154:1206 ERC1967Utils.upgradeToAndCall(implementation, _data) */\n 0x20\n shr\n jump\t// in\ntag_5:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":1080:1213 constructor(address implementation, bytes memory _data) payable {... */\n pop\n pop\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":599:1715 contract ERC1967Proxy is Proxy {... */\n jump(tag_7)\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2779:3114 function upgradeToAndCall(address newImplementation, bytes memory data) internal {... */\ntag_6:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2870:2907 _setImplementation(newImplementation) */\n tag_9\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2889:2906 newImplementation */\n dup3\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2870:2888 _setImplementation */\n shl(0x20, tag_10)\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2870:2907 _setImplementation(newImplementation) */\n 0x20\n shr\n jump\t// in\ntag_9:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2931:2948 newImplementation */\n dup2\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2922:2949 Upgraded(newImplementation) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log2\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2978:2979 0 */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2964:2968 data */\n dup2\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2964:2975 data.length */\n mload\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2964:2979 data.length > 0 */\n gt\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2960:3108 if (data.length > 0) {... */\n iszero\n tag_11\n jumpi\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2995:3048 Address.functionDelegateCall(newImplementation, data) */\n tag_12\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":3024:3041 newImplementation */\n dup3\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":3043:3047 data */\n dup3\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2995:3023 Address.functionDelegateCall */\n shl(0x20, tag_13)\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2995:3048 Address.functionDelegateCall(newImplementation, data) */\n 0x20\n shr\n jump\t// in\ntag_12:\n pop\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2960:3108 if (data.length > 0) {... */\n jump(tag_14)\ntag_11:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":3079:3097 _checkNonPayable() */\n tag_15\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":3079:3095 _checkNonPayable */\n shl(0x20, tag_16)\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":3079:3097 _checkNonPayable() */\n 0x20\n shr\n jump\t// in\ntag_15:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2960:3108 if (data.length > 0) {... */\ntag_14:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2779:3114 function upgradeToAndCall(address newImplementation, bytes memory data) internal {... */\n pop\n pop\n jump\t// out\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2186:2467 function _setImplementation(address newImplementation) private {... */\ntag_10:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2296:2297 0 */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2263:2280 newImplementation */\n dup2\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2263:2292 newImplementation.code.length */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n extcodesize\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2263:2297 newImplementation.code.length == 0 */\n sub\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2259:2378 if (newImplementation.code.length == 0) {... */\n tag_18\n jumpi\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2349:2366 newImplementation */\n dup1\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2320:2367 ERC1967InvalidImplementation(newImplementation) */\n mload(0x40)\n 0x4c9c8ce300000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_19\n swap2\n swap1\n tag_20\n jump\t// in\ntag_19:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2259:2378 if (newImplementation.code.length == 0) {... */\ntag_18:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2443:2460 newImplementation */\n dup1\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2387:2434 StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT) */\n tag_21\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":1327:1393 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc */\n 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2414:2433 IMPLEMENTATION_SLOT */\n 0x00\n shl\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2387:2413 StorageSlot.getAddressSlot */\n shl(0x20, tag_22)\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2387:2434 StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT) */\n 0x20\n shr\n jump\t// in\ntag_21:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2387:2440 StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value */\n 0x00\n add\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2387:2460 StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2186:2467 function _setImplementation(address newImplementation) private {... */\n pop\n jump\t// out\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4106:4359 function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {... */\ntag_13:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4189:4201 bytes memory */\n 0x60\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4214:4226 bool success */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4228:4251 bytes memory returndata */\n dup1\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4255:4261 target */\n dup5\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4255:4274 target.delegatecall */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4275:4279 data */\n dup5\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4255:4280 target.delegatecall(data) */\n mload(0x40)\n tag_24\n swap2\n swap1\n tag_25\n jump\t// in\ntag_24:\n 0x00\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n gas\n delegatecall\n swap2\n pop\n pop\n returndatasize\n dup1\n 0x00\n dup2\n eq\n tag_28\n jumpi\n mload(0x40)\n swap2\n pop\n and(add(returndatasize, 0x3f), not(0x1f))\n dup3\n add\n 0x40\n mstore\n returndatasize\n dup3\n mstore\n returndatasize\n 0x00\n 0x20\n dup5\n add\n returndatacopy\n jump(tag_27)\ntag_28:\n 0x60\n swap2\n pop\ntag_27:\n pop\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4213:4280 (bool success, bytes memory returndata) = target.delegatecall(data) */\n swap2\n pop\n swap2\n pop\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4297:4352 verifyCallResultFromTarget(target, success, returndata) */\n tag_29\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4324:4330 target */\n dup6\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4332:4339 success */\n dup4\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4341:4351 returndata */\n dup4\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4297:4323 verifyCallResultFromTarget */\n shl(0x20, tag_30)\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4297:4352 verifyCallResultFromTarget(target, success, returndata) */\n 0x20\n shr\n jump\t// in\ntag_29:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4290:4352 return verifyCallResultFromTarget(target, success, returndata) */\n swap3\n pop\n pop\n pop\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4106:4359 function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6598:6720 function _checkNonPayable() private {... */\ntag_16:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6660:6661 0 */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6648:6657 msg.value */\n callvalue\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6648:6661 msg.value > 0 */\n gt\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6644:6714 if (msg.value > 0) {... */\n iszero\n tag_32\n jumpi\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6684:6703 ERC1967NonPayable() */\n mload(0x40)\n 0xb398979f00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6644:6714 if (msg.value > 0) {... */\ntag_32:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":6598:6720 function _checkNonPayable() private {... */\n jump\t// out\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1684:1874 function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {... */\ntag_22:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1745:1766 AddressSlot storage r */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1854:1858 slot */\n dup2\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1844:1858 r.slot := slot */\n swap1\n pop\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1684:1874 function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4625:5207 function verifyCallResultFromTarget(... */\ntag_30:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4769:4781 bytes memory */\n 0x60\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4798:4805 success */\n dup3\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4793:5201 if (!success) {... */\n tag_35\n jumpi\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4821:4840 _revert(returndata) */\n tag_36\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4829:4839 returndata */\n dup3\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4821:4828 _revert */\n shl(0x20, tag_37)\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4821:4840 _revert(returndata) */\n 0x20\n shr\n jump\t// in\ntag_36:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4793:5201 if (!success) {... */\n jump(tag_38)\ntag_35:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5066:5067 0 */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5055 returndata */\n dup3\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5062 returndata.length */\n mload\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5067 returndata.length == 0 */\n eq\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5094 returndata.length == 0 && target.code.length == 0 */\n dup1\n iszero\n tag_39\n jumpi\n pop\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5093:5094 0 */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5071:5077 target */\n dup5\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5071:5089 target.code.length */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n extcodesize\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5071:5094 target.code.length == 0 */\n eq\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5045:5094 returndata.length == 0 && target.code.length == 0 */\ntag_39:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5041:5160 if (returndata.length == 0 && target.code.length == 0) {... */\n iszero\n tag_40\n jumpi\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5138:5144 target */\n dup4\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5121:5145 AddressEmptyCode(target) */\n mload(0x40)\n 0x9996b31500000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_41\n swap2\n swap1\n tag_20\n jump\t// in\ntag_41:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5041:5160 if (returndata.length == 0 && target.code.length == 0) {... */\ntag_40:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5180:5190 returndata */\n dup2\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5173:5190 return returndata */\n swap1\n pop\n jump(tag_34)\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4793:5201 if (!success) {... */\ntag_38:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":4625:5207 function verifyCallResultFromTarget(... */\ntag_34:\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5743:6259 function _revert(bytes memory returndata) private pure {... */\ntag_37:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5894:5895 0 */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5874:5884 returndata */\n dup2\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5874:5891 returndata.length */\n mload\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5874:5895 returndata.length > 0 */\n gt\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5870:6253 if (returndata.length > 0) {... */\n iszero\n tag_43\n jumpi\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":6102:6112 returndata */\n dup1\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":6096:6113 mload(returndata) */\n mload\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":6158:6173 returndata_size */\n dup1\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":6145:6155 returndata */\n dup3\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":6141:6143 32 */\n 0x20\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":6137:6156 add(32, returndata) */\n add\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":6130:6174 revert(add(32, returndata), returndata_size) */\n revert\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":5870:6253 if (returndata.length > 0) {... */\ntag_43:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":6225:6242 FailedInnerCall() */\n mload(0x40)\n 0x1425ea4200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"#utility.yul\":7:82 */\ntag_45:\n /* \"#utility.yul\":40:46 */\n 0x00\n /* \"#utility.yul\":73:75 */\n 0x40\n /* \"#utility.yul\":67:76 */\n mload\n /* \"#utility.yul\":57:76 */\n swap1\n pop\n /* \"#utility.yul\":7:82 */\n swap1\n jump\t// out\n /* \"#utility.yul\":88:205 */\ntag_46:\n /* \"#utility.yul\":197:198 */\n 0x00\n /* \"#utility.yul\":194:195 */\n dup1\n /* \"#utility.yul\":187:199 */\n revert\n /* \"#utility.yul\":211:328 */\ntag_47:\n /* \"#utility.yul\":320:321 */\n 0x00\n /* \"#utility.yul\":317:318 */\n dup1\n /* \"#utility.yul\":310:322 */\n revert\n /* \"#utility.yul\":334:460 */\ntag_48:\n /* \"#utility.yul\":371:378 */\n 0x00\n /* \"#utility.yul\":411:453 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":404:409 */\n dup3\n /* \"#utility.yul\":400:454 */\n and\n /* \"#utility.yul\":389:454 */\n swap1\n pop\n /* \"#utility.yul\":334:460 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":466:562 */\ntag_49:\n /* \"#utility.yul\":503:510 */\n 0x00\n /* \"#utility.yul\":532:556 */\n tag_72\n /* \"#utility.yul\":550:555 */\n dup3\n /* \"#utility.yul\":532:556 */\n tag_48\n jump\t// in\ntag_72:\n /* \"#utility.yul\":521:556 */\n swap1\n pop\n /* \"#utility.yul\":466:562 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":568:690 */\ntag_50:\n /* \"#utility.yul\":641:665 */\n tag_74\n /* \"#utility.yul\":659:664 */\n dup2\n /* \"#utility.yul\":641:665 */\n tag_49\n jump\t// in\ntag_74:\n /* \"#utility.yul\":634:639 */\n dup2\n /* \"#utility.yul\":631:666 */\n eq\n /* \"#utility.yul\":621:684 */\n tag_75\n jumpi\n /* \"#utility.yul\":680:681 */\n 0x00\n /* \"#utility.yul\":677:678 */\n dup1\n /* \"#utility.yul\":670:682 */\n revert\n /* \"#utility.yul\":621:684 */\ntag_75:\n /* \"#utility.yul\":568:690 */\n pop\n jump\t// out\n /* \"#utility.yul\":696:839 */\ntag_51:\n /* \"#utility.yul\":753:758 */\n 0x00\n /* \"#utility.yul\":784:790 */\n dup2\n /* \"#utility.yul\":778:791 */\n mload\n /* \"#utility.yul\":769:791 */\n swap1\n pop\n /* \"#utility.yul\":800:833 */\n tag_77\n /* \"#utility.yul\":827:832 */\n dup2\n /* \"#utility.yul\":800:833 */\n tag_50\n jump\t// in\ntag_77:\n /* \"#utility.yul\":696:839 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":845:962 */\ntag_52:\n /* \"#utility.yul\":954:955 */\n 0x00\n /* \"#utility.yul\":951:952 */\n dup1\n /* \"#utility.yul\":944:956 */\n revert\n /* \"#utility.yul\":968:1085 */\ntag_53:\n /* \"#utility.yul\":1077:1078 */\n 0x00\n /* \"#utility.yul\":1074:1075 */\n dup1\n /* \"#utility.yul\":1067:1079 */\n revert\n /* \"#utility.yul\":1091:1193 */\ntag_54:\n /* \"#utility.yul\":1132:1138 */\n 0x00\n /* \"#utility.yul\":1183:1185 */\n 0x1f\n /* \"#utility.yul\":1179:1186 */\n not\n /* \"#utility.yul\":1174:1176 */\n 0x1f\n /* \"#utility.yul\":1167:1172 */\n dup4\n /* \"#utility.yul\":1163:1177 */\n add\n /* \"#utility.yul\":1159:1187 */\n and\n /* \"#utility.yul\":1149:1187 */\n swap1\n pop\n /* \"#utility.yul\":1091:1193 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1199:1379 */\ntag_55:\n /* \"#utility.yul\":1247:1324 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":1244:1245 */\n 0x00\n /* \"#utility.yul\":1237:1325 */\n mstore\n /* \"#utility.yul\":1344:1348 */\n 0x41\n /* \"#utility.yul\":1341:1342 */\n 0x04\n /* \"#utility.yul\":1334:1349 */\n mstore\n /* \"#utility.yul\":1368:1372 */\n 0x24\n /* \"#utility.yul\":1365:1366 */\n 0x00\n /* \"#utility.yul\":1358:1373 */\n revert\n /* \"#utility.yul\":1385:1666 */\ntag_56:\n /* \"#utility.yul\":1468:1495 */\n tag_83\n /* \"#utility.yul\":1490:1494 */\n dup3\n /* \"#utility.yul\":1468:1495 */\n tag_54\n jump\t// in\ntag_83:\n /* \"#utility.yul\":1460:1466 */\n dup2\n /* \"#utility.yul\":1456:1496 */\n add\n /* \"#utility.yul\":1598:1604 */\n dup2\n /* \"#utility.yul\":1586:1596 */\n dup2\n /* \"#utility.yul\":1583:1605 */\n lt\n /* \"#utility.yul\":1562:1580 */\n 0xffffffffffffffff\n /* \"#utility.yul\":1550:1560 */\n dup3\n /* \"#utility.yul\":1547:1581 */\n gt\n /* \"#utility.yul\":1544:1606 */\n or\n /* \"#utility.yul\":1541:1629 */\n iszero\n tag_84\n jumpi\n /* \"#utility.yul\":1609:1627 */\n tag_85\n tag_55\n jump\t// in\ntag_85:\n /* \"#utility.yul\":1541:1629 */\ntag_84:\n /* \"#utility.yul\":1649:1659 */\n dup1\n /* \"#utility.yul\":1645:1647 */\n 0x40\n /* \"#utility.yul\":1638:1660 */\n mstore\n /* \"#utility.yul\":1428:1666 */\n pop\n /* \"#utility.yul\":1385:1666 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1672:1801 */\ntag_57:\n /* \"#utility.yul\":1706:1712 */\n 0x00\n /* \"#utility.yul\":1733:1753 */\n tag_87\n tag_45\n jump\t// in\ntag_87:\n /* \"#utility.yul\":1723:1753 */\n swap1\n pop\n /* \"#utility.yul\":1762:1795 */\n tag_88\n /* \"#utility.yul\":1790:1794 */\n dup3\n /* \"#utility.yul\":1782:1788 */\n dup3\n /* \"#utility.yul\":1762:1795 */\n tag_56\n jump\t// in\ntag_88:\n /* \"#utility.yul\":1672:1801 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1807:2114 */\ntag_58:\n /* \"#utility.yul\":1868:1872 */\n 0x00\n /* \"#utility.yul\":1958:1976 */\n 0xffffffffffffffff\n /* \"#utility.yul\":1950:1956 */\n dup3\n /* \"#utility.yul\":1947:1977 */\n gt\n /* \"#utility.yul\":1944:2000 */\n iszero\n tag_90\n jumpi\n /* \"#utility.yul\":1980:1998 */\n tag_91\n tag_55\n jump\t// in\ntag_91:\n /* \"#utility.yul\":1944:2000 */\ntag_90:\n /* \"#utility.yul\":2018:2047 */\n tag_92\n /* \"#utility.yul\":2040:2046 */\n dup3\n /* \"#utility.yul\":2018:2047 */\n tag_54\n jump\t// in\ntag_92:\n /* \"#utility.yul\":2010:2047 */\n swap1\n pop\n /* \"#utility.yul\":2102:2106 */\n 0x20\n /* \"#utility.yul\":2096:2100 */\n dup2\n /* \"#utility.yul\":2092:2107 */\n add\n /* \"#utility.yul\":2084:2107 */\n swap1\n pop\n /* \"#utility.yul\":1807:2114 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2120:2366 */\ntag_59:\n /* \"#utility.yul\":2201:2202 */\n 0x00\n /* \"#utility.yul\":2211:2324 */\ntag_94:\n /* \"#utility.yul\":2225:2231 */\n dup4\n /* \"#utility.yul\":2222:2223 */\n dup2\n /* \"#utility.yul\":2219:2232 */\n lt\n /* \"#utility.yul\":2211:2324 */\n iszero\n tag_96\n jumpi\n /* \"#utility.yul\":2310:2311 */\n dup1\n /* \"#utility.yul\":2305:2308 */\n dup3\n /* \"#utility.yul\":2301:2312 */\n add\n /* \"#utility.yul\":2295:2313 */\n mload\n /* \"#utility.yul\":2291:2292 */\n dup2\n /* \"#utility.yul\":2286:2289 */\n dup5\n /* \"#utility.yul\":2282:2293 */\n add\n /* \"#utility.yul\":2275:2314 */\n mstore\n /* \"#utility.yul\":2247:2249 */\n 0x20\n /* \"#utility.yul\":2244:2245 */\n dup2\n /* \"#utility.yul\":2240:2250 */\n add\n /* \"#utility.yul\":2235:2250 */\n swap1\n pop\n /* \"#utility.yul\":2211:2324 */\n jump(tag_94)\ntag_96:\n /* \"#utility.yul\":2358:2359 */\n 0x00\n /* \"#utility.yul\":2349:2355 */\n dup5\n /* \"#utility.yul\":2344:2347 */\n dup5\n /* \"#utility.yul\":2340:2356 */\n add\n /* \"#utility.yul\":2333:2360 */\n mstore\n /* \"#utility.yul\":2182:2366 */\n pop\n /* \"#utility.yul\":2120:2366 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2372:2804 */\ntag_60:\n /* \"#utility.yul\":2460:2465 */\n 0x00\n /* \"#utility.yul\":2485:2550 */\n tag_98\n /* \"#utility.yul\":2501:2549 */\n tag_99\n /* \"#utility.yul\":2542:2548 */\n dup5\n /* \"#utility.yul\":2501:2549 */\n tag_58\n jump\t// in\ntag_99:\n /* \"#utility.yul\":2485:2550 */\n tag_57\n jump\t// in\ntag_98:\n /* \"#utility.yul\":2476:2550 */\n swap1\n pop\n /* \"#utility.yul\":2573:2579 */\n dup3\n /* \"#utility.yul\":2566:2571 */\n dup2\n /* \"#utility.yul\":2559:2580 */\n mstore\n /* \"#utility.yul\":2611:2615 */\n 0x20\n /* \"#utility.yul\":2604:2609 */\n dup2\n /* \"#utility.yul\":2600:2616 */\n add\n /* \"#utility.yul\":2649:2652 */\n dup5\n /* \"#utility.yul\":2640:2646 */\n dup5\n /* \"#utility.yul\":2635:2638 */\n dup5\n /* \"#utility.yul\":2631:2647 */\n add\n /* \"#utility.yul\":2628:2653 */\n gt\n /* \"#utility.yul\":2625:2737 */\n iszero\n tag_100\n jumpi\n /* \"#utility.yul\":2656:2735 */\n tag_101\n tag_53\n jump\t// in\ntag_101:\n /* \"#utility.yul\":2625:2737 */\ntag_100:\n /* \"#utility.yul\":2746:2798 */\n tag_102\n /* \"#utility.yul\":2791:2797 */\n dup5\n /* \"#utility.yul\":2786:2789 */\n dup3\n /* \"#utility.yul\":2781:2784 */\n dup6\n /* \"#utility.yul\":2746:2798 */\n tag_59\n jump\t// in\ntag_102:\n /* \"#utility.yul\":2466:2804 */\n pop\n /* \"#utility.yul\":2372:2804 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2823:3176 */\ntag_61:\n /* \"#utility.yul\":2889:2894 */\n 0x00\n /* \"#utility.yul\":2938:2941 */\n dup3\n /* \"#utility.yul\":2931:2935 */\n 0x1f\n /* \"#utility.yul\":2923:2929 */\n dup4\n /* \"#utility.yul\":2919:2936 */\n add\n /* \"#utility.yul\":2915:2942 */\n slt\n /* \"#utility.yul\":2905:3027 */\n tag_104\n jumpi\n /* \"#utility.yul\":2946:3025 */\n tag_105\n tag_52\n jump\t// in\ntag_105:\n /* \"#utility.yul\":2905:3027 */\ntag_104:\n /* \"#utility.yul\":3056:3062 */\n dup2\n /* \"#utility.yul\":3050:3063 */\n mload\n /* \"#utility.yul\":3081:3170 */\n tag_106\n /* \"#utility.yul\":3166:3169 */\n dup5\n /* \"#utility.yul\":3158:3164 */\n dup3\n /* \"#utility.yul\":3151:3155 */\n 0x20\n /* \"#utility.yul\":3143:3149 */\n dup7\n /* \"#utility.yul\":3139:3156 */\n add\n /* \"#utility.yul\":3081:3170 */\n tag_60\n jump\t// in\ntag_106:\n /* \"#utility.yul\":3072:3170 */\n swap2\n pop\n /* \"#utility.yul\":2895:3176 */\n pop\n /* \"#utility.yul\":2823:3176 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3182:3860 */\ntag_2:\n /* \"#utility.yul\":3270:3276 */\n 0x00\n /* \"#utility.yul\":3278:3284 */\n dup1\n /* \"#utility.yul\":3327:3329 */\n 0x40\n /* \"#utility.yul\":3315:3324 */\n dup4\n /* \"#utility.yul\":3306:3313 */\n dup6\n /* \"#utility.yul\":3302:3325 */\n sub\n /* \"#utility.yul\":3298:3330 */\n slt\n /* \"#utility.yul\":3295:3414 */\n iszero\n tag_108\n jumpi\n /* \"#utility.yul\":3333:3412 */\n tag_109\n tag_46\n jump\t// in\ntag_109:\n /* \"#utility.yul\":3295:3414 */\ntag_108:\n /* \"#utility.yul\":3453:3454 */\n 0x00\n /* \"#utility.yul\":3478:3542 */\n tag_110\n /* \"#utility.yul\":3534:3541 */\n dup6\n /* \"#utility.yul\":3525:3531 */\n dup3\n /* \"#utility.yul\":3514:3523 */\n dup7\n /* \"#utility.yul\":3510:3532 */\n add\n /* \"#utility.yul\":3478:3542 */\n tag_51\n jump\t// in\ntag_110:\n /* \"#utility.yul\":3468:3542 */\n swap3\n pop\n /* \"#utility.yul\":3424:3552 */\n pop\n /* \"#utility.yul\":3612:3614 */\n 0x20\n /* \"#utility.yul\":3601:3610 */\n dup4\n /* \"#utility.yul\":3597:3615 */\n add\n /* \"#utility.yul\":3591:3616 */\n mload\n /* \"#utility.yul\":3643:3661 */\n 0xffffffffffffffff\n /* \"#utility.yul\":3635:3641 */\n dup2\n /* \"#utility.yul\":3632:3662 */\n gt\n /* \"#utility.yul\":3629:3746 */\n iszero\n tag_111\n jumpi\n /* \"#utility.yul\":3665:3744 */\n tag_112\n tag_47\n jump\t// in\ntag_112:\n /* \"#utility.yul\":3629:3746 */\ntag_111:\n /* \"#utility.yul\":3770:3843 */\n tag_113\n /* \"#utility.yul\":3835:3842 */\n dup6\n /* \"#utility.yul\":3826:3832 */\n dup3\n /* \"#utility.yul\":3815:3824 */\n dup7\n /* \"#utility.yul\":3811:3833 */\n add\n /* \"#utility.yul\":3770:3843 */\n tag_61\n jump\t// in\ntag_113:\n /* \"#utility.yul\":3760:3843 */\n swap2\n pop\n /* \"#utility.yul\":3562:3853 */\n pop\n /* \"#utility.yul\":3182:3860 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3866:3984 */\ntag_62:\n /* \"#utility.yul\":3953:3977 */\n tag_115\n /* \"#utility.yul\":3971:3976 */\n dup2\n /* \"#utility.yul\":3953:3977 */\n tag_49\n jump\t// in\ntag_115:\n /* \"#utility.yul\":3948:3951 */\n dup3\n /* \"#utility.yul\":3941:3978 */\n mstore\n /* \"#utility.yul\":3866:3984 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3990:4212 */\ntag_20:\n /* \"#utility.yul\":4083:4087 */\n 0x00\n /* \"#utility.yul\":4121:4123 */\n 0x20\n /* \"#utility.yul\":4110:4119 */\n dup3\n /* \"#utility.yul\":4106:4124 */\n add\n /* \"#utility.yul\":4098:4124 */\n swap1\n pop\n /* \"#utility.yul\":4134:4205 */\n tag_117\n /* \"#utility.yul\":4202:4203 */\n 0x00\n /* \"#utility.yul\":4191:4200 */\n dup4\n /* \"#utility.yul\":4187:4204 */\n add\n /* \"#utility.yul\":4178:4184 */\n dup5\n /* \"#utility.yul\":4134:4205 */\n tag_62\n jump\t// in\ntag_117:\n /* \"#utility.yul\":3990:4212 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4218:4316 */\ntag_63:\n /* \"#utility.yul\":4269:4275 */\n 0x00\n /* \"#utility.yul\":4303:4308 */\n dup2\n /* \"#utility.yul\":4297:4309 */\n mload\n /* \"#utility.yul\":4287:4309 */\n swap1\n pop\n /* \"#utility.yul\":4218:4316 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4322:4469 */\ntag_64:\n /* \"#utility.yul\":4423:4434 */\n 0x00\n /* \"#utility.yul\":4460:4463 */\n dup2\n /* \"#utility.yul\":4445:4463 */\n swap1\n pop\n /* \"#utility.yul\":4322:4469 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4475:4861 */\ntag_65:\n /* \"#utility.yul\":4579:4582 */\n 0x00\n /* \"#utility.yul\":4607:4645 */\n tag_121\n /* \"#utility.yul\":4639:4644 */\n dup3\n /* \"#utility.yul\":4607:4645 */\n tag_63\n jump\t// in\ntag_121:\n /* \"#utility.yul\":4661:4749 */\n tag_122\n /* \"#utility.yul\":4742:4748 */\n dup2\n /* \"#utility.yul\":4737:4740 */\n dup6\n /* \"#utility.yul\":4661:4749 */\n tag_64\n jump\t// in\ntag_122:\n /* \"#utility.yul\":4654:4749 */\n swap4\n pop\n /* \"#utility.yul\":4758:4823 */\n tag_123\n /* \"#utility.yul\":4816:4822 */\n dup2\n /* \"#utility.yul\":4811:4814 */\n dup6\n /* \"#utility.yul\":4804:4808 */\n 0x20\n /* \"#utility.yul\":4797:4802 */\n dup7\n /* \"#utility.yul\":4793:4809 */\n add\n /* \"#utility.yul\":4758:4823 */\n tag_59\n jump\t// in\ntag_123:\n /* \"#utility.yul\":4848:4854 */\n dup1\n /* \"#utility.yul\":4843:4846 */\n dup5\n /* \"#utility.yul\":4839:4855 */\n add\n /* \"#utility.yul\":4832:4855 */\n swap2\n pop\n /* \"#utility.yul\":4583:4861 */\n pop\n /* \"#utility.yul\":4475:4861 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4867:5138 */\ntag_25:\n /* \"#utility.yul\":4997:5000 */\n 0x00\n /* \"#utility.yul\":5019:5112 */\n tag_125\n /* \"#utility.yul\":5108:5111 */\n dup3\n /* \"#utility.yul\":5099:5105 */\n dup5\n /* \"#utility.yul\":5019:5112 */\n tag_65\n jump\t// in\ntag_125:\n /* \"#utility.yul\":5012:5112 */\n swap2\n pop\n /* \"#utility.yul\":5129:5132 */\n dup2\n /* \"#utility.yul\":5122:5132 */\n swap1\n pop\n /* \"#utility.yul\":4867:5138 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":599:1715 contract ERC1967Proxy is Proxy {... */\ntag_7:\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":599:1715 contract ERC1967Proxy is Proxy {... */\n mstore(0x40, 0x80)\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2649:2660 _fallback() */\n tag_5\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2649:2658 _fallback */\n tag_6\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2649:2660 _fallback() */\n jump\t// in\n tag_5:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":599:1715 contract ERC1967Proxy is Proxy {... */\n stop\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2323:2406 function _fallback() internal virtual {... */\n tag_6:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2371:2399 _delegate(_implementation()) */\n tag_8\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2381:2398 _implementation() */\n tag_9\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2381:2396 _implementation */\n tag_10\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2381:2398 _implementation() */\n jump\t// in\n tag_9:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2371:2380 _delegate */\n tag_11\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2371:2399 _delegate(_implementation()) */\n jump\t// in\n tag_8:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":2323:2406 function _fallback() internal virtual {... */\n jump\t// out\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":1581:1713 function _implementation() internal view virtual override returns (address) {... */\n tag_10:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":1648:1655 address */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":1674:1706 ERC1967Utils.getImplementation() */\n tag_13\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":1674:1704 ERC1967Utils.getImplementation */\n tag_14\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":1674:1706 ERC1967Utils.getImplementation() */\n jump\t// in\n tag_13:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":1667:1706 return ERC1967Utils.getImplementation() */\n swap1\n pop\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":1581:1713 function _implementation() internal view virtual override returns (address) {... */\n swap1\n jump\t// out\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":949:1844 function _delegate(address implementation) internal virtual {... */\n tag_11:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1287:1301 calldatasize() */\n calldatasize\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1284:1285 0 */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1281:1282 0 */\n dup1\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1268:1302 calldatacopy(0, 0, calldatasize()) */\n calldatacopy\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1501:1502 0 */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1498:1499 0 */\n dup1\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1482:1496 calldatasize() */\n calldatasize\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1479:1480 0 */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1463:1477 implementation */\n dup5\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1456:1461 gas() */\n gas\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1443:1503 delegatecall(gas(), implementation, 0, calldatasize(), 0, 0) */\n delegatecall\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1577:1593 returndatasize() */\n returndatasize\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1574:1575 0 */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1571:1572 0 */\n dup1\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1556:1594 returndatacopy(0, 0, returndatasize()) */\n returndatacopy\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1615:1621 result */\n dup1\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1687:1688 0 */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1682:1748 case 0 {... */\n dup2\n eq\n tag_17\n jumpi\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1797:1813 returndatasize() */\n returndatasize\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1794:1795 0 */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1787:1814 return(0, returndatasize()) */\n return\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1682:1748 case 0 {... */\n tag_17:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1717:1733 returndatasize() */\n returndatasize\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1714:1715 0 */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":1707:1734 revert(0, returndatasize()) */\n revert\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":1957:2095 function getImplementation() internal view returns (address) {... */\n tag_14:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2009:2016 address */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2035:2082 StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT) */\n tag_19\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":1327:1393 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc */\n 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2062:2081 IMPLEMENTATION_SLOT */\n 0x00\n shl\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2035:2061 StorageSlot.getAddressSlot */\n tag_20\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2035:2082 StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT) */\n jump\t// in\n tag_19:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2035:2088 StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value */\n 0x00\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":2028:2088 return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value */\n swap1\n pop\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":1957:2095 function getImplementation() internal view returns (address) {... */\n swap1\n jump\t// out\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1684:1874 function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {... */\n tag_20:\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1745:1766 AddressSlot storage r */\n 0x00\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1854:1858 slot */\n dup2\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1844:1858 r.slot := slot */\n swap1\n pop\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1684:1874 function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {... */\n swap2\n swap1\n pop\n jump\t// out\n\n auxdata: 0xa26469706673582212204445ca1d654fe96658df00412cf9c7bcb1fdfaf66f39f4eb3c6a802907e7966864736f6c63430008150033\n}\n",
"bytecode": {
"functionDebugData": {
"@_24": {
"entryPoint": null,
"id": 24,
"parameterSlots": 2,
"returnSlots": 0
},
"@_checkNonPayable_339": {
"entryPoint": 533,
"id": 339,
"parameterSlots": 0,
"returnSlots": 0
},
"@_revert_638": {
"entryPoint": 749,
"id": 638,
"parameterSlots": 1,
"returnSlots": 0
},
"@_setImplementation_125": {
"entryPoint": 192,
"id": 125,
"parameterSlots": 1,
"returnSlots": 0
},
"@functionDelegateCall_558": {
"entryPoint": 399,
"id": 558,
"parameterSlots": 2,
"returnSlots": 1
},
"@getAddressSlot_671": {
"entryPoint": 593,
"id": 671,
"parameterSlots": 1,
"returnSlots": 1
},
"@upgradeToAndCall_159": {
"entryPoint": 60,
"id": 159,
"parameterSlots": 2,
"returnSlots": 0
},
"@verifyCallResultFromTarget_598": {
"entryPoint": 602,
"id": 598,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_available_length_t_bytes_memory_ptr_fromMemory": {
"entryPoint": 1156,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_t_address_fromMemory": {
"entryPoint": 904,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes_memory_ptr_fromMemory": {
"entryPoint": 1221,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory": {
"entryPoint": 1266,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 1356,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 1416,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 1464,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 1371,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_memory": {
"entryPoint": 1042,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": 817,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_allocation_size_t_bytes_memory_ptr": {
"entryPoint": 1068,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_bytes_memory_ptr": {
"entryPoint": 1396,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 1406,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 865,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 834,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_memory_to_memory_with_cleanup": {
"entryPoint": 1116,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"finalize_allocation": {
"entryPoint": 993,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 948,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": {
"entryPoint": 924,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae": {
"entryPoint": 928,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": 830,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 826,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 932,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"validator_revert_t_address": {
"entryPoint": 882,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nativeSrc": "0:5141:6",
"nodeType": "YulBlock",
"src": "0:5141:6",
"statements": [
{
"body": {
"nativeSrc": "47:35:6",
"nodeType": "YulBlock",
"src": "47:35:6",
"statements": [
{
"nativeSrc": "57:19:6",
"nodeType": "YulAssignment",
"src": "57:19:6",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "73:2:6",
"nodeType": "YulLiteral",
"src": "73:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "67:5:6",
"nodeType": "YulIdentifier",
"src": "67:5:6"
},
"nativeSrc": "67:9:6",
"nodeType": "YulFunctionCall",
"src": "67:9:6"
},
"variableNames": [
{
"name": "memPtr",
"nativeSrc": "57:6:6",
"nodeType": "YulIdentifier",
"src": "57:6:6"
}
]
}
]
},
"name": "allocate_unbounded",
"nativeSrc": "7:75:6",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nativeSrc": "40:6:6",
"nodeType": "YulTypedName",
"src": "40:6:6",
"type": ""
}
],
"src": "7:75:6"
},
{
"body": {
"nativeSrc": "177:28:6",
"nodeType": "YulBlock",
"src": "177:28:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "194:1:6",
"nodeType": "YulLiteral",
"src": "194:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "197:1:6",
"nodeType": "YulLiteral",
"src": "197:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "187:6:6",
"nodeType": "YulIdentifier",
"src": "187:6:6"
},
"nativeSrc": "187:12:6",
"nodeType": "YulFunctionCall",
"src": "187:12:6"
},
"nativeSrc": "187:12:6",
"nodeType": "YulExpressionStatement",
"src": "187:12:6"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "88:117:6",
"nodeType": "YulFunctionDefinition",
"src": "88:117:6"
},
{
"body": {
"nativeSrc": "300:28:6",
"nodeType": "YulBlock",
"src": "300:28:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "317:1:6",
"nodeType": "YulLiteral",
"src": "317:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "320:1:6",
"nodeType": "YulLiteral",
"src": "320:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "310:6:6",
"nodeType": "YulIdentifier",
"src": "310:6:6"
},
"nativeSrc": "310:12:6",
"nodeType": "YulFunctionCall",
"src": "310:12:6"
},
"nativeSrc": "310:12:6",
"nodeType": "YulExpressionStatement",
"src": "310:12:6"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nativeSrc": "211:117:6",
"nodeType": "YulFunctionDefinition",
"src": "211:117:6"
},
{
"body": {
"nativeSrc": "379:81:6",
"nodeType": "YulBlock",
"src": "379:81:6",
"statements": [
{
"nativeSrc": "389:65:6",
"nodeType": "YulAssignment",
"src": "389:65:6",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "404:5:6",
"nodeType": "YulIdentifier",
"src": "404:5:6"
},
{
"kind": "number",
"nativeSrc": "411:42:6",
"nodeType": "YulLiteral",
"src": "411:42:6",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nativeSrc": "400:3:6",
"nodeType": "YulIdentifier",
"src": "400:3:6"
},
"nativeSrc": "400:54:6",
"nodeType": "YulFunctionCall",
"src": "400:54:6"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "389:7:6",
"nodeType": "YulIdentifier",
"src": "389:7:6"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nativeSrc": "334:126:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "361:5:6",
"nodeType": "YulTypedName",
"src": "361:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "371:7:6",
"nodeType": "YulTypedName",
"src": "371:7:6",
"type": ""
}
],
"src": "334:126:6"
},
{
"body": {
"nativeSrc": "511:51:6",
"nodeType": "YulBlock",
"src": "511:51:6",
"statements": [
{
"nativeSrc": "521:35:6",
"nodeType": "YulAssignment",
"src": "521:35:6",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "550:5:6",
"nodeType": "YulIdentifier",
"src": "550:5:6"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nativeSrc": "532:17:6",
"nodeType": "YulIdentifier",
"src": "532:17:6"
},
"nativeSrc": "532:24:6",
"nodeType": "YulFunctionCall",
"src": "532:24:6"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "521:7:6",
"nodeType": "YulIdentifier",
"src": "521:7:6"
}
]
}
]
},
"name": "cleanup_t_address",
"nativeSrc": "466:96:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "493:5:6",
"nodeType": "YulTypedName",
"src": "493:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "503:7:6",
"nodeType": "YulTypedName",
"src": "503:7:6",
"type": ""
}
],
"src": "466:96:6"
},
{
"body": {
"nativeSrc": "611:79:6",
"nodeType": "YulBlock",
"src": "611:79:6",
"statements": [
{
"body": {
"nativeSrc": "668:16:6",
"nodeType": "YulBlock",
"src": "668:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "677:1:6",
"nodeType": "YulLiteral",
"src": "677:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "680:1:6",
"nodeType": "YulLiteral",
"src": "680:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "670:6:6",
"nodeType": "YulIdentifier",
"src": "670:6:6"
},
"nativeSrc": "670:12:6",
"nodeType": "YulFunctionCall",
"src": "670:12:6"
},
"nativeSrc": "670:12:6",
"nodeType": "YulExpressionStatement",
"src": "670:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "634:5:6",
"nodeType": "YulIdentifier",
"src": "634:5:6"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "659:5:6",
"nodeType": "YulIdentifier",
"src": "659:5:6"
}
],
"functionName": {
"name": "cleanup_t_address",
"nativeSrc": "641:17:6",
"nodeType": "YulIdentifier",
"src": "641:17:6"
},
"nativeSrc": "641:24:6",
"nodeType": "YulFunctionCall",
"src": "641:24:6"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "631:2:6",
"nodeType": "YulIdentifier",
"src": "631:2:6"
},
"nativeSrc": "631:35:6",
"nodeType": "YulFunctionCall",
"src": "631:35:6"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "624:6:6",
"nodeType": "YulIdentifier",
"src": "624:6:6"
},
"nativeSrc": "624:43:6",
"nodeType": "YulFunctionCall",
"src": "624:43:6"
},
"nativeSrc": "621:63:6",
"nodeType": "YulIf",
"src": "621:63:6"
}
]
},
"name": "validator_revert_t_address",
"nativeSrc": "568:122:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "604:5:6",
"nodeType": "YulTypedName",
"src": "604:5:6",
"type": ""
}
],
"src": "568:122:6"
},
{
"body": {
"nativeSrc": "759:80:6",
"nodeType": "YulBlock",
"src": "759:80:6",
"statements": [
{
"nativeSrc": "769:22:6",
"nodeType": "YulAssignment",
"src": "769:22:6",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "784:6:6",
"nodeType": "YulIdentifier",
"src": "784:6:6"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "778:5:6",
"nodeType": "YulIdentifier",
"src": "778:5:6"
},
"nativeSrc": "778:13:6",
"nodeType": "YulFunctionCall",
"src": "778:13:6"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "769:5:6",
"nodeType": "YulIdentifier",
"src": "769:5:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nativeSrc": "827:5:6",
"nodeType": "YulIdentifier",
"src": "827:5:6"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nativeSrc": "800:26:6",
"nodeType": "YulIdentifier",
"src": "800:26:6"
},
"nativeSrc": "800:33:6",
"nodeType": "YulFunctionCall",
"src": "800:33:6"
},
"nativeSrc": "800:33:6",
"nodeType": "YulExpressionStatement",
"src": "800:33:6"
}
]
},
"name": "abi_decode_t_address_fromMemory",
"nativeSrc": "696:143:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "737:6:6",
"nodeType": "YulTypedName",
"src": "737:6:6",
"type": ""
},
{
"name": "end",
"nativeSrc": "745:3:6",
"nodeType": "YulTypedName",
"src": "745:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nativeSrc": "753:5:6",
"nodeType": "YulTypedName",
"src": "753:5:6",
"type": ""
}
],
"src": "696:143:6"
},
{
"body": {
"nativeSrc": "934:28:6",
"nodeType": "YulBlock",
"src": "934:28:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "951:1:6",
"nodeType": "YulLiteral",
"src": "951:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "954:1:6",
"nodeType": "YulLiteral",
"src": "954:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "944:6:6",
"nodeType": "YulIdentifier",
"src": "944:6:6"
},
"nativeSrc": "944:12:6",
"nodeType": "YulFunctionCall",
"src": "944:12:6"
},
"nativeSrc": "944:12:6",
"nodeType": "YulExpressionStatement",
"src": "944:12:6"
}
]
},
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nativeSrc": "845:117:6",
"nodeType": "YulFunctionDefinition",
"src": "845:117:6"
},
{
"body": {
"nativeSrc": "1057:28:6",
"nodeType": "YulBlock",
"src": "1057:28:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1074:1:6",
"nodeType": "YulLiteral",
"src": "1074:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1077:1:6",
"nodeType": "YulLiteral",
"src": "1077:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1067:6:6",
"nodeType": "YulIdentifier",
"src": "1067:6:6"
},
"nativeSrc": "1067:12:6",
"nodeType": "YulFunctionCall",
"src": "1067:12:6"
},
"nativeSrc": "1067:12:6",
"nodeType": "YulExpressionStatement",
"src": "1067:12:6"
}
]
},
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nativeSrc": "968:117:6",
"nodeType": "YulFunctionDefinition",
"src": "968:117:6"
},
{
"body": {
"nativeSrc": "1139:54:6",
"nodeType": "YulBlock",
"src": "1139:54:6",
"statements": [
{
"nativeSrc": "1149:38:6",
"nodeType": "YulAssignment",
"src": "1149:38:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "1167:5:6",
"nodeType": "YulIdentifier",
"src": "1167:5:6"
},
{
"kind": "number",
"nativeSrc": "1174:2:6",
"nodeType": "YulLiteral",
"src": "1174:2:6",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1163:3:6",
"nodeType": "YulIdentifier",
"src": "1163:3:6"
},
"nativeSrc": "1163:14:6",
"nodeType": "YulFunctionCall",
"src": "1163:14:6"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "1183:2:6",
"nodeType": "YulLiteral",
"src": "1183:2:6",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nativeSrc": "1179:3:6",
"nodeType": "YulIdentifier",
"src": "1179:3:6"
},
"nativeSrc": "1179:7:6",
"nodeType": "YulFunctionCall",
"src": "1179:7:6"
}
],
"functionName": {
"name": "and",
"nativeSrc": "1159:3:6",
"nodeType": "YulIdentifier",
"src": "1159:3:6"
},
"nativeSrc": "1159:28:6",
"nodeType": "YulFunctionCall",
"src": "1159:28:6"
},
"variableNames": [
{
"name": "result",
"nativeSrc": "1149:6:6",
"nodeType": "YulIdentifier",
"src": "1149:6:6"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nativeSrc": "1091:102:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "1122:5:6",
"nodeType": "YulTypedName",
"src": "1122:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nativeSrc": "1132:6:6",
"nodeType": "YulTypedName",
"src": "1132:6:6",
"type": ""
}
],
"src": "1091:102:6"
},
{
"body": {
"nativeSrc": "1227:152:6",
"nodeType": "YulBlock",
"src": "1227:152:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1244:1:6",
"nodeType": "YulLiteral",
"src": "1244:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1247:77:6",
"nodeType": "YulLiteral",
"src": "1247:77:6",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1237:6:6",
"nodeType": "YulIdentifier",
"src": "1237:6:6"
},
"nativeSrc": "1237:88:6",
"nodeType": "YulFunctionCall",
"src": "1237:88:6"
},
"nativeSrc": "1237:88:6",
"nodeType": "YulExpressionStatement",
"src": "1237:88:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1341:1:6",
"nodeType": "YulLiteral",
"src": "1341:1:6",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "1344:4:6",
"nodeType": "YulLiteral",
"src": "1344:4:6",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1334:6:6",
"nodeType": "YulIdentifier",
"src": "1334:6:6"
},
"nativeSrc": "1334:15:6",
"nodeType": "YulFunctionCall",
"src": "1334:15:6"
},
"nativeSrc": "1334:15:6",
"nodeType": "YulExpressionStatement",
"src": "1334:15:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1365:1:6",
"nodeType": "YulLiteral",
"src": "1365:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1368:4:6",
"nodeType": "YulLiteral",
"src": "1368:4:6",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1358:6:6",
"nodeType": "YulIdentifier",
"src": "1358:6:6"
},
"nativeSrc": "1358:15:6",
"nodeType": "YulFunctionCall",
"src": "1358:15:6"
},
"nativeSrc": "1358:15:6",
"nodeType": "YulExpressionStatement",
"src": "1358:15:6"
}
]
},
"name": "panic_error_0x41",
"nativeSrc": "1199:180:6",
"nodeType": "YulFunctionDefinition",
"src": "1199:180:6"
},
{
"body": {
"nativeSrc": "1428:238:6",
"nodeType": "YulBlock",
"src": "1428:238:6",
"statements": [
{
"nativeSrc": "1438:58:6",
"nodeType": "YulVariableDeclaration",
"src": "1438:58:6",
"value": {
"arguments": [
{
"name": "memPtr",
"nativeSrc": "1460:6:6",
"nodeType": "YulIdentifier",
"src": "1460:6:6"
},
{
"arguments": [
{
"name": "size",
"nativeSrc": "1490:4:6",
"nodeType": "YulIdentifier",
"src": "1490:4:6"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nativeSrc": "1468:21:6",
"nodeType": "YulIdentifier",
"src": "1468:21:6"
},
"nativeSrc": "1468:27:6",
"nodeType": "YulFunctionCall",
"src": "1468:27:6"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1456:3:6",
"nodeType": "YulIdentifier",
"src": "1456:3:6"
},
"nativeSrc": "1456:40:6",
"nodeType": "YulFunctionCall",
"src": "1456:40:6"
},
"variables": [
{
"name": "newFreePtr",
"nativeSrc": "1442:10:6",
"nodeType": "YulTypedName",
"src": "1442:10:6",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "1607:22:6",
"nodeType": "YulBlock",
"src": "1607:22:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "1609:16:6",
"nodeType": "YulIdentifier",
"src": "1609:16:6"
},
"nativeSrc": "1609:18:6",
"nodeType": "YulFunctionCall",
"src": "1609:18:6"
},
"nativeSrc": "1609:18:6",
"nodeType": "YulExpressionStatement",
"src": "1609:18:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "1550:10:6",
"nodeType": "YulIdentifier",
"src": "1550:10:6"
},
{
"kind": "number",
"nativeSrc": "1562:18:6",
"nodeType": "YulLiteral",
"src": "1562:18:6",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "1547:2:6",
"nodeType": "YulIdentifier",
"src": "1547:2:6"
},
"nativeSrc": "1547:34:6",
"nodeType": "YulFunctionCall",
"src": "1547:34:6"
},
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "1586:10:6",
"nodeType": "YulIdentifier",
"src": "1586:10:6"
},
{
"name": "memPtr",
"nativeSrc": "1598:6:6",
"nodeType": "YulIdentifier",
"src": "1598:6:6"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "1583:2:6",
"nodeType": "YulIdentifier",
"src": "1583:2:6"
},
"nativeSrc": "1583:22:6",
"nodeType": "YulFunctionCall",
"src": "1583:22:6"
}
],
"functionName": {
"name": "or",
"nativeSrc": "1544:2:6",
"nodeType": "YulIdentifier",
"src": "1544:2:6"
},
"nativeSrc": "1544:62:6",
"nodeType": "YulFunctionCall",
"src": "1544:62:6"
},
"nativeSrc": "1541:88:6",
"nodeType": "YulIf",
"src": "1541:88:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1645:2:6",
"nodeType": "YulLiteral",
"src": "1645:2:6",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nativeSrc": "1649:10:6",
"nodeType": "YulIdentifier",
"src": "1649:10:6"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1638:6:6",
"nodeType": "YulIdentifier",
"src": "1638:6:6"
},
"nativeSrc": "1638:22:6",
"nodeType": "YulFunctionCall",
"src": "1638:22:6"
},
"nativeSrc": "1638:22:6",
"nodeType": "YulExpressionStatement",
"src": "1638:22:6"
}
]
},
"name": "finalize_allocation",
"nativeSrc": "1385:281:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "1414:6:6",
"nodeType": "YulTypedName",
"src": "1414:6:6",
"type": ""
},
{
"name": "size",
"nativeSrc": "1422:4:6",
"nodeType": "YulTypedName",
"src": "1422:4:6",
"type": ""
}
],
"src": "1385:281:6"
},
{
"body": {
"nativeSrc": "1713:88:6",
"nodeType": "YulBlock",
"src": "1713:88:6",
"statements": [
{
"nativeSrc": "1723:30:6",
"nodeType": "YulAssignment",
"src": "1723:30:6",
"value": {
"arguments": [],
"functionName": {
"name": "allocate_unbounded",
"nativeSrc": "1733:18:6",
"nodeType": "YulIdentifier",
"src": "1733:18:6"
},
"nativeSrc": "1733:20:6",
"nodeType": "YulFunctionCall",
"src": "1733:20:6"
},
"variableNames": [
{
"name": "memPtr",
"nativeSrc": "1723:6:6",
"nodeType": "YulIdentifier",
"src": "1723:6:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nativeSrc": "1782:6:6",
"nodeType": "YulIdentifier",
"src": "1782:6:6"
},
{
"name": "size",
"nativeSrc": "1790:4:6",
"nodeType": "YulIdentifier",
"src": "1790:4:6"
}
],
"functionName": {
"name": "finalize_allocation",
"nativeSrc": "1762:19:6",
"nodeType": "YulIdentifier",
"src": "1762:19:6"
},
"nativeSrc": "1762:33:6",
"nodeType": "YulFunctionCall",
"src": "1762:33:6"
},
"nativeSrc": "1762:33:6",
"nodeType": "YulExpressionStatement",
"src": "1762:33:6"
}
]
},
"name": "allocate_memory",
"nativeSrc": "1672:129:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nativeSrc": "1697:4:6",
"nodeType": "YulTypedName",
"src": "1697:4:6",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nativeSrc": "1706:6:6",
"nodeType": "YulTypedName",
"src": "1706:6:6",
"type": ""
}
],
"src": "1672:129:6"
},
{
"body": {
"nativeSrc": "1873:241:6",
"nodeType": "YulBlock",
"src": "1873:241:6",
"statements": [
{
"body": {
"nativeSrc": "1978:22:6",
"nodeType": "YulBlock",
"src": "1978:22:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "1980:16:6",
"nodeType": "YulIdentifier",
"src": "1980:16:6"
},
"nativeSrc": "1980:18:6",
"nodeType": "YulFunctionCall",
"src": "1980:18:6"
},
"nativeSrc": "1980:18:6",
"nodeType": "YulExpressionStatement",
"src": "1980:18:6"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nativeSrc": "1950:6:6",
"nodeType": "YulIdentifier",
"src": "1950:6:6"
},
{
"kind": "number",
"nativeSrc": "1958:18:6",
"nodeType": "YulLiteral",
"src": "1958:18:6",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "1947:2:6",
"nodeType": "YulIdentifier",
"src": "1947:2:6"
},
"nativeSrc": "1947:30:6",
"nodeType": "YulFunctionCall",
"src": "1947:30:6"
},
"nativeSrc": "1944:56:6",
"nodeType": "YulIf",
"src": "1944:56:6"
},
{
"nativeSrc": "2010:37:6",
"nodeType": "YulAssignment",
"src": "2010:37:6",
"value": {
"arguments": [
{
"name": "length",
"nativeSrc": "2040:6:6",
"nodeType": "YulIdentifier",
"src": "2040:6:6"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nativeSrc": "2018:21:6",
"nodeType": "YulIdentifier",
"src": "2018:21:6"
},
"nativeSrc": "2018:29:6",
"nodeType": "YulFunctionCall",
"src": "2018:29:6"
},
"variableNames": [
{
"name": "size",
"nativeSrc": "2010:4:6",
"nodeType": "YulIdentifier",
"src": "2010:4:6"
}
]
},
{
"nativeSrc": "2084:23:6",
"nodeType": "YulAssignment",
"src": "2084:23:6",
"value": {
"arguments": [
{
"name": "size",
"nativeSrc": "2096:4:6",
"nodeType": "YulIdentifier",
"src": "2096:4:6"
},
{
"kind": "number",
"nativeSrc": "2102:4:6",
"nodeType": "YulLiteral",
"src": "2102:4:6",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2092:3:6",
"nodeType": "YulIdentifier",
"src": "2092:3:6"
},
"nativeSrc": "2092:15:6",
"nodeType": "YulFunctionCall",
"src": "2092:15:6"
},
"variableNames": [
{
"name": "size",
"nativeSrc": "2084:4:6",
"nodeType": "YulIdentifier",
"src": "2084:4:6"
}
]
}
]
},
"name": "array_allocation_size_t_bytes_memory_ptr",
"nativeSrc": "1807:307:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nativeSrc": "1857:6:6",
"nodeType": "YulTypedName",
"src": "1857:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nativeSrc": "1868:4:6",
"nodeType": "YulTypedName",
"src": "1868:4:6",
"type": ""
}
],
"src": "1807:307:6"
},
{
"body": {
"nativeSrc": "2182:184:6",
"nodeType": "YulBlock",
"src": "2182:184:6",
"statements": [
{
"nativeSrc": "2192:10:6",
"nodeType": "YulVariableDeclaration",
"src": "2192:10:6",
"value": {
"kind": "number",
"nativeSrc": "2201:1:6",
"nodeType": "YulLiteral",
"src": "2201:1:6",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nativeSrc": "2196:1:6",
"nodeType": "YulTypedName",
"src": "2196:1:6",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "2261:63:6",
"nodeType": "YulBlock",
"src": "2261:63:6",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nativeSrc": "2286:3:6",
"nodeType": "YulIdentifier",
"src": "2286:3:6"
},
{
"name": "i",
"nativeSrc": "2291:1:6",
"nodeType": "YulIdentifier",
"src": "2291:1:6"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2282:3:6",
"nodeType": "YulIdentifier",
"src": "2282:3:6"
},
"nativeSrc": "2282:11:6",
"nodeType": "YulFunctionCall",
"src": "2282:11:6"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nativeSrc": "2305:3:6",
"nodeType": "YulIdentifier",
"src": "2305:3:6"
},
{
"name": "i",
"nativeSrc": "2310:1:6",
"nodeType": "YulIdentifier",
"src": "2310:1:6"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2301:3:6",
"nodeType": "YulIdentifier",
"src": "2301:3:6"
},
"nativeSrc": "2301:11:6",
"nodeType": "YulFunctionCall",
"src": "2301:11:6"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "2295:5:6",
"nodeType": "YulIdentifier",
"src": "2295:5:6"
},
"nativeSrc": "2295:18:6",
"nodeType": "YulFunctionCall",
"src": "2295:18:6"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2275:6:6",
"nodeType": "YulIdentifier",
"src": "2275:6:6"
},
"nativeSrc": "2275:39:6",
"nodeType": "YulFunctionCall",
"src": "2275:39:6"
},
"nativeSrc": "2275:39:6",
"nodeType": "YulExpressionStatement",
"src": "2275:39:6"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nativeSrc": "2222:1:6",
"nodeType": "YulIdentifier",
"src": "2222:1:6"
},
{
"name": "length",
"nativeSrc": "2225:6:6",
"nodeType": "YulIdentifier",
"src": "2225:6:6"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "2219:2:6",
"nodeType": "YulIdentifier",
"src": "2219:2:6"
},
"nativeSrc": "2219:13:6",
"nodeType": "YulFunctionCall",
"src": "2219:13:6"
},
"nativeSrc": "2211:113:6",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "2233:19:6",
"nodeType": "YulBlock",
"src": "2233:19:6",
"statements": [
{
"nativeSrc": "2235:15:6",
"nodeType": "YulAssignment",
"src": "2235:15:6",
"value": {
"arguments": [
{
"name": "i",
"nativeSrc": "2244:1:6",
"nodeType": "YulIdentifier",
"src": "2244:1:6"
},
{
"kind": "number",
"nativeSrc": "2247:2:6",
"nodeType": "YulLiteral",
"src": "2247:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2240:3:6",
"nodeType": "YulIdentifier",
"src": "2240:3:6"
},
"nativeSrc": "2240:10:6",
"nodeType": "YulFunctionCall",
"src": "2240:10:6"
},
"variableNames": [
{
"name": "i",
"nativeSrc": "2235:1:6",
"nodeType": "YulIdentifier",
"src": "2235:1:6"
}
]
}
]
},
"pre": {
"nativeSrc": "2215:3:6",
"nodeType": "YulBlock",
"src": "2215:3:6",
"statements": []
},
"src": "2211:113:6"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nativeSrc": "2344:3:6",
"nodeType": "YulIdentifier",
"src": "2344:3:6"
},
{
"name": "length",
"nativeSrc": "2349:6:6",
"nodeType": "YulIdentifier",
"src": "2349:6:6"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2340:3:6",
"nodeType": "YulIdentifier",
"src": "2340:3:6"
},
"nativeSrc": "2340:16:6",
"nodeType": "YulFunctionCall",
"src": "2340:16:6"
},
{
"kind": "number",
"nativeSrc": "2358:1:6",
"nodeType": "YulLiteral",
"src": "2358:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2333:6:6",
"nodeType": "YulIdentifier",
"src": "2333:6:6"
},
"nativeSrc": "2333:27:6",
"nodeType": "YulFunctionCall",
"src": "2333:27:6"
},
"nativeSrc": "2333:27:6",
"nodeType": "YulExpressionStatement",
"src": "2333:27:6"
}
]
},
"name": "copy_memory_to_memory_with_cleanup",
"nativeSrc": "2120:246:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nativeSrc": "2164:3:6",
"nodeType": "YulTypedName",
"src": "2164:3:6",
"type": ""
},
{
"name": "dst",
"nativeSrc": "2169:3:6",
"nodeType": "YulTypedName",
"src": "2169:3:6",
"type": ""
},
{
"name": "length",
"nativeSrc": "2174:6:6",
"nodeType": "YulTypedName",
"src": "2174:6:6",
"type": ""
}
],
"src": "2120:246:6"
},
{
"body": {
"nativeSrc": "2466:338:6",
"nodeType": "YulBlock",
"src": "2466:338:6",
"statements": [
{
"nativeSrc": "2476:74:6",
"nodeType": "YulAssignment",
"src": "2476:74:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nativeSrc": "2542:6:6",
"nodeType": "YulIdentifier",
"src": "2542:6:6"
}
],
"functionName": {
"name": "array_allocation_size_t_bytes_memory_ptr",
"nativeSrc": "2501:40:6",
"nodeType": "YulIdentifier",
"src": "2501:40:6"
},
"nativeSrc": "2501:48:6",
"nodeType": "YulFunctionCall",
"src": "2501:48:6"
}
],
"functionName": {
"name": "allocate_memory",
"nativeSrc": "2485:15:6",
"nodeType": "YulIdentifier",
"src": "2485:15:6"
},
"nativeSrc": "2485:65:6",
"nodeType": "YulFunctionCall",
"src": "2485:65:6"
},
"variableNames": [
{
"name": "array",
"nativeSrc": "2476:5:6",
"nodeType": "YulIdentifier",
"src": "2476:5:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nativeSrc": "2566:5:6",
"nodeType": "YulIdentifier",
"src": "2566:5:6"
},
{
"name": "length",
"nativeSrc": "2573:6:6",
"nodeType": "YulIdentifier",
"src": "2573:6:6"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2559:6:6",
"nodeType": "YulIdentifier",
"src": "2559:6:6"
},
"nativeSrc": "2559:21:6",
"nodeType": "YulFunctionCall",
"src": "2559:21:6"
},
"nativeSrc": "2559:21:6",
"nodeType": "YulExpressionStatement",
"src": "2559:21:6"
},
{
"nativeSrc": "2589:27:6",
"nodeType": "YulVariableDeclaration",
"src": "2589:27:6",
"value": {
"arguments": [
{
"name": "array",
"nativeSrc": "2604:5:6",
"nodeType": "YulIdentifier",
"src": "2604:5:6"
},
{
"kind": "number",
"nativeSrc": "2611:4:6",
"nodeType": "YulLiteral",
"src": "2611:4:6",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2600:3:6",
"nodeType": "YulIdentifier",
"src": "2600:3:6"
},
"nativeSrc": "2600:16:6",
"nodeType": "YulFunctionCall",
"src": "2600:16:6"
},
"variables": [
{
"name": "dst",
"nativeSrc": "2593:3:6",
"nodeType": "YulTypedName",
"src": "2593:3:6",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "2654:83:6",
"nodeType": "YulBlock",
"src": "2654:83:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nativeSrc": "2656:77:6",
"nodeType": "YulIdentifier",
"src": "2656:77:6"
},
"nativeSrc": "2656:79:6",
"nodeType": "YulFunctionCall",
"src": "2656:79:6"
},
"nativeSrc": "2656:79:6",
"nodeType": "YulExpressionStatement",
"src": "2656:79:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nativeSrc": "2635:3:6",
"nodeType": "YulIdentifier",
"src": "2635:3:6"
},
{
"name": "length",
"nativeSrc": "2640:6:6",
"nodeType": "YulIdentifier",
"src": "2640:6:6"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2631:3:6",
"nodeType": "YulIdentifier",
"src": "2631:3:6"
},
"nativeSrc": "2631:16:6",
"nodeType": "YulFunctionCall",
"src": "2631:16:6"
},
{
"name": "end",
"nativeSrc": "2649:3:6",
"nodeType": "YulIdentifier",
"src": "2649:3:6"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "2628:2:6",
"nodeType": "YulIdentifier",
"src": "2628:2:6"
},
"nativeSrc": "2628:25:6",
"nodeType": "YulFunctionCall",
"src": "2628:25:6"
},
"nativeSrc": "2625:112:6",
"nodeType": "YulIf",
"src": "2625:112:6"
},
{
"expression": {
"arguments": [
{
"name": "src",
"nativeSrc": "2781:3:6",
"nodeType": "YulIdentifier",
"src": "2781:3:6"
},
{
"name": "dst",
"nativeSrc": "2786:3:6",
"nodeType": "YulIdentifier",
"src": "2786:3:6"
},
{
"name": "length",
"nativeSrc": "2791:6:6",
"nodeType": "YulIdentifier",
"src": "2791:6:6"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nativeSrc": "2746:34:6",
"nodeType": "YulIdentifier",
"src": "2746:34:6"
},
"nativeSrc": "2746:52:6",
"nodeType": "YulFunctionCall",
"src": "2746:52:6"
},
"nativeSrc": "2746:52:6",
"nodeType": "YulExpressionStatement",
"src": "2746:52:6"
}
]
},
"name": "abi_decode_available_length_t_bytes_memory_ptr_fromMemory",
"nativeSrc": "2372:432:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nativeSrc": "2439:3:6",
"nodeType": "YulTypedName",
"src": "2439:3:6",
"type": ""
},
{
"name": "length",
"nativeSrc": "2444:6:6",
"nodeType": "YulTypedName",
"src": "2444:6:6",
"type": ""
},
{
"name": "end",
"nativeSrc": "2452:3:6",
"nodeType": "YulTypedName",
"src": "2452:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nativeSrc": "2460:5:6",
"nodeType": "YulTypedName",
"src": "2460:5:6",
"type": ""
}
],
"src": "2372:432:6"
},
{
"body": {
"nativeSrc": "2895:281:6",
"nodeType": "YulBlock",
"src": "2895:281:6",
"statements": [
{
"body": {
"nativeSrc": "2944:83:6",
"nodeType": "YulBlock",
"src": "2944:83:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nativeSrc": "2946:77:6",
"nodeType": "YulIdentifier",
"src": "2946:77:6"
},
"nativeSrc": "2946:79:6",
"nodeType": "YulFunctionCall",
"src": "2946:79:6"
},
"nativeSrc": "2946:79:6",
"nodeType": "YulExpressionStatement",
"src": "2946:79:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nativeSrc": "2923:6:6",
"nodeType": "YulIdentifier",
"src": "2923:6:6"
},
{
"kind": "number",
"nativeSrc": "2931:4:6",
"nodeType": "YulLiteral",
"src": "2931:4:6",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2919:3:6",
"nodeType": "YulIdentifier",
"src": "2919:3:6"
},
"nativeSrc": "2919:17:6",
"nodeType": "YulFunctionCall",
"src": "2919:17:6"
},
{
"name": "end",
"nativeSrc": "2938:3:6",
"nodeType": "YulIdentifier",
"src": "2938:3:6"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "2915:3:6",
"nodeType": "YulIdentifier",
"src": "2915:3:6"
},
"nativeSrc": "2915:27:6",
"nodeType": "YulFunctionCall",
"src": "2915:27:6"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "2908:6:6",
"nodeType": "YulIdentifier",
"src": "2908:6:6"
},
"nativeSrc": "2908:35:6",
"nodeType": "YulFunctionCall",
"src": "2908:35:6"
},
"nativeSrc": "2905:122:6",
"nodeType": "YulIf",
"src": "2905:122:6"
},
{
"nativeSrc": "3036:27:6",
"nodeType": "YulVariableDeclaration",
"src": "3036:27:6",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "3056:6:6",
"nodeType": "YulIdentifier",
"src": "3056:6:6"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "3050:5:6",
"nodeType": "YulIdentifier",
"src": "3050:5:6"
},
"nativeSrc": "3050:13:6",
"nodeType": "YulFunctionCall",
"src": "3050:13:6"
},
"variables": [
{
"name": "length",
"nativeSrc": "3040:6:6",
"nodeType": "YulTypedName",
"src": "3040:6:6",
"type": ""
}
]
},
{
"nativeSrc": "3072:98:6",
"nodeType": "YulAssignment",
"src": "3072:98:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nativeSrc": "3143:6:6",
"nodeType": "YulIdentifier",
"src": "3143:6:6"
},
{
"kind": "number",
"nativeSrc": "3151:4:6",
"nodeType": "YulLiteral",
"src": "3151:4:6",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3139:3:6",
"nodeType": "YulIdentifier",
"src": "3139:3:6"
},
"nativeSrc": "3139:17:6",
"nodeType": "YulFunctionCall",
"src": "3139:17:6"
},
{
"name": "length",
"nativeSrc": "3158:6:6",
"nodeType": "YulIdentifier",
"src": "3158:6:6"
},
{
"name": "end",
"nativeSrc": "3166:3:6",
"nodeType": "YulIdentifier",
"src": "3166:3:6"
}
],
"functionName": {
"name": "abi_decode_available_length_t_bytes_memory_ptr_fromMemory",
"nativeSrc": "3081:57:6",
"nodeType": "YulIdentifier",
"src": "3081:57:6"
},
"nativeSrc": "3081:89:6",
"nodeType": "YulFunctionCall",
"src": "3081:89:6"
},
"variableNames": [
{
"name": "array",
"nativeSrc": "3072:5:6",
"nodeType": "YulIdentifier",
"src": "3072:5:6"
}
]
}
]
},
"name": "abi_decode_t_bytes_memory_ptr_fromMemory",
"nativeSrc": "2823:353:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "2873:6:6",
"nodeType": "YulTypedName",
"src": "2873:6:6",
"type": ""
},
{
"name": "end",
"nativeSrc": "2881:3:6",
"nodeType": "YulTypedName",
"src": "2881:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nativeSrc": "2889:5:6",
"nodeType": "YulTypedName",
"src": "2889:5:6",
"type": ""
}
],
"src": "2823:353:6"
},
{
"body": {
"nativeSrc": "3285:575:6",
"nodeType": "YulBlock",
"src": "3285:575:6",
"statements": [
{
"body": {
"nativeSrc": "3331:83:6",
"nodeType": "YulBlock",
"src": "3331:83:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "3333:77:6",
"nodeType": "YulIdentifier",
"src": "3333:77:6"
},
"nativeSrc": "3333:79:6",
"nodeType": "YulFunctionCall",
"src": "3333:79:6"
},
"nativeSrc": "3333:79:6",
"nodeType": "YulExpressionStatement",
"src": "3333:79:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "3306:7:6",
"nodeType": "YulIdentifier",
"src": "3306:7:6"
},
{
"name": "headStart",
"nativeSrc": "3315:9:6",
"nodeType": "YulIdentifier",
"src": "3315:9:6"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "3302:3:6",
"nodeType": "YulIdentifier",
"src": "3302:3:6"
},
"nativeSrc": "3302:23:6",
"nodeType": "YulFunctionCall",
"src": "3302:23:6"
},
{
"kind": "number",
"nativeSrc": "3327:2:6",
"nodeType": "YulLiteral",
"src": "3327:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "3298:3:6",
"nodeType": "YulIdentifier",
"src": "3298:3:6"
},
"nativeSrc": "3298:32:6",
"nodeType": "YulFunctionCall",
"src": "3298:32:6"
},
"nativeSrc": "3295:119:6",
"nodeType": "YulIf",
"src": "3295:119:6"
},
{
"nativeSrc": "3424:128:6",
"nodeType": "YulBlock",
"src": "3424:128:6",
"statements": [
{
"nativeSrc": "3439:15:6",
"nodeType": "YulVariableDeclaration",
"src": "3439:15:6",
"value": {
"kind": "number",
"nativeSrc": "3453:1:6",
"nodeType": "YulLiteral",
"src": "3453:1:6",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "3443:6:6",
"nodeType": "YulTypedName",
"src": "3443:6:6",
"type": ""
}
]
},
{
"nativeSrc": "3468:74:6",
"nodeType": "YulAssignment",
"src": "3468:74:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "3514:9:6",
"nodeType": "YulIdentifier",
"src": "3514:9:6"
},
{
"name": "offset",
"nativeSrc": "3525:6:6",
"nodeType": "YulIdentifier",
"src": "3525:6:6"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3510:3:6",
"nodeType": "YulIdentifier",
"src": "3510:3:6"
},
"nativeSrc": "3510:22:6",
"nodeType": "YulFunctionCall",
"src": "3510:22:6"
},
{
"name": "dataEnd",
"nativeSrc": "3534:7:6",
"nodeType": "YulIdentifier",
"src": "3534:7:6"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nativeSrc": "3478:31:6",
"nodeType": "YulIdentifier",
"src": "3478:31:6"
},
"nativeSrc": "3478:64:6",
"nodeType": "YulFunctionCall",
"src": "3478:64:6"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "3468:6:6",
"nodeType": "YulIdentifier",
"src": "3468:6:6"
}
]
}
]
},
{
"nativeSrc": "3562:291:6",
"nodeType": "YulBlock",
"src": "3562:291:6",
"statements": [
{
"nativeSrc": "3577:39:6",
"nodeType": "YulVariableDeclaration",
"src": "3577:39:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "3601:9:6",
"nodeType": "YulIdentifier",
"src": "3601:9:6"
},
{
"kind": "number",
"nativeSrc": "3612:2:6",
"nodeType": "YulLiteral",
"src": "3612:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3597:3:6",
"nodeType": "YulIdentifier",
"src": "3597:3:6"
},
"nativeSrc": "3597:18:6",
"nodeType": "YulFunctionCall",
"src": "3597:18:6"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "3591:5:6",
"nodeType": "YulIdentifier",
"src": "3591:5:6"
},
"nativeSrc": "3591:25:6",
"nodeType": "YulFunctionCall",
"src": "3591:25:6"
},
"variables": [
{
"name": "offset",
"nativeSrc": "3581:6:6",
"nodeType": "YulTypedName",
"src": "3581:6:6",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "3663:83:6",
"nodeType": "YulBlock",
"src": "3663:83:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nativeSrc": "3665:77:6",
"nodeType": "YulIdentifier",
"src": "3665:77:6"
},
"nativeSrc": "3665:79:6",
"nodeType": "YulFunctionCall",
"src": "3665:79:6"
},
"nativeSrc": "3665:79:6",
"nodeType": "YulExpressionStatement",
"src": "3665:79:6"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nativeSrc": "3635:6:6",
"nodeType": "YulIdentifier",
"src": "3635:6:6"
},
{
"kind": "number",
"nativeSrc": "3643:18:6",
"nodeType": "YulLiteral",
"src": "3643:18:6",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "3632:2:6",
"nodeType": "YulIdentifier",
"src": "3632:2:6"
},
"nativeSrc": "3632:30:6",
"nodeType": "YulFunctionCall",
"src": "3632:30:6"
},
"nativeSrc": "3629:117:6",
"nodeType": "YulIf",
"src": "3629:117:6"
},
{
"nativeSrc": "3760:83:6",
"nodeType": "YulAssignment",
"src": "3760:83:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "3815:9:6",
"nodeType": "YulIdentifier",
"src": "3815:9:6"
},
{
"name": "offset",
"nativeSrc": "3826:6:6",
"nodeType": "YulIdentifier",
"src": "3826:6:6"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3811:3:6",
"nodeType": "YulIdentifier",
"src": "3811:3:6"
},
"nativeSrc": "3811:22:6",
"nodeType": "YulFunctionCall",
"src": "3811:22:6"
},
{
"name": "dataEnd",
"nativeSrc": "3835:7:6",
"nodeType": "YulIdentifier",
"src": "3835:7:6"
}
],
"functionName": {
"name": "abi_decode_t_bytes_memory_ptr_fromMemory",
"nativeSrc": "3770:40:6",
"nodeType": "YulIdentifier",
"src": "3770:40:6"
},
"nativeSrc": "3770:73:6",
"nodeType": "YulFunctionCall",
"src": "3770:73:6"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "3760:6:6",
"nodeType": "YulIdentifier",
"src": "3760:6:6"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory",
"nativeSrc": "3182:678:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "3247:9:6",
"nodeType": "YulTypedName",
"src": "3247:9:6",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "3258:7:6",
"nodeType": "YulTypedName",
"src": "3258:7:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "3270:6:6",
"nodeType": "YulTypedName",
"src": "3270:6:6",
"type": ""
},
{
"name": "value1",
"nativeSrc": "3278:6:6",
"nodeType": "YulTypedName",
"src": "3278:6:6",
"type": ""
}
],
"src": "3182:678:6"
},
{
"body": {
"nativeSrc": "3931:53:6",
"nodeType": "YulBlock",
"src": "3931:53:6",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "3948:3:6",
"nodeType": "YulIdentifier",
"src": "3948:3:6"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "3971:5:6",
"nodeType": "YulIdentifier",
"src": "3971:5:6"
}
],
"functionName": {
"name": "cleanup_t_address",
"nativeSrc": "3953:17:6",
"nodeType": "YulIdentifier",
"src": "3953:17:6"
},
"nativeSrc": "3953:24:6",
"nodeType": "YulFunctionCall",
"src": "3953:24:6"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "3941:6:6",
"nodeType": "YulIdentifier",
"src": "3941:6:6"
},
"nativeSrc": "3941:37:6",
"nodeType": "YulFunctionCall",
"src": "3941:37:6"
},
"nativeSrc": "3941:37:6",
"nodeType": "YulExpressionStatement",
"src": "3941:37:6"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nativeSrc": "3866:118:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "3919:5:6",
"nodeType": "YulTypedName",
"src": "3919:5:6",
"type": ""
},
{
"name": "pos",
"nativeSrc": "3926:3:6",
"nodeType": "YulTypedName",
"src": "3926:3:6",
"type": ""
}
],
"src": "3866:118:6"
},
{
"body": {
"nativeSrc": "4088:124:6",
"nodeType": "YulBlock",
"src": "4088:124:6",
"statements": [
{
"nativeSrc": "4098:26:6",
"nodeType": "YulAssignment",
"src": "4098:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "4110:9:6",
"nodeType": "YulIdentifier",
"src": "4110:9:6"
},
{
"kind": "number",
"nativeSrc": "4121:2:6",
"nodeType": "YulLiteral",
"src": "4121:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4106:3:6",
"nodeType": "YulIdentifier",
"src": "4106:3:6"
},
"nativeSrc": "4106:18:6",
"nodeType": "YulFunctionCall",
"src": "4106:18:6"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "4098:4:6",
"nodeType": "YulIdentifier",
"src": "4098:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "4178:6:6",
"nodeType": "YulIdentifier",
"src": "4178:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "4191:9:6",
"nodeType": "YulIdentifier",
"src": "4191:9:6"
},
{
"kind": "number",
"nativeSrc": "4202:1:6",
"nodeType": "YulLiteral",
"src": "4202:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4187:3:6",
"nodeType": "YulIdentifier",
"src": "4187:3:6"
},
"nativeSrc": "4187:17:6",
"nodeType": "YulFunctionCall",
"src": "4187:17:6"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nativeSrc": "4134:43:6",
"nodeType": "YulIdentifier",
"src": "4134:43:6"
},
"nativeSrc": "4134:71:6",
"nodeType": "YulFunctionCall",
"src": "4134:71:6"
},
"nativeSrc": "4134:71:6",
"nodeType": "YulExpressionStatement",
"src": "4134:71:6"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nativeSrc": "3990:222:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "4060:9:6",
"nodeType": "YulTypedName",
"src": "4060:9:6",
"type": ""
},
{
"name": "value0",
"nativeSrc": "4072:6:6",
"nodeType": "YulTypedName",
"src": "4072:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "4083:4:6",
"nodeType": "YulTypedName",
"src": "4083:4:6",
"type": ""
}
],
"src": "3990:222:6"
},
{
"body": {
"nativeSrc": "4276:40:6",
"nodeType": "YulBlock",
"src": "4276:40:6",
"statements": [
{
"nativeSrc": "4287:22:6",
"nodeType": "YulAssignment",
"src": "4287:22:6",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "4303:5:6",
"nodeType": "YulIdentifier",
"src": "4303:5:6"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "4297:5:6",
"nodeType": "YulIdentifier",
"src": "4297:5:6"
},
"nativeSrc": "4297:12:6",
"nodeType": "YulFunctionCall",
"src": "4297:12:6"
},
"variableNames": [
{
"name": "length",
"nativeSrc": "4287:6:6",
"nodeType": "YulIdentifier",
"src": "4287:6:6"
}
]
}
]
},
"name": "array_length_t_bytes_memory_ptr",
"nativeSrc": "4218:98:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "4259:5:6",
"nodeType": "YulTypedName",
"src": "4259:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nativeSrc": "4269:6:6",
"nodeType": "YulTypedName",
"src": "4269:6:6",
"type": ""
}
],
"src": "4218:98:6"
},
{
"body": {
"nativeSrc": "4435:34:6",
"nodeType": "YulBlock",
"src": "4435:34:6",
"statements": [
{
"nativeSrc": "4445:18:6",
"nodeType": "YulAssignment",
"src": "4445:18:6",
"value": {
"name": "pos",
"nativeSrc": "4460:3:6",
"nodeType": "YulIdentifier",
"src": "4460:3:6"
},
"variableNames": [
{
"name": "updated_pos",
"nativeSrc": "4445:11:6",
"nodeType": "YulIdentifier",
"src": "4445:11:6"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nativeSrc": "4322:147:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "4407:3:6",
"nodeType": "YulTypedName",
"src": "4407:3:6",
"type": ""
},
{
"name": "length",
"nativeSrc": "4412:6:6",
"nodeType": "YulTypedName",
"src": "4412:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nativeSrc": "4423:11:6",
"nodeType": "YulTypedName",
"src": "4423:11:6",
"type": ""
}
],
"src": "4322:147:6"
},
{
"body": {
"nativeSrc": "4583:278:6",
"nodeType": "YulBlock",
"src": "4583:278:6",
"statements": [
{
"nativeSrc": "4593:52:6",
"nodeType": "YulVariableDeclaration",
"src": "4593:52:6",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "4639:5:6",
"nodeType": "YulIdentifier",
"src": "4639:5:6"
}
],
"functionName": {
"name": "array_length_t_bytes_memory_ptr",
"nativeSrc": "4607:31:6",
"nodeType": "YulIdentifier",
"src": "4607:31:6"
},
"nativeSrc": "4607:38:6",
"nodeType": "YulFunctionCall",
"src": "4607:38:6"
},
"variables": [
{
"name": "length",
"nativeSrc": "4597:6:6",
"nodeType": "YulTypedName",
"src": "4597:6:6",
"type": ""
}
]
},
{
"nativeSrc": "4654:95:6",
"nodeType": "YulAssignment",
"src": "4654:95:6",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "4737:3:6",
"nodeType": "YulIdentifier",
"src": "4737:3:6"
},
{
"name": "length",
"nativeSrc": "4742:6:6",
"nodeType": "YulIdentifier",
"src": "4742:6:6"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nativeSrc": "4661:75:6",
"nodeType": "YulIdentifier",
"src": "4661:75:6"
},
"nativeSrc": "4661:88:6",
"nodeType": "YulFunctionCall",
"src": "4661:88:6"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "4654:3:6",
"nodeType": "YulIdentifier",
"src": "4654:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "4797:5:6",
"nodeType": "YulIdentifier",
"src": "4797:5:6"
},
{
"kind": "number",
"nativeSrc": "4804:4:6",
"nodeType": "YulLiteral",
"src": "4804:4:6",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4793:3:6",
"nodeType": "YulIdentifier",
"src": "4793:3:6"
},
"nativeSrc": "4793:16:6",
"nodeType": "YulFunctionCall",
"src": "4793:16:6"
},
{
"name": "pos",
"nativeSrc": "4811:3:6",
"nodeType": "YulIdentifier",
"src": "4811:3:6"
},
{
"name": "length",
"nativeSrc": "4816:6:6",
"nodeType": "YulIdentifier",
"src": "4816:6:6"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nativeSrc": "4758:34:6",
"nodeType": "YulIdentifier",
"src": "4758:34:6"
},
"nativeSrc": "4758:65:6",
"nodeType": "YulFunctionCall",
"src": "4758:65:6"
},
"nativeSrc": "4758:65:6",
"nodeType": "YulExpressionStatement",
"src": "4758:65:6"
},
{
"nativeSrc": "4832:23:6",
"nodeType": "YulAssignment",
"src": "4832:23:6",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "4843:3:6",
"nodeType": "YulIdentifier",
"src": "4843:3:6"
},
{
"name": "length",
"nativeSrc": "4848:6:6",
"nodeType": "YulIdentifier",
"src": "4848:6:6"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4839:3:6",
"nodeType": "YulIdentifier",
"src": "4839:3:6"
},
"nativeSrc": "4839:16:6",
"nodeType": "YulFunctionCall",
"src": "4839:16:6"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "4832:3:6",
"nodeType": "YulIdentifier",
"src": "4832:3:6"
}
]
}
]
},
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nativeSrc": "4475:386:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "4564:5:6",
"nodeType": "YulTypedName",
"src": "4564:5:6",
"type": ""
},
{
"name": "pos",
"nativeSrc": "4571:3:6",
"nodeType": "YulTypedName",
"src": "4571:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "4579:3:6",
"nodeType": "YulTypedName",
"src": "4579:3:6",
"type": ""
}
],
"src": "4475:386:6"
},
{
"body": {
"nativeSrc": "5001:137:6",
"nodeType": "YulBlock",
"src": "5001:137:6",
"statements": [
{
"nativeSrc": "5012:100:6",
"nodeType": "YulAssignment",
"src": "5012:100:6",
"value": {
"arguments": [
{
"name": "value0",
"nativeSrc": "5099:6:6",
"nodeType": "YulIdentifier",
"src": "5099:6:6"
},
{
"name": "pos",
"nativeSrc": "5108:3:6",
"nodeType": "YulIdentifier",
"src": "5108:3:6"
}
],
"functionName": {
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nativeSrc": "5019:79:6",
"nodeType": "YulIdentifier",
"src": "5019:79:6"
},
"nativeSrc": "5019:93:6",
"nodeType": "YulFunctionCall",
"src": "5019:93:6"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "5012:3:6",
"nodeType": "YulIdentifier",
"src": "5012:3:6"
}
]
},
{
"nativeSrc": "5122:10:6",
"nodeType": "YulAssignment",
"src": "5122:10:6",
"value": {
"name": "pos",
"nativeSrc": "5129:3:6",
"nodeType": "YulIdentifier",
"src": "5129:3:6"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "5122:3:6",
"nodeType": "YulIdentifier",
"src": "5122:3:6"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nativeSrc": "4867:271:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "4980:3:6",
"nodeType": "YulTypedName",
"src": "4980:3:6",
"type": ""
},
{
"name": "value0",
"nativeSrc": "4986:6:6",
"nodeType": "YulTypedName",
"src": "4986:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "4997:3:6",
"nodeType": "YulTypedName",
"src": "4997:3:6",
"type": ""
}
],
"src": "4867:271:6"
}
]
},
"contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_bytes_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory_with_cleanup(src, dst, length)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_bytes_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n}\n",
"id": 6,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "60806040526040516106ae3803806106ae833981810160405281019061002591906104f2565b610035828261003c60201b60201c565b50506105ce565b61004b826100c060201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25f815111156100ad576100a7828261018f60201b60201c565b506100bc565b6100bb61021560201b60201c565b5b5050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b0361011b57806040517f4c9c8ce3000000000000000000000000000000000000000000000000000000008152600401610112919061055b565b60405180910390fd5b8061014d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b61025160201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f808473ffffffffffffffffffffffffffffffffffffffff16846040516101b891906105b8565b5f60405180830381855af49150503d805f81146101f0576040519150601f19603f3d011682016040523d82523d5f602084013e6101f5565b606091505b509150915061020b85838361025a60201b60201c565b9250505092915050565b5f34111561024f576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f819050919050565b60608261027557610270826102ed60201b60201c565b6102e5565b5f825114801561029b57505f8473ffffffffffffffffffffffffffffffffffffffff163b145b156102dd57836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016102d4919061055b565b60405180910390fd5b8190506102e6565b5b9392505050565b5f815111156102ff5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61036b82610342565b9050919050565b61037b81610361565b8114610385575f80fd5b50565b5f8151905061039681610372565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6103ea826103a4565b810181811067ffffffffffffffff82111715610409576104086103b4565b5b80604052505050565b5f61041b610331565b905061042782826103e1565b919050565b5f67ffffffffffffffff821115610446576104456103b4565b5b61044f826103a4565b9050602081019050919050565b5f5b8381101561047957808201518184015260208101905061045e565b5f8484015250505050565b5f6104966104918461042c565b610412565b9050828152602081018484840111156104b2576104b16103a0565b5b6104bd84828561045c565b509392505050565b5f82601f8301126104d9576104d861039c565b5b81516104e9848260208601610484565b91505092915050565b5f80604083850312156105085761050761033a565b5b5f61051585828601610388565b925050602083015167ffffffffffffffff8111156105365761053561033e565b5b610542858286016104c5565b9150509250929050565b61055581610361565b82525050565b5f60208201905061056e5f83018461054c565b92915050565b5f81519050919050565b5f81905092915050565b5f61059282610574565b61059c818561057e565b93506105ac81856020860161045c565b80840191505092915050565b5f6105c38284610588565b915081905092915050565b60d4806105da5f395ff3fe6080604052600a600c565b005b60186014601a565b6026565b565b5f60216044565b905090565b365f80375f80365f845af43d5f803e805f81146040573d5ff35b3d5ffd5b5f606e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b6095565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81905091905056fea26469706673582212204445ca1d654fe96658df00412cf9c7bcb1fdfaf66f39f4eb3c6a802907e7966864736f6c63430008150033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6AE CODESIZE SUB DUP1 PUSH2 0x6AE DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x25 SWAP2 SWAP1 PUSH2 0x4F2 JUMP JUMPDEST PUSH2 0x35 DUP3 DUP3 PUSH2 0x3C PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP PUSH2 0x5CE JUMP JUMPDEST PUSH2 0x4B DUP3 PUSH2 0xC0 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH0 DUP2 MLOAD GT ISZERO PUSH2 0xAD JUMPI PUSH2 0xA7 DUP3 DUP3 PUSH2 0x18F PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH2 0xBC JUMP JUMPDEST PUSH2 0xBB PUSH2 0x215 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH2 0x11B JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x112 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x14D PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH0 SHL PUSH2 0x251 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x1B8 SWAP2 SWAP1 PUSH2 0x5B8 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1F0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1F5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x20B DUP6 DUP4 DUP4 PUSH2 0x25A PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLVALUE GT ISZERO PUSH2 0x24F JUMPI PUSH1 0x40 MLOAD PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x275 JUMPI PUSH2 0x270 DUP3 PUSH2 0x2ED PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x2E5 JUMP JUMPDEST PUSH0 DUP3 MLOAD EQ DUP1 ISZERO PUSH2 0x29B JUMPI POP PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST ISZERO PUSH2 0x2DD JUMPI DUP4 PUSH1 0x40 MLOAD PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D4 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP1 POP PUSH2 0x2E6 JUMP JUMPDEST JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD GT ISZERO PUSH2 0x2FF JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x36B DUP3 PUSH2 0x342 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x37B DUP2 PUSH2 0x361 JUMP JUMPDEST DUP2 EQ PUSH2 0x385 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x396 DUP2 PUSH2 0x372 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x3EA DUP3 PUSH2 0x3A4 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x409 JUMPI PUSH2 0x408 PUSH2 0x3B4 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x41B PUSH2 0x331 JUMP JUMPDEST SWAP1 POP PUSH2 0x427 DUP3 DUP3 PUSH2 0x3E1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x446 JUMPI PUSH2 0x445 PUSH2 0x3B4 JUMP JUMPDEST JUMPDEST PUSH2 0x44F DUP3 PUSH2 0x3A4 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x479 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x45E JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x496 PUSH2 0x491 DUP5 PUSH2 0x42C JUMP JUMPDEST PUSH2 0x412 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x4B2 JUMPI PUSH2 0x4B1 PUSH2 0x3A0 JUMP JUMPDEST JUMPDEST PUSH2 0x4BD DUP5 DUP3 DUP6 PUSH2 0x45C JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4D9 JUMPI PUSH2 0x4D8 PUSH2 0x39C JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x4E9 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x484 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x508 JUMPI PUSH2 0x507 PUSH2 0x33A JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x515 DUP6 DUP3 DUP7 ADD PUSH2 0x388 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x536 JUMPI PUSH2 0x535 PUSH2 0x33E JUMP JUMPDEST JUMPDEST PUSH2 0x542 DUP6 DUP3 DUP7 ADD PUSH2 0x4C5 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x555 DUP2 PUSH2 0x361 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x56E PUSH0 DUP4 ADD DUP5 PUSH2 0x54C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x592 DUP3 PUSH2 0x574 JUMP JUMPDEST PUSH2 0x59C DUP2 DUP6 PUSH2 0x57E JUMP JUMPDEST SWAP4 POP PUSH2 0x5AC DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x45C JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5C3 DUP3 DUP5 PUSH2 0x588 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xD4 DUP1 PUSH2 0x5DA PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x26 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x21 PUSH1 0x44 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY DUP1 PUSH0 DUP2 EQ PUSH1 0x40 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x6E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH0 SHL PUSH1 0x95 JUMP JUMPDEST PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PREVRANDAO GASLIMIT 0xCA SAR PUSH6 0x4FE96658DF00 COINBASE 0x2C 0xF9 0xC7 0xBC 0xB1 REVERT STATICCALL 0xF6 PUSH16 0x39F4EB3C6A802907E7966864736F6C63 NUMBER STOP ADDMOD ISZERO STOP CALLER ",
"sourceMap": "599:1116:0:-:0;;;1080:133;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1154:52;1184:14;1200:5;1154:29;;;:52;;:::i;:::-;1080:133;;599:1116;;2779:335:1;2870:37;2889:17;2870:18;;;:37;;:::i;:::-;2931:17;2922:27;;;;;;;;;;;;2978:1;2964:4;:11;:15;2960:148;;;2995:53;3024:17;3043:4;2995:28;;;:53;;:::i;:::-;;2960:148;;;3079:18;:16;;;:18;;:::i;:::-;2960:148;2779:335;;:::o;2186:281::-;2296:1;2263:17;:29;;;:34;2259:119;;2349:17;2320:47;;;;;;;;;;;:::i;:::-;;;;;;;;2259:119;2443:17;2387:47;1327:66;2414:19;;2387:26;;;:47;;:::i;:::-;:53;;;:73;;;;;;;;;;;;;;;;;;2186:281;:::o;4106:253:4:-;4189:12;4214;4228:23;4255:6;:19;;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;;;:55;;:::i;:::-;4290:62;;;;4106:253;;;;:::o;6598:122:1:-;6660:1;6648:9;:13;6644:70;;;6684:19;;;;;;;;;;;;;;6644:70;6598:122::o;1684:190:5:-;1745:21;1854:4;1844:14;;1684:190;;;:::o;4625:582:4:-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;;;:19;;:::i;:::-;4793:408;;;5066:1;5045:10;:17;:22;:49;;;;;5093:1;5071:6;:18;;;:23;5045:49;5041:119;;;5138:6;5121:24;;;;;;;;;;;:::i;:::-;;;;;;;;5041:119;5180:10;5173:17;;;;4793:408;4625:582;;;;;;:::o;5743:516::-;5894:1;5874:10;:17;:21;5870:383;;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;;;;;;;;;;;;;7:75:6;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:117::-;954:1;951;944:12;968:117;1077:1;1074;1067:12;1091:102;1132:6;1183:2;1179:7;1174:2;1167:5;1163:14;1159:28;1149:38;;1091:102;;;:::o;1199:180::-;1247:77;1244:1;1237:88;1344:4;1341:1;1334:15;1368:4;1365:1;1358:15;1385:281;1468:27;1490:4;1468:27;:::i;:::-;1460:6;1456:40;1598:6;1586:10;1583:22;1562:18;1550:10;1547:34;1544:62;1541:88;;;1609:18;;:::i;:::-;1541:88;1649:10;1645:2;1638:22;1428:238;1385:281;;:::o;1672:129::-;1706:6;1733:20;;:::i;:::-;1723:30;;1762:33;1790:4;1782:6;1762:33;:::i;:::-;1672:129;;;:::o;1807:307::-;1868:4;1958:18;1950:6;1947:30;1944:56;;;1980:18;;:::i;:::-;1944:56;2018:29;2040:6;2018:29;:::i;:::-;2010:37;;2102:4;2096;2092:15;2084:23;;1807:307;;;:::o;2120:246::-;2201:1;2211:113;2225:6;2222:1;2219:13;2211:113;;;2310:1;2305:3;2301:11;2295:18;2291:1;2286:3;2282:11;2275:39;2247:2;2244:1;2240:10;2235:15;;2211:113;;;2358:1;2349:6;2344:3;2340:16;2333:27;2182:184;2120:246;;;:::o;2372:432::-;2460:5;2485:65;2501:48;2542:6;2501:48;:::i;:::-;2485:65;:::i;:::-;2476:74;;2573:6;2566:5;2559:21;2611:4;2604:5;2600:16;2649:3;2640:6;2635:3;2631:16;2628:25;2625:112;;;2656:79;;:::i;:::-;2625:112;2746:52;2791:6;2786:3;2781;2746:52;:::i;:::-;2466:338;2372:432;;;;;:::o;2823:353::-;2889:5;2938:3;2931:4;2923:6;2919:17;2915:27;2905:122;;2946:79;;:::i;:::-;2905:122;3056:6;3050:13;3081:89;3166:3;3158:6;3151:4;3143:6;3139:17;3081:89;:::i;:::-;3072:98;;2895:281;2823:353;;;;:::o;3182:678::-;3270:6;3278;3327:2;3315:9;3306:7;3302:23;3298:32;3295:119;;;3333:79;;:::i;:::-;3295:119;3453:1;3478:64;3534:7;3525:6;3514:9;3510:22;3478:64;:::i;:::-;3468:74;;3424:128;3612:2;3601:9;3597:18;3591:25;3643:18;3635:6;3632:30;3629:117;;;3665:79;;:::i;:::-;3629:117;3770:73;3835:7;3826:6;3815:9;3811:22;3770:73;:::i;:::-;3760:83;;3562:291;3182:678;;;;;:::o;3866:118::-;3953:24;3971:5;3953:24;:::i;:::-;3948:3;3941:37;3866:118;;:::o;3990:222::-;4083:4;4121:2;4110:9;4106:18;4098:26;;4134:71;4202:1;4191:9;4187:17;4178:6;4134:71;:::i;:::-;3990:222;;;;:::o;4218:98::-;4269:6;4303:5;4297:12;4287:22;;4218:98;;;:::o;4322:147::-;4423:11;4460:3;4445:18;;4322:147;;;;:::o;4475:386::-;4579:3;4607:38;4639:5;4607:38;:::i;:::-;4661:88;4742:6;4737:3;4661:88;:::i;:::-;4654:95;;4758:65;4816:6;4811:3;4804:4;4797:5;4793:16;4758:65;:::i;:::-;4848:6;4843:3;4839:16;4832:23;;4583:278;4475:386;;;;:::o;4867:271::-;4997:3;5019:93;5108:3;5099:6;5019:93;:::i;:::-;5012:100;;5129:3;5122:10;;4867:271;;;;:::o;599:1116:0:-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_375": {
"entryPoint": null,
"id": 375,
"parameterSlots": 0,
"returnSlots": 0
},
"@_delegate_351": {
"entryPoint": 38,
"id": 351,
"parameterSlots": 1,
"returnSlots": 0
},
"@_fallback_367": {
"entryPoint": 12,
"id": 367,
"parameterSlots": 0,
"returnSlots": 0
},
"@_implementation_36": {
"entryPoint": 26,
"id": 36,
"parameterSlots": 0,
"returnSlots": 1
},
"@getAddressSlot_671": {
"entryPoint": 149,
"id": 671,
"parameterSlots": 1,
"returnSlots": 1
},
"@getImplementation_98": {
"entryPoint": 68,
"id": 98,
"parameterSlots": 0,
"returnSlots": 1
}
},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600a600c565b005b60186014601a565b6026565b565b5f60216044565b905090565b365f80375f80365f845af43d5f803e805f81146040573d5ff35b3d5ffd5b5f606e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b6095565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81905091905056fea26469706673582212204445ca1d654fe96658df00412cf9c7bcb1fdfaf66f39f4eb3c6a802907e7966864736f6c63430008150033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x26 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x21 PUSH1 0x44 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY DUP1 PUSH0 DUP2 EQ PUSH1 0x40 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x6E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH0 SHL PUSH1 0x95 JUMP JUMPDEST PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PREVRANDAO GASLIMIT 0xCA SAR PUSH6 0x4FE96658DF00 COINBASE 0x2C 0xF9 0xC7 0xBC 0xB1 REVERT STATICCALL 0xF6 PUSH16 0x39F4EB3C6A802907E7966864736F6C63 NUMBER STOP ADDMOD ISZERO STOP CALLER ",
"sourceMap": "599:1116:0:-:0;;;2649:11:2;:9;:11::i;:::-;599:1116:0;2323:83:2;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;:::-;2323:83::o;1581:132:0:-;1648:7;1674:32;:30;:32::i;:::-;1667:39;;1581:132;:::o;949:895:2:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1687:1;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27;1957:138:1;2009:7;2035:47;1327:66;2062:19;;2035:26;:47::i;:::-;:53;;;;;;;;;;;;2028:60;;1957:138;:::o;1684:190:5:-;1745:21;1854:4;1844:14;;1684:190;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "42400",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"": "infinite"
},
"internal": {
"_implementation()": "2243"
}
},
"legacyAssembly": {
".code": [
{
"begin": 599,
"end": 1715,
"name": "PUSH",
"source": 0,
"value": "80"
},
{
"begin": 599,
"end": 1715,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 599,
"end": 1715,
"name": "MSTORE",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 1080,
"end": 1213,
"name": "MLOAD",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "PUSHSIZE",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "CODESIZE",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "SUB",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "DUP1",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "PUSHSIZE",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "DUP4",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "CODECOPY",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "DUP2",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "DUP2",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "ADD",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 1080,
"end": 1213,
"name": "MSTORE",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "DUP2",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "ADD",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "SWAP1",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "PUSH [tag]",
"source": 0,
"value": "1"
},
{
"begin": 1080,
"end": 1213,
"name": "SWAP2",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "SWAP1",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "PUSH [tag]",
"source": 0,
"value": "2"
},
{
"begin": 1080,
"end": 1213,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "tag",
"source": 0,
"value": "1"
},
{
"begin": 1080,
"end": 1213,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 1154,
"end": 1206,
"name": "PUSH [tag]",
"source": 0,
"value": "5"
},
{
"begin": 1184,
"end": 1198,
"name": "DUP3",
"source": 0
},
{
"begin": 1200,
"end": 1205,
"name": "DUP3",
"source": 0
},
{
"begin": 1154,
"end": 1183,
"name": "PUSH [tag]",
"source": 0,
"value": "6"
},
{
"begin": 1154,
"end": 1183,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 1154,
"end": 1183,
"name": "SHL",
"source": 0
},
{
"begin": 1154,
"end": 1206,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 1154,
"end": 1206,
"name": "SHR",
"source": 0
},
{
"begin": 1154,
"end": 1206,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 1154,
"end": 1206,
"name": "tag",
"source": 0,
"value": "5"
},
{
"begin": 1154,
"end": 1206,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "POP",
"source": 0
},
{
"begin": 1080,
"end": 1213,
"name": "POP",
"source": 0
},
{
"begin": 599,
"end": 1715,
"name": "PUSH [tag]",
"source": 0,
"value": "7"
},
{
"begin": 599,
"end": 1715,
"name": "JUMP",
"source": 0
},
{
"begin": 2779,
"end": 3114,
"name": "tag",
"source": 1,
"value": "6"
},
{
"begin": 2779,
"end": 3114,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2870,
"end": 2907,
"name": "PUSH [tag]",
"source": 1,
"value": "9"
},
{
"begin": 2889,
"end": 2906,
"name": "DUP3",
"source": 1
},
{
"begin": 2870,
"end": 2888,
"name": "PUSH [tag]",
"source": 1,
"value": "10"
},
{
"begin": 2870,
"end": 2888,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 2870,
"end": 2888,
"name": "SHL",
"source": 1
},
{
"begin": 2870,
"end": 2907,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 2870,
"end": 2907,
"name": "SHR",
"source": 1
},
{
"begin": 2870,
"end": 2907,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 2870,
"end": 2907,
"name": "tag",
"source": 1,
"value": "9"
},
{
"begin": 2870,
"end": 2907,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2931,
"end": 2948,
"name": "DUP2",
"source": 1
},
{
"begin": 2922,
"end": 2949,
"name": "PUSH",
"source": 1,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2922,
"end": 2949,
"name": "AND",
"source": 1
},
{
"begin": 2922,
"end": 2949,
"name": "PUSH",
"source": 1,
"value": "BC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B"
},
{
"begin": 2922,
"end": 2949,
"name": "PUSH",
"source": 1,
"value": "40"
},
{
"begin": 2922,
"end": 2949,
"name": "MLOAD",
"source": 1
},
{
"begin": 2922,
"end": 2949,
"name": "PUSH",
"source": 1,
"value": "40"
},
{
"begin": 2922,
"end": 2949,
"name": "MLOAD",
"source": 1
},
{
"begin": 2922,
"end": 2949,
"name": "DUP1",
"source": 1
},
{
"begin": 2922,
"end": 2949,
"name": "SWAP2",
"source": 1
},
{
"begin": 2922,
"end": 2949,
"name": "SUB",
"source": 1
},
{
"begin": 2922,
"end": 2949,
"name": "SWAP1",
"source": 1
},
{
"begin": 2922,
"end": 2949,
"name": "LOG2",
"source": 1
},
{
"begin": 2978,
"end": 2979,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 2964,
"end": 2968,
"name": "DUP2",
"source": 1
},
{
"begin": 2964,
"end": 2975,
"name": "MLOAD",
"source": 1
},
{
"begin": 2964,
"end": 2979,
"name": "GT",
"source": 1
},
{
"begin": 2960,
"end": 3108,
"name": "ISZERO",
"source": 1
},
{
"begin": 2960,
"end": 3108,
"name": "PUSH [tag]",
"source": 1,
"value": "11"
},
{
"begin": 2960,
"end": 3108,
"name": "JUMPI",
"source": 1
},
{
"begin": 2995,
"end": 3048,
"name": "PUSH [tag]",
"source": 1,
"value": "12"
},
{
"begin": 3024,
"end": 3041,
"name": "DUP3",
"source": 1
},
{
"begin": 3043,
"end": 3047,
"name": "DUP3",
"source": 1
},
{
"begin": 2995,
"end": 3023,
"name": "PUSH [tag]",
"source": 1,
"value": "13"
},
{
"begin": 2995,
"end": 3023,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 2995,
"end": 3023,
"name": "SHL",
"source": 1
},
{
"begin": 2995,
"end": 3048,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 2995,
"end": 3048,
"name": "SHR",
"source": 1
},
{
"begin": 2995,
"end": 3048,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 2995,
"end": 3048,
"name": "tag",
"source": 1,
"value": "12"
},
{
"begin": 2995,
"end": 3048,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2995,
"end": 3048,
"name": "POP",
"source": 1
},
{
"begin": 2960,
"end": 3108,
"name": "PUSH [tag]",
"source": 1,
"value": "14"
},
{
"begin": 2960,
"end": 3108,
"name": "JUMP",
"source": 1
},
{
"begin": 2960,
"end": 3108,
"name": "tag",
"source": 1,
"value": "11"
},
{
"begin": 2960,
"end": 3108,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 3079,
"end": 3097,
"name": "PUSH [tag]",
"source": 1,
"value": "15"
},
{
"begin": 3079,
"end": 3095,
"name": "PUSH [tag]",
"source": 1,
"value": "16"
},
{
"begin": 3079,
"end": 3095,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 3079,
"end": 3095,
"name": "SHL",
"source": 1
},
{
"begin": 3079,
"end": 3097,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 3079,
"end": 3097,
"name": "SHR",
"source": 1
},
{
"begin": 3079,
"end": 3097,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 3079,
"end": 3097,
"name": "tag",
"source": 1,
"value": "15"
},
{
"begin": 3079,
"end": 3097,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2960,
"end": 3108,
"name": "tag",
"source": 1,
"value": "14"
},
{
"begin": 2960,
"end": 3108,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2779,
"end": 3114,
"name": "POP",
"source": 1
},
{
"begin": 2779,
"end": 3114,
"name": "POP",
"source": 1
},
{
"begin": 2779,
"end": 3114,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 2186,
"end": 2467,
"name": "tag",
"source": 1,
"value": "10"
},
{
"begin": 2186,
"end": 2467,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2296,
"end": 2297,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 2263,
"end": 2280,
"name": "DUP2",
"source": 1
},
{
"begin": 2263,
"end": 2292,
"name": "PUSH",
"source": 1,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2263,
"end": 2292,
"name": "AND",
"source": 1
},
{
"begin": 2263,
"end": 2292,
"name": "EXTCODESIZE",
"source": 1
},
{
"begin": 2263,
"end": 2297,
"name": "SUB",
"source": 1
},
{
"begin": 2259,
"end": 2378,
"name": "PUSH [tag]",
"source": 1,
"value": "18"
},
{
"begin": 2259,
"end": 2378,
"name": "JUMPI",
"source": 1
},
{
"begin": 2349,
"end": 2366,
"name": "DUP1",
"source": 1
},
{
"begin": 2320,
"end": 2367,
"name": "PUSH",
"source": 1,
"value": "40"
},
{
"begin": 2320,
"end": 2367,
"name": "MLOAD",
"source": 1
},
{
"begin": 2320,
"end": 2367,
"name": "PUSH",
"source": 1,
"value": "4C9C8CE300000000000000000000000000000000000000000000000000000000"
},
{
"begin": 2320,
"end": 2367,
"name": "DUP2",
"source": 1
},
{
"begin": 2320,
"end": 2367,
"name": "MSTORE",
"source": 1
},
{
"begin": 2320,
"end": 2367,
"name": "PUSH",
"source": 1,
"value": "4"
},
{
"begin": 2320,
"end": 2367,
"name": "ADD",
"source": 1
},
{
"begin": 2320,
"end": 2367,
"name": "PUSH [tag]",
"source": 1,
"value": "19"
},
{
"begin": 2320,
"end": 2367,
"name": "SWAP2",
"source": 1
},
{
"begin": 2320,
"end": 2367,
"name": "SWAP1",
"source": 1
},
{
"begin": 2320,
"end": 2367,
"name": "PUSH [tag]",
"source": 1,
"value": "20"
},
{
"begin": 2320,
"end": 2367,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 2320,
"end": 2367,
"name": "tag",
"source": 1,
"value": "19"
},
{
"begin": 2320,
"end": 2367,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2320,
"end": 2367,
"name": "PUSH",
"source": 1,
"value": "40"
},
{
"begin": 2320,
"end": 2367,
"name": "MLOAD",
"source": 1
},
{
"begin": 2320,
"end": 2367,
"name": "DUP1",
"source": 1
},
{
"begin": 2320,
"end": 2367,
"name": "SWAP2",
"source": 1
},
{
"begin": 2320,
"end": 2367,
"name": "SUB",
"source": 1
},
{
"begin": 2320,
"end": 2367,
"name": "SWAP1",
"source": 1
},
{
"begin": 2320,
"end": 2367,
"name": "REVERT",
"source": 1
},
{
"begin": 2259,
"end": 2378,
"name": "tag",
"source": 1,
"value": "18"
},
{
"begin": 2259,
"end": 2378,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2443,
"end": 2460,
"name": "DUP1",
"source": 1
},
{
"begin": 2387,
"end": 2434,
"name": "PUSH [tag]",
"source": 1,
"value": "21"
},
{
"begin": 1327,
"end": 1393,
"name": "PUSH",
"source": 1,
"value": "360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC"
},
{
"begin": 2414,
"end": 2433,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 2414,
"end": 2433,
"name": "SHL",
"source": 1
},
{
"begin": 2387,
"end": 2413,
"name": "PUSH [tag]",
"source": 1,
"value": "22"
},
{
"begin": 2387,
"end": 2413,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 2387,
"end": 2413,
"name": "SHL",
"source": 1
},
{
"begin": 2387,
"end": 2434,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 2387,
"end": 2434,
"name": "SHR",
"source": 1
},
{
"begin": 2387,
"end": 2434,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 2387,
"end": 2434,
"name": "tag",
"source": 1,
"value": "21"
},
{
"begin": 2387,
"end": 2434,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2387,
"end": 2440,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 2387,
"end": 2440,
"name": "ADD",
"source": 1
},
{
"begin": 2387,
"end": 2440,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 2387,
"end": 2460,
"name": "PUSH",
"source": 1,
"value": "100"
},
{
"begin": 2387,
"end": 2460,
"name": "EXP",
"source": 1
},
{
"begin": 2387,
"end": 2460,
"name": "DUP2",
"source": 1
},
{
"begin": 2387,
"end": 2460,
"name": "SLOAD",
"source": 1
},
{
"begin": 2387,
"end": 2460,
"name": "DUP2",
"source": 1
},
{
"begin": 2387,
"end": 2460,
"name": "PUSH",
"source": 1,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2387,
"end": 2460,
"name": "MUL",
"source": 1
},
{
"begin": 2387,
"end": 2460,
"name": "NOT",
"source": 1
},
{
"begin": 2387,
"end": 2460,
"name": "AND",
"source": 1
},
{
"begin": 2387,
"end": 2460,
"name": "SWAP1",
"source": 1
},
{
"begin": 2387,
"end": 2460,
"name": "DUP4",
"source": 1
},
{
"begin": 2387,
"end": 2460,
"name": "PUSH",
"source": 1,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2387,
"end": 2460,
"name": "AND",
"source": 1
},
{
"begin": 2387,
"end": 2460,
"name": "MUL",
"source": 1
},
{
"begin": 2387,
"end": 2460,
"name": "OR",
"source": 1
},
{
"begin": 2387,
"end": 2460,
"name": "SWAP1",
"source": 1
},
{
"begin": 2387,
"end": 2460,
"name": "SSTORE",
"source": 1
},
{
"begin": 2387,
"end": 2460,
"name": "POP",
"source": 1
},
{
"begin": 2186,
"end": 2467,
"name": "POP",
"source": 1
},
{
"begin": 2186,
"end": 2467,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 4106,
"end": 4359,
"name": "tag",
"source": 4,
"value": "13"
},
{
"begin": 4106,
"end": 4359,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 4189,
"end": 4201,
"name": "PUSH",
"source": 4,
"value": "60"
},
{
"begin": 4214,
"end": 4226,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 4228,
"end": 4251,
"name": "DUP1",
"source": 4
},
{
"begin": 4255,
"end": 4261,
"name": "DUP5",
"source": 4
},
{
"begin": 4255,
"end": 4274,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 4255,
"end": 4274,
"name": "AND",
"source": 4
},
{
"begin": 4275,
"end": 4279,
"name": "DUP5",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 4255,
"end": 4280,
"name": "MLOAD",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "PUSH [tag]",
"source": 4,
"value": "24"
},
{
"begin": 4255,
"end": 4280,
"name": "SWAP2",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "SWAP1",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "PUSH [tag]",
"source": 4,
"value": "25"
},
{
"begin": 4255,
"end": 4280,
"jumpType": "[in]",
"name": "JUMP",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "tag",
"source": 4,
"value": "24"
},
{
"begin": 4255,
"end": 4280,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 4255,
"end": 4280,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 4255,
"end": 4280,
"name": "MLOAD",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "DUP1",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "DUP4",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "SUB",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "DUP2",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "DUP6",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "GAS",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "DELEGATECALL",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "SWAP2",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "POP",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "POP",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "RETURNDATASIZE",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "DUP1",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 4255,
"end": 4280,
"name": "DUP2",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "EQ",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "PUSH [tag]",
"source": 4,
"value": "28"
},
{
"begin": 4255,
"end": 4280,
"name": "JUMPI",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 4255,
"end": 4280,
"name": "MLOAD",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "SWAP2",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "POP",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "PUSH",
"source": 4,
"value": "1F"
},
{
"begin": 4255,
"end": 4280,
"name": "NOT",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "PUSH",
"source": 4,
"value": "3F"
},
{
"begin": 4255,
"end": 4280,
"name": "RETURNDATASIZE",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "ADD",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "AND",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "DUP3",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "ADD",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 4255,
"end": 4280,
"name": "MSTORE",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "RETURNDATASIZE",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "DUP3",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "MSTORE",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "RETURNDATASIZE",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 4255,
"end": 4280,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 4255,
"end": 4280,
"name": "DUP5",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "ADD",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "RETURNDATACOPY",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "PUSH [tag]",
"source": 4,
"value": "27"
},
{
"begin": 4255,
"end": 4280,
"name": "JUMP",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "tag",
"source": 4,
"value": "28"
},
{
"begin": 4255,
"end": 4280,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "PUSH",
"source": 4,
"value": "60"
},
{
"begin": 4255,
"end": 4280,
"name": "SWAP2",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "POP",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "tag",
"source": 4,
"value": "27"
},
{
"begin": 4255,
"end": 4280,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 4255,
"end": 4280,
"name": "POP",
"source": 4
},
{
"begin": 4213,
"end": 4280,
"name": "SWAP2",
"source": 4
},
{
"begin": 4213,
"end": 4280,
"name": "POP",
"source": 4
},
{
"begin": 4213,
"end": 4280,
"name": "SWAP2",
"source": 4
},
{
"begin": 4213,
"end": 4280,
"name": "POP",
"source": 4
},
{
"begin": 4297,
"end": 4352,
"name": "PUSH [tag]",
"source": 4,
"value": "29"
},
{
"begin": 4324,
"end": 4330,
"name": "DUP6",
"source": 4
},
{
"begin": 4332,
"end": 4339,
"name": "DUP4",
"source": 4
},
{
"begin": 4341,
"end": 4351,
"name": "DUP4",
"source": 4
},
{
"begin": 4297,
"end": 4323,
"name": "PUSH [tag]",
"source": 4,
"value": "30"
},
{
"begin": 4297,
"end": 4323,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 4297,
"end": 4323,
"name": "SHL",
"source": 4
},
{
"begin": 4297,
"end": 4352,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 4297,
"end": 4352,
"name": "SHR",
"source": 4
},
{
"begin": 4297,
"end": 4352,
"jumpType": "[in]",
"name": "JUMP",
"source": 4
},
{
"begin": 4297,
"end": 4352,
"name": "tag",
"source": 4,
"value": "29"
},
{
"begin": 4297,
"end": 4352,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 4290,
"end": 4352,
"name": "SWAP3",
"source": 4
},
{
"begin": 4290,
"end": 4352,
"name": "POP",
"source": 4
},
{
"begin": 4290,
"end": 4352,
"name": "POP",
"source": 4
},
{
"begin": 4290,
"end": 4352,
"name": "POP",
"source": 4
},
{
"begin": 4106,
"end": 4359,
"name": "SWAP3",
"source": 4
},
{
"begin": 4106,
"end": 4359,
"name": "SWAP2",
"source": 4
},
{
"begin": 4106,
"end": 4359,
"name": "POP",
"source": 4
},
{
"begin": 4106,
"end": 4359,
"name": "POP",
"source": 4
},
{
"begin": 4106,
"end": 4359,
"jumpType": "[out]",
"name": "JUMP",
"source": 4
},
{
"begin": 6598,
"end": 6720,
"name": "tag",
"source": 1,
"value": "16"
},
{
"begin": 6598,
"end": 6720,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 6660,
"end": 6661,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 6648,
"end": 6657,
"name": "CALLVALUE",
"source": 1
},
{
"begin": 6648,
"end": 6661,
"name": "GT",
"source": 1
},
{
"begin": 6644,
"end": 6714,
"name": "ISZERO",
"source": 1
},
{
"begin": 6644,
"end": 6714,
"name": "PUSH [tag]",
"source": 1,
"value": "32"
},
{
"begin": 6644,
"end": 6714,
"name": "JUMPI",
"source": 1
},
{
"begin": 6684,
"end": 6703,
"name": "PUSH",
"source": 1,
"value": "40"
},
{
"begin": 6684,
"end": 6703,
"name": "MLOAD",
"source": 1
},
{
"begin": 6684,
"end": 6703,
"name": "PUSH",
"source": 1,
"value": "B398979F00000000000000000000000000000000000000000000000000000000"
},
{
"begin": 6684,
"end": 6703,
"name": "DUP2",
"source": 1
},
{
"begin": 6684,
"end": 6703,
"name": "MSTORE",
"source": 1
},
{
"begin": 6684,
"end": 6703,
"name": "PUSH",
"source": 1,
"value": "4"
},
{
"begin": 6684,
"end": 6703,
"name": "ADD",
"source": 1
},
{
"begin": 6684,
"end": 6703,
"name": "PUSH",
"source": 1,
"value": "40"
},
{
"begin": 6684,
"end": 6703,
"name": "MLOAD",
"source": 1
},
{
"begin": 6684,
"end": 6703,
"name": "DUP1",
"source": 1
},
{
"begin": 6684,
"end": 6703,
"name": "SWAP2",
"source": 1
},
{
"begin": 6684,
"end": 6703,
"name": "SUB",
"source": 1
},
{
"begin": 6684,
"end": 6703,
"name": "SWAP1",
"source": 1
},
{
"begin": 6684,
"end": 6703,
"name": "REVERT",
"source": 1
},
{
"begin": 6644,
"end": 6714,
"name": "tag",
"source": 1,
"value": "32"
},
{
"begin": 6644,
"end": 6714,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 6598,
"end": 6720,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 1684,
"end": 1874,
"name": "tag",
"source": 5,
"value": "22"
},
{
"begin": 1684,
"end": 1874,
"name": "JUMPDEST",
"source": 5
},
{
"begin": 1745,
"end": 1766,
"name": "PUSH",
"source": 5,
"value": "0"
},
{
"begin": 1854,
"end": 1858,
"name": "DUP2",
"source": 5
},
{
"begin": 1844,
"end": 1858,
"name": "SWAP1",
"source": 5
},
{
"begin": 1844,
"end": 1858,
"name": "POP",
"source": 5
},
{
"begin": 1684,
"end": 1874,
"name": "SWAP2",
"source": 5
},
{
"begin": 1684,
"end": 1874,
"name": "SWAP1",
"source": 5
},
{
"begin": 1684,
"end": 1874,
"name": "POP",
"source": 5
},
{
"begin": 1684,
"end": 1874,
"jumpType": "[out]",
"name": "JUMP",
"source": 5
},
{
"begin": 4625,
"end": 5207,
"name": "tag",
"source": 4,
"value": "30"
},
{
"begin": 4625,
"end": 5207,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 4769,
"end": 4781,
"name": "PUSH",
"source": 4,
"value": "60"
},
{
"begin": 4798,
"end": 4805,
"name": "DUP3",
"source": 4
},
{
"begin": 4793,
"end": 5201,
"name": "PUSH [tag]",
"source": 4,
"value": "35"
},
{
"begin": 4793,
"end": 5201,
"name": "JUMPI",
"source": 4
},
{
"begin": 4821,
"end": 4840,
"name": "PUSH [tag]",
"source": 4,
"value": "36"
},
{
"begin": 4829,
"end": 4839,
"name": "DUP3",
"source": 4
},
{
"begin": 4821,
"end": 4828,
"name": "PUSH [tag]",
"source": 4,
"value": "37"
},
{
"begin": 4821,
"end": 4828,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 4821,
"end": 4828,
"name": "SHL",
"source": 4
},
{
"begin": 4821,
"end": 4840,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 4821,
"end": 4840,
"name": "SHR",
"source": 4
},
{
"begin": 4821,
"end": 4840,
"jumpType": "[in]",
"name": "JUMP",
"source": 4
},
{
"begin": 4821,
"end": 4840,
"name": "tag",
"source": 4,
"value": "36"
},
{
"begin": 4821,
"end": 4840,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 4793,
"end": 5201,
"name": "PUSH [tag]",
"source": 4,
"value": "38"
},
{
"begin": 4793,
"end": 5201,
"name": "JUMP",
"source": 4
},
{
"begin": 4793,
"end": 5201,
"name": "tag",
"source": 4,
"value": "35"
},
{
"begin": 4793,
"end": 5201,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 5066,
"end": 5067,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 5045,
"end": 5055,
"name": "DUP3",
"source": 4
},
{
"begin": 5045,
"end": 5062,
"name": "MLOAD",
"source": 4
},
{
"begin": 5045,
"end": 5067,
"name": "EQ",
"source": 4
},
{
"begin": 5045,
"end": 5094,
"name": "DUP1",
"source": 4
},
{
"begin": 5045,
"end": 5094,
"name": "ISZERO",
"source": 4
},
{
"begin": 5045,
"end": 5094,
"name": "PUSH [tag]",
"source": 4,
"value": "39"
},
{
"begin": 5045,
"end": 5094,
"name": "JUMPI",
"source": 4
},
{
"begin": 5045,
"end": 5094,
"name": "POP",
"source": 4
},
{
"begin": 5093,
"end": 5094,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 5071,
"end": 5077,
"name": "DUP5",
"source": 4
},
{
"begin": 5071,
"end": 5089,
"name": "PUSH",
"source": 4,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 5071,
"end": 5089,
"name": "AND",
"source": 4
},
{
"begin": 5071,
"end": 5089,
"name": "EXTCODESIZE",
"source": 4
},
{
"begin": 5071,
"end": 5094,
"name": "EQ",
"source": 4
},
{
"begin": 5045,
"end": 5094,
"name": "tag",
"source": 4,
"value": "39"
},
{
"begin": 5045,
"end": 5094,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 5041,
"end": 5160,
"name": "ISZERO",
"source": 4
},
{
"begin": 5041,
"end": 5160,
"name": "PUSH [tag]",
"source": 4,
"value": "40"
},
{
"begin": 5041,
"end": 5160,
"name": "JUMPI",
"source": 4
},
{
"begin": 5138,
"end": 5144,
"name": "DUP4",
"source": 4
},
{
"begin": 5121,
"end": 5145,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 5121,
"end": 5145,
"name": "MLOAD",
"source": 4
},
{
"begin": 5121,
"end": 5145,
"name": "PUSH",
"source": 4,
"value": "9996B31500000000000000000000000000000000000000000000000000000000"
},
{
"begin": 5121,
"end": 5145,
"name": "DUP2",
"source": 4
},
{
"begin": 5121,
"end": 5145,
"name": "MSTORE",
"source": 4
},
{
"begin": 5121,
"end": 5145,
"name": "PUSH",
"source": 4,
"value": "4"
},
{
"begin": 5121,
"end": 5145,
"name": "ADD",
"source": 4
},
{
"begin": 5121,
"end": 5145,
"name": "PUSH [tag]",
"source": 4,
"value": "41"
},
{
"begin": 5121,
"end": 5145,
"name": "SWAP2",
"source": 4
},
{
"begin": 5121,
"end": 5145,
"name": "SWAP1",
"source": 4
},
{
"begin": 5121,
"end": 5145,
"name": "PUSH [tag]",
"source": 4,
"value": "20"
},
{
"begin": 5121,
"end": 5145,
"jumpType": "[in]",
"name": "JUMP",
"source": 4
},
{
"begin": 5121,
"end": 5145,
"name": "tag",
"source": 4,
"value": "41"
},
{
"begin": 5121,
"end": 5145,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 5121,
"end": 5145,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 5121,
"end": 5145,
"name": "MLOAD",
"source": 4
},
{
"begin": 5121,
"end": 5145,
"name": "DUP1",
"source": 4
},
{
"begin": 5121,
"end": 5145,
"name": "SWAP2",
"source": 4
},
{
"begin": 5121,
"end": 5145,
"name": "SUB",
"source": 4
},
{
"begin": 5121,
"end": 5145,
"name": "SWAP1",
"source": 4
},
{
"begin": 5121,
"end": 5145,
"name": "REVERT",
"source": 4
},
{
"begin": 5041,
"end": 5160,
"name": "tag",
"source": 4,
"value": "40"
},
{
"begin": 5041,
"end": 5160,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 5180,
"end": 5190,
"name": "DUP2",
"source": 4
},
{
"begin": 5173,
"end": 5190,
"name": "SWAP1",
"source": 4
},
{
"begin": 5173,
"end": 5190,
"name": "POP",
"source": 4
},
{
"begin": 5173,
"end": 5190,
"name": "PUSH [tag]",
"source": 4,
"value": "34"
},
{
"begin": 5173,
"end": 5190,
"name": "JUMP",
"source": 4
},
{
"begin": 4793,
"end": 5201,
"name": "tag",
"source": 4,
"value": "38"
},
{
"begin": 4793,
"end": 5201,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 4625,
"end": 5207,
"name": "tag",
"source": 4,
"value": "34"
},
{
"begin": 4625,
"end": 5207,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 4625,
"end": 5207,
"name": "SWAP4",
"source": 4
},
{
"begin": 4625,
"end": 5207,
"name": "SWAP3",
"source": 4
},
{
"begin": 4625,
"end": 5207,
"name": "POP",
"source": 4
},
{
"begin": 4625,
"end": 5207,
"name": "POP",
"source": 4
},
{
"begin": 4625,
"end": 5207,
"name": "POP",
"source": 4
},
{
"begin": 4625,
"end": 5207,
"jumpType": "[out]",
"name": "JUMP",
"source": 4
},
{
"begin": 5743,
"end": 6259,
"name": "tag",
"source": 4,
"value": "37"
},
{
"begin": 5743,
"end": 6259,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 5894,
"end": 5895,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 5874,
"end": 5884,
"name": "DUP2",
"source": 4
},
{
"begin": 5874,
"end": 5891,
"name": "MLOAD",
"source": 4
},
{
"begin": 5874,
"end": 5895,
"name": "GT",
"source": 4
},
{
"begin": 5870,
"end": 6253,
"name": "ISZERO",
"source": 4
},
{
"begin": 5870,
"end": 6253,
"name": "PUSH [tag]",
"source": 4,
"value": "43"
},
{
"begin": 5870,
"end": 6253,
"name": "JUMPI",
"source": 4
},
{
"begin": 6102,
"end": 6112,
"name": "DUP1",
"source": 4
},
{
"begin": 6096,
"end": 6113,
"name": "MLOAD",
"source": 4
},
{
"begin": 6158,
"end": 6173,
"name": "DUP1",
"source": 4
},
{
"begin": 6145,
"end": 6155,
"name": "DUP3",
"source": 4
},
{
"begin": 6141,
"end": 6143,
"name": "PUSH",
"source": 4,
"value": "20"
},
{
"begin": 6137,
"end": 6156,
"name": "ADD",
"source": 4
},
{
"begin": 6130,
"end": 6174,
"name": "REVERT",
"source": 4
},
{
"begin": 5870,
"end": 6253,
"name": "tag",
"source": 4,
"value": "43"
},
{
"begin": 5870,
"end": 6253,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 6225,
"end": 6242,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 6225,
"end": 6242,
"name": "MLOAD",
"source": 4
},
{
"begin": 6225,
"end": 6242,
"name": "PUSH",
"source": 4,
"value": "1425EA4200000000000000000000000000000000000000000000000000000000"
},
{
"begin": 6225,
"end": 6242,
"name": "DUP2",
"source": 4
},
{
"begin": 6225,
"end": 6242,
"name": "MSTORE",
"source": 4
},
{
"begin": 6225,
"end": 6242,
"name": "PUSH",
"source": 4,
"value": "4"
},
{
"begin": 6225,
"end": 6242,
"name": "ADD",
"source": 4
},
{
"begin": 6225,
"end": 6242,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 6225,
"end": 6242,
"name": "MLOAD",
"source": 4
},
{
"begin": 6225,
"end": 6242,
"name": "DUP1",
"source": 4
},
{
"begin": 6225,
"end": 6242,
"name": "SWAP2",
"source": 4
},
{
"begin": 6225,
"end": 6242,
"name": "SUB",
"source": 4
},
{
"begin": 6225,
"end": 6242,
"name": "SWAP1",
"source": 4
},
{
"begin": 6225,
"end": 6242,
"name": "REVERT",
"source": 4
},
{
"begin": 7,
"end": 82,
"name": "tag",
"source": 6,
"value": "45"
},
{
"begin": 7,
"end": 82,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 40,
"end": 46,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 73,
"end": 75,
"name": "PUSH",
"source": 6,
"value": "40"
},
{
"begin": 67,
"end": 76,
"name": "MLOAD",
"source": 6
},
{
"begin": 57,
"end": 76,
"name": "SWAP1",
"source": 6
},
{
"begin": 57,
"end": 76,
"name": "POP",
"source": 6
},
{
"begin": 7,
"end": 82,
"name": "SWAP1",
"source": 6
},
{
"begin": 7,
"end": 82,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 88,
"end": 205,
"name": "tag",
"source": 6,
"value": "46"
},
{
"begin": 88,
"end": 205,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 197,
"end": 198,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 194,
"end": 195,
"name": "DUP1",
"source": 6
},
{
"begin": 187,
"end": 199,
"name": "REVERT",
"source": 6
},
{
"begin": 211,
"end": 328,
"name": "tag",
"source": 6,
"value": "47"
},
{
"begin": 211,
"end": 328,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 320,
"end": 321,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 317,
"end": 318,
"name": "DUP1",
"source": 6
},
{
"begin": 310,
"end": 322,
"name": "REVERT",
"source": 6
},
{
"begin": 334,
"end": 460,
"name": "tag",
"source": 6,
"value": "48"
},
{
"begin": 334,
"end": 460,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 371,
"end": 378,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 411,
"end": 453,
"name": "PUSH",
"source": 6,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 404,
"end": 409,
"name": "DUP3",
"source": 6
},
{
"begin": 400,
"end": 454,
"name": "AND",
"source": 6
},
{
"begin": 389,
"end": 454,
"name": "SWAP1",
"source": 6
},
{
"begin": 389,
"end": 454,
"name": "POP",
"source": 6
},
{
"begin": 334,
"end": 460,
"name": "SWAP2",
"source": 6
},
{
"begin": 334,
"end": 460,
"name": "SWAP1",
"source": 6
},
{
"begin": 334,
"end": 460,
"name": "POP",
"source": 6
},
{
"begin": 334,
"end": 460,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 466,
"end": 562,
"name": "tag",
"source": 6,
"value": "49"
},
{
"begin": 466,
"end": 562,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 503,
"end": 510,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 532,
"end": 556,
"name": "PUSH [tag]",
"source": 6,
"value": "72"
},
{
"begin": 550,
"end": 555,
"name": "DUP3",
"source": 6
},
{
"begin": 532,
"end": 556,
"name": "PUSH [tag]",
"source": 6,
"value": "48"
},
{
"begin": 532,
"end": 556,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 532,
"end": 556,
"name": "tag",
"source": 6,
"value": "72"
},
{
"begin": 532,
"end": 556,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 521,
"end": 556,
"name": "SWAP1",
"source": 6
},
{
"begin": 521,
"end": 556,
"name": "POP",
"source": 6
},
{
"begin": 466,
"end": 562,
"name": "SWAP2",
"source": 6
},
{
"begin": 466,
"end": 562,
"name": "SWAP1",
"source": 6
},
{
"begin": 466,
"end": 562,
"name": "POP",
"source": 6
},
{
"begin": 466,
"end": 562,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 568,
"end": 690,
"name": "tag",
"source": 6,
"value": "50"
},
{
"begin": 568,
"end": 690,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 641,
"end": 665,
"name": "PUSH [tag]",
"source": 6,
"value": "74"
},
{
"begin": 659,
"end": 664,
"name": "DUP2",
"source": 6
},
{
"begin": 641,
"end": 665,
"name": "PUSH [tag]",
"source": 6,
"value": "49"
},
{
"begin": 641,
"end": 665,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 641,
"end": 665,
"name": "tag",
"source": 6,
"value": "74"
},
{
"begin": 641,
"end": 665,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 634,
"end": 639,
"name": "DUP2",
"source": 6
},
{
"begin": 631,
"end": 666,
"name": "EQ",
"source": 6
},
{
"begin": 621,
"end": 684,
"name": "PUSH [tag]",
"source": 6,
"value": "75"
},
{
"begin": 621,
"end": 684,
"name": "JUMPI",
"source": 6
},
{
"begin": 680,
"end": 681,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 677,
"end": 678,
"name": "DUP1",
"source": 6
},
{
"begin": 670,
"end": 682,
"name": "REVERT",
"source": 6
},
{
"begin": 621,
"end": 684,
"name": "tag",
"source": 6,
"value": "75"
},
{
"begin": 621,
"end": 684,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 568,
"end": 690,
"name": "POP",
"source": 6
},
{
"begin": 568,
"end": 690,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 696,
"end": 839,
"name": "tag",
"source": 6,
"value": "51"
},
{
"begin": 696,
"end": 839,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 753,
"end": 758,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 784,
"end": 790,
"name": "DUP2",
"source": 6
},
{
"begin": 778,
"end": 791,
"name": "MLOAD",
"source": 6
},
{
"begin": 769,
"end": 791,
"name": "SWAP1",
"source": 6
},
{
"begin": 769,
"end": 791,
"name": "POP",
"source": 6
},
{
"begin": 800,
"end": 833,
"name": "PUSH [tag]",
"source": 6,
"value": "77"
},
{
"begin": 827,
"end": 832,
"name": "DUP2",
"source": 6
},
{
"begin": 800,
"end": 833,
"name": "PUSH [tag]",
"source": 6,
"value": "50"
},
{
"begin": 800,
"end": 833,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 800,
"end": 833,
"name": "tag",
"source": 6,
"value": "77"
},
{
"begin": 800,
"end": 833,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 696,
"end": 839,
"name": "SWAP3",
"source": 6
},
{
"begin": 696,
"end": 839,
"name": "SWAP2",
"source": 6
},
{
"begin": 696,
"end": 839,
"name": "POP",
"source": 6
},
{
"begin": 696,
"end": 839,
"name": "POP",
"source": 6
},
{
"begin": 696,
"end": 839,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 845,
"end": 962,
"name": "tag",
"source": 6,
"value": "52"
},
{
"begin": 845,
"end": 962,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 954,
"end": 955,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 951,
"end": 952,
"name": "DUP1",
"source": 6
},
{
"begin": 944,
"end": 956,
"name": "REVERT",
"source": 6
},
{
"begin": 968,
"end": 1085,
"name": "tag",
"source": 6,
"value": "53"
},
{
"begin": 968,
"end": 1085,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 1077,
"end": 1078,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 1074,
"end": 1075,
"name": "DUP1",
"source": 6
},
{
"begin": 1067,
"end": 1079,
"name": "REVERT",
"source": 6
},
{
"begin": 1091,
"end": 1193,
"name": "tag",
"source": 6,
"value": "54"
},
{
"begin": 1091,
"end": 1193,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 1132,
"end": 1138,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 1183,
"end": 1185,
"name": "PUSH",
"source": 6,
"value": "1F"
},
{
"begin": 1179,
"end": 1186,
"name": "NOT",
"source": 6
},
{
"begin": 1174,
"end": 1176,
"name": "PUSH",
"source": 6,
"value": "1F"
},
{
"begin": 1167,
"end": 1172,
"name": "DUP4",
"source": 6
},
{
"begin": 1163,
"end": 1177,
"name": "ADD",
"source": 6
},
{
"begin": 1159,
"end": 1187,
"name": "AND",
"source": 6
},
{
"begin": 1149,
"end": 1187,
"name": "SWAP1",
"source": 6
},
{
"begin": 1149,
"end": 1187,
"name": "POP",
"source": 6
},
{
"begin": 1091,
"end": 1193,
"name": "SWAP2",
"source": 6
},
{
"begin": 1091,
"end": 1193,
"name": "SWAP1",
"source": 6
},
{
"begin": 1091,
"end": 1193,
"name": "POP",
"source": 6
},
{
"begin": 1091,
"end": 1193,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 1199,
"end": 1379,
"name": "tag",
"source": 6,
"value": "55"
},
{
"begin": 1199,
"end": 1379,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 1247,
"end": 1324,
"name": "PUSH",
"source": 6,
"value": "4E487B7100000000000000000000000000000000000000000000000000000000"
},
{
"begin": 1244,
"end": 1245,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 1237,
"end": 1325,
"name": "MSTORE",
"source": 6
},
{
"begin": 1344,
"end": 1348,
"name": "PUSH",
"source": 6,
"value": "41"
},
{
"begin": 1341,
"end": 1342,
"name": "PUSH",
"source": 6,
"value": "4"
},
{
"begin": 1334,
"end": 1349,
"name": "MSTORE",
"source": 6
},
{
"begin": 1368,
"end": 1372,
"name": "PUSH",
"source": 6,
"value": "24"
},
{
"begin": 1365,
"end": 1366,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 1358,
"end": 1373,
"name": "REVERT",
"source": 6
},
{
"begin": 1385,
"end": 1666,
"name": "tag",
"source": 6,
"value": "56"
},
{
"begin": 1385,
"end": 1666,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 1468,
"end": 1495,
"name": "PUSH [tag]",
"source": 6,
"value": "83"
},
{
"begin": 1490,
"end": 1494,
"name": "DUP3",
"source": 6
},
{
"begin": 1468,
"end": 1495,
"name": "PUSH [tag]",
"source": 6,
"value": "54"
},
{
"begin": 1468,
"end": 1495,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 1468,
"end": 1495,
"name": "tag",
"source": 6,
"value": "83"
},
{
"begin": 1468,
"end": 1495,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 1460,
"end": 1466,
"name": "DUP2",
"source": 6
},
{
"begin": 1456,
"end": 1496,
"name": "ADD",
"source": 6
},
{
"begin": 1598,
"end": 1604,
"name": "DUP2",
"source": 6
},
{
"begin": 1586,
"end": 1596,
"name": "DUP2",
"source": 6
},
{
"begin": 1583,
"end": 1605,
"name": "LT",
"source": 6
},
{
"begin": 1562,
"end": 1580,
"name": "PUSH",
"source": 6,
"value": "FFFFFFFFFFFFFFFF"
},
{
"begin": 1550,
"end": 1560,
"name": "DUP3",
"source": 6
},
{
"begin": 1547,
"end": 1581,
"name": "GT",
"source": 6
},
{
"begin": 1544,
"end": 1606,
"name": "OR",
"source": 6
},
{
"begin": 1541,
"end": 1629,
"name": "ISZERO",
"source": 6
},
{
"begin": 1541,
"end": 1629,
"name": "PUSH [tag]",
"source": 6,
"value": "84"
},
{
"begin": 1541,
"end": 1629,
"name": "JUMPI",
"source": 6
},
{
"begin": 1609,
"end": 1627,
"name": "PUSH [tag]",
"source": 6,
"value": "85"
},
{
"begin": 1609,
"end": 1627,
"name": "PUSH [tag]",
"source": 6,
"value": "55"
},
{
"begin": 1609,
"end": 1627,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 1609,
"end": 1627,
"name": "tag",
"source": 6,
"value": "85"
},
{
"begin": 1609,
"end": 1627,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 1541,
"end": 1629,
"name": "tag",
"source": 6,
"value": "84"
},
{
"begin": 1541,
"end": 1629,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 1649,
"end": 1659,
"name": "DUP1",
"source": 6
},
{
"begin": 1645,
"end": 1647,
"name": "PUSH",
"source": 6,
"value": "40"
},
{
"begin": 1638,
"end": 1660,
"name": "MSTORE",
"source": 6
},
{
"begin": 1428,
"end": 1666,
"name": "POP",
"source": 6
},
{
"begin": 1385,
"end": 1666,
"name": "POP",
"source": 6
},
{
"begin": 1385,
"end": 1666,
"name": "POP",
"source": 6
},
{
"begin": 1385,
"end": 1666,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 1672,
"end": 1801,
"name": "tag",
"source": 6,
"value": "57"
},
{
"begin": 1672,
"end": 1801,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 1706,
"end": 1712,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 1733,
"end": 1753,
"name": "PUSH [tag]",
"source": 6,
"value": "87"
},
{
"begin": 1733,
"end": 1753,
"name": "PUSH [tag]",
"source": 6,
"value": "45"
},
{
"begin": 1733,
"end": 1753,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 1733,
"end": 1753,
"name": "tag",
"source": 6,
"value": "87"
},
{
"begin": 1733,
"end": 1753,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 1723,
"end": 1753,
"name": "SWAP1",
"source": 6
},
{
"begin": 1723,
"end": 1753,
"name": "POP",
"source": 6
},
{
"begin": 1762,
"end": 1795,
"name": "PUSH [tag]",
"source": 6,
"value": "88"
},
{
"begin": 1790,
"end": 1794,
"name": "DUP3",
"source": 6
},
{
"begin": 1782,
"end": 1788,
"name": "DUP3",
"source": 6
},
{
"begin": 1762,
"end": 1795,
"name": "PUSH [tag]",
"source": 6,
"value": "56"
},
{
"begin": 1762,
"end": 1795,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 1762,
"end": 1795,
"name": "tag",
"source": 6,
"value": "88"
},
{
"begin": 1762,
"end": 1795,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 1672,
"end": 1801,
"name": "SWAP2",
"source": 6
},
{
"begin": 1672,
"end": 1801,
"name": "SWAP1",
"source": 6
},
{
"begin": 1672,
"end": 1801,
"name": "POP",
"source": 6
},
{
"begin": 1672,
"end": 1801,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 1807,
"end": 2114,
"name": "tag",
"source": 6,
"value": "58"
},
{
"begin": 1807,
"end": 2114,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 1868,
"end": 1872,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 1958,
"end": 1976,
"name": "PUSH",
"source": 6,
"value": "FFFFFFFFFFFFFFFF"
},
{
"begin": 1950,
"end": 1956,
"name": "DUP3",
"source": 6
},
{
"begin": 1947,
"end": 1977,
"name": "GT",
"source": 6
},
{
"begin": 1944,
"end": 2000,
"name": "ISZERO",
"source": 6
},
{
"begin": 1944,
"end": 2000,
"name": "PUSH [tag]",
"source": 6,
"value": "90"
},
{
"begin": 1944,
"end": 2000,
"name": "JUMPI",
"source": 6
},
{
"begin": 1980,
"end": 1998,
"name": "PUSH [tag]",
"source": 6,
"value": "91"
},
{
"begin": 1980,
"end": 1998,
"name": "PUSH [tag]",
"source": 6,
"value": "55"
},
{
"begin": 1980,
"end": 1998,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 1980,
"end": 1998,
"name": "tag",
"source": 6,
"value": "91"
},
{
"begin": 1980,
"end": 1998,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 1944,
"end": 2000,
"name": "tag",
"source": 6,
"value": "90"
},
{
"begin": 1944,
"end": 2000,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 2018,
"end": 2047,
"name": "PUSH [tag]",
"source": 6,
"value": "92"
},
{
"begin": 2040,
"end": 2046,
"name": "DUP3",
"source": 6
},
{
"begin": 2018,
"end": 2047,
"name": "PUSH [tag]",
"source": 6,
"value": "54"
},
{
"begin": 2018,
"end": 2047,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 2018,
"end": 2047,
"name": "tag",
"source": 6,
"value": "92"
},
{
"begin": 2018,
"end": 2047,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 2010,
"end": 2047,
"name": "SWAP1",
"source": 6
},
{
"begin": 2010,
"end": 2047,
"name": "POP",
"source": 6
},
{
"begin": 2102,
"end": 2106,
"name": "PUSH",
"source": 6,
"value": "20"
},
{
"begin": 2096,
"end": 2100,
"name": "DUP2",
"source": 6
},
{
"begin": 2092,
"end": 2107,
"name": "ADD",
"source": 6
},
{
"begin": 2084,
"end": 2107,
"name": "SWAP1",
"source": 6
},
{
"begin": 2084,
"end": 2107,
"name": "POP",
"source": 6
},
{
"begin": 1807,
"end": 2114,
"name": "SWAP2",
"source": 6
},
{
"begin": 1807,
"end": 2114,
"name": "SWAP1",
"source": 6
},
{
"begin": 1807,
"end": 2114,
"name": "POP",
"source": 6
},
{
"begin": 1807,
"end": 2114,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 2120,
"end": 2366,
"name": "tag",
"source": 6,
"value": "59"
},
{
"begin": 2120,
"end": 2366,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 2201,
"end": 2202,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 2211,
"end": 2324,
"name": "tag",
"source": 6,
"value": "94"
},
{
"begin": 2211,
"end": 2324,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 2225,
"end": 2231,
"name": "DUP4",
"source": 6
},
{
"begin": 2222,
"end": 2223,
"name": "DUP2",
"source": 6
},
{
"begin": 2219,
"end": 2232,
"name": "LT",
"source": 6
},
{
"begin": 2211,
"end": 2324,
"name": "ISZERO",
"source": 6
},
{
"begin": 2211,
"end": 2324,
"name": "PUSH [tag]",
"source": 6,
"value": "96"
},
{
"begin": 2211,
"end": 2324,
"name": "JUMPI",
"source": 6
},
{
"begin": 2310,
"end": 2311,
"name": "DUP1",
"source": 6
},
{
"begin": 2305,
"end": 2308,
"name": "DUP3",
"source": 6
},
{
"begin": 2301,
"end": 2312,
"name": "ADD",
"source": 6
},
{
"begin": 2295,
"end": 2313,
"name": "MLOAD",
"source": 6
},
{
"begin": 2291,
"end": 2292,
"name": "DUP2",
"source": 6
},
{
"begin": 2286,
"end": 2289,
"name": "DUP5",
"source": 6
},
{
"begin": 2282,
"end": 2293,
"name": "ADD",
"source": 6
},
{
"begin": 2275,
"end": 2314,
"name": "MSTORE",
"source": 6
},
{
"begin": 2247,
"end": 2249,
"name": "PUSH",
"source": 6,
"value": "20"
},
{
"begin": 2244,
"end": 2245,
"name": "DUP2",
"source": 6
},
{
"begin": 2240,
"end": 2250,
"name": "ADD",
"source": 6
},
{
"begin": 2235,
"end": 2250,
"name": "SWAP1",
"source": 6
},
{
"begin": 2235,
"end": 2250,
"name": "POP",
"source": 6
},
{
"begin": 2211,
"end": 2324,
"name": "PUSH [tag]",
"source": 6,
"value": "94"
},
{
"begin": 2211,
"end": 2324,
"name": "JUMP",
"source": 6
},
{
"begin": 2211,
"end": 2324,
"name": "tag",
"source": 6,
"value": "96"
},
{
"begin": 2211,
"end": 2324,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 2358,
"end": 2359,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 2349,
"end": 2355,
"name": "DUP5",
"source": 6
},
{
"begin": 2344,
"end": 2347,
"name": "DUP5",
"source": 6
},
{
"begin": 2340,
"end": 2356,
"name": "ADD",
"source": 6
},
{
"begin": 2333,
"end": 2360,
"name": "MSTORE",
"source": 6
},
{
"begin": 2182,
"end": 2366,
"name": "POP",
"source": 6
},
{
"begin": 2120,
"end": 2366,
"name": "POP",
"source": 6
},
{
"begin": 2120,
"end": 2366,
"name": "POP",
"source": 6
},
{
"begin": 2120,
"end": 2366,
"name": "POP",
"source": 6
},
{
"begin": 2120,
"end": 2366,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 2372,
"end": 2804,
"name": "tag",
"source": 6,
"value": "60"
},
{
"begin": 2372,
"end": 2804,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 2460,
"end": 2465,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 2485,
"end": 2550,
"name": "PUSH [tag]",
"source": 6,
"value": "98"
},
{
"begin": 2501,
"end": 2549,
"name": "PUSH [tag]",
"source": 6,
"value": "99"
},
{
"begin": 2542,
"end": 2548,
"name": "DUP5",
"source": 6
},
{
"begin": 2501,
"end": 2549,
"name": "PUSH [tag]",
"source": 6,
"value": "58"
},
{
"begin": 2501,
"end": 2549,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 2501,
"end": 2549,
"name": "tag",
"source": 6,
"value": "99"
},
{
"begin": 2501,
"end": 2549,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 2485,
"end": 2550,
"name": "PUSH [tag]",
"source": 6,
"value": "57"
},
{
"begin": 2485,
"end": 2550,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 2485,
"end": 2550,
"name": "tag",
"source": 6,
"value": "98"
},
{
"begin": 2485,
"end": 2550,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 2476,
"end": 2550,
"name": "SWAP1",
"source": 6
},
{
"begin": 2476,
"end": 2550,
"name": "POP",
"source": 6
},
{
"begin": 2573,
"end": 2579,
"name": "DUP3",
"source": 6
},
{
"begin": 2566,
"end": 2571,
"name": "DUP2",
"source": 6
},
{
"begin": 2559,
"end": 2580,
"name": "MSTORE",
"source": 6
},
{
"begin": 2611,
"end": 2615,
"name": "PUSH",
"source": 6,
"value": "20"
},
{
"begin": 2604,
"end": 2609,
"name": "DUP2",
"source": 6
},
{
"begin": 2600,
"end": 2616,
"name": "ADD",
"source": 6
},
{
"begin": 2649,
"end": 2652,
"name": "DUP5",
"source": 6
},
{
"begin": 2640,
"end": 2646,
"name": "DUP5",
"source": 6
},
{
"begin": 2635,
"end": 2638,
"name": "DUP5",
"source": 6
},
{
"begin": 2631,
"end": 2647,
"name": "ADD",
"source": 6
},
{
"begin": 2628,
"end": 2653,
"name": "GT",
"source": 6
},
{
"begin": 2625,
"end": 2737,
"name": "ISZERO",
"source": 6
},
{
"begin": 2625,
"end": 2737,
"name": "PUSH [tag]",
"source": 6,
"value": "100"
},
{
"begin": 2625,
"end": 2737,
"name": "JUMPI",
"source": 6
},
{
"begin": 2656,
"end": 2735,
"name": "PUSH [tag]",
"source": 6,
"value": "101"
},
{
"begin": 2656,
"end": 2735,
"name": "PUSH [tag]",
"source": 6,
"value": "53"
},
{
"begin": 2656,
"end": 2735,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 2656,
"end": 2735,
"name": "tag",
"source": 6,
"value": "101"
},
{
"begin": 2656,
"end": 2735,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 2625,
"end": 2737,
"name": "tag",
"source": 6,
"value": "100"
},
{
"begin": 2625,
"end": 2737,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 2746,
"end": 2798,
"name": "PUSH [tag]",
"source": 6,
"value": "102"
},
{
"begin": 2791,
"end": 2797,
"name": "DUP5",
"source": 6
},
{
"begin": 2786,
"end": 2789,
"name": "DUP3",
"source": 6
},
{
"begin": 2781,
"end": 2784,
"name": "DUP6",
"source": 6
},
{
"begin": 2746,
"end": 2798,
"name": "PUSH [tag]",
"source": 6,
"value": "59"
},
{
"begin": 2746,
"end": 2798,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 2746,
"end": 2798,
"name": "tag",
"source": 6,
"value": "102"
},
{
"begin": 2746,
"end": 2798,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 2466,
"end": 2804,
"name": "POP",
"source": 6
},
{
"begin": 2372,
"end": 2804,
"name": "SWAP4",
"source": 6
},
{
"begin": 2372,
"end": 2804,
"name": "SWAP3",
"source": 6
},
{
"begin": 2372,
"end": 2804,
"name": "POP",
"source": 6
},
{
"begin": 2372,
"end": 2804,
"name": "POP",
"source": 6
},
{
"begin": 2372,
"end": 2804,
"name": "POP",
"source": 6
},
{
"begin": 2372,
"end": 2804,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 2823,
"end": 3176,
"name": "tag",
"source": 6,
"value": "61"
},
{
"begin": 2823,
"end": 3176,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 2889,
"end": 2894,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 2938,
"end": 2941,
"name": "DUP3",
"source": 6
},
{
"begin": 2931,
"end": 2935,
"name": "PUSH",
"source": 6,
"value": "1F"
},
{
"begin": 2923,
"end": 2929,
"name": "DUP4",
"source": 6
},
{
"begin": 2919,
"end": 2936,
"name": "ADD",
"source": 6
},
{
"begin": 2915,
"end": 2942,
"name": "SLT",
"source": 6
},
{
"begin": 2905,
"end": 3027,
"name": "PUSH [tag]",
"source": 6,
"value": "104"
},
{
"begin": 2905,
"end": 3027,
"name": "JUMPI",
"source": 6
},
{
"begin": 2946,
"end": 3025,
"name": "PUSH [tag]",
"source": 6,
"value": "105"
},
{
"begin": 2946,
"end": 3025,
"name": "PUSH [tag]",
"source": 6,
"value": "52"
},
{
"begin": 2946,
"end": 3025,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 2946,
"end": 3025,
"name": "tag",
"source": 6,
"value": "105"
},
{
"begin": 2946,
"end": 3025,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 2905,
"end": 3027,
"name": "tag",
"source": 6,
"value": "104"
},
{
"begin": 2905,
"end": 3027,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 3056,
"end": 3062,
"name": "DUP2",
"source": 6
},
{
"begin": 3050,
"end": 3063,
"name": "MLOAD",
"source": 6
},
{
"begin": 3081,
"end": 3170,
"name": "PUSH [tag]",
"source": 6,
"value": "106"
},
{
"begin": 3166,
"end": 3169,
"name": "DUP5",
"source": 6
},
{
"begin": 3158,
"end": 3164,
"name": "DUP3",
"source": 6
},
{
"begin": 3151,
"end": 3155,
"name": "PUSH",
"source": 6,
"value": "20"
},
{
"begin": 3143,
"end": 3149,
"name": "DUP7",
"source": 6
},
{
"begin": 3139,
"end": 3156,
"name": "ADD",
"source": 6
},
{
"begin": 3081,
"end": 3170,
"name": "PUSH [tag]",
"source": 6,
"value": "60"
},
{
"begin": 3081,
"end": 3170,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 3081,
"end": 3170,
"name": "tag",
"source": 6,
"value": "106"
},
{
"begin": 3081,
"end": 3170,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 3072,
"end": 3170,
"name": "SWAP2",
"source": 6
},
{
"begin": 3072,
"end": 3170,
"name": "POP",
"source": 6
},
{
"begin": 2895,
"end": 3176,
"name": "POP",
"source": 6
},
{
"begin": 2823,
"end": 3176,
"name": "SWAP3",
"source": 6
},
{
"begin": 2823,
"end": 3176,
"name": "SWAP2",
"source": 6
},
{
"begin": 2823,
"end": 3176,
"name": "POP",
"source": 6
},
{
"begin": 2823,
"end": 3176,
"name": "POP",
"source": 6
},
{
"begin": 2823,
"end": 3176,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 3182,
"end": 3860,
"name": "tag",
"source": 6,
"value": "2"
},
{
"begin": 3182,
"end": 3860,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 3270,
"end": 3276,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 3278,
"end": 3284,
"name": "DUP1",
"source": 6
},
{
"begin": 3327,
"end": 3329,
"name": "PUSH",
"source": 6,
"value": "40"
},
{
"begin": 3315,
"end": 3324,
"name": "DUP4",
"source": 6
},
{
"begin": 3306,
"end": 3313,
"name": "DUP6",
"source": 6
},
{
"begin": 3302,
"end": 3325,
"name": "SUB",
"source": 6
},
{
"begin": 3298,
"end": 3330,
"name": "SLT",
"source": 6
},
{
"begin": 3295,
"end": 3414,
"name": "ISZERO",
"source": 6
},
{
"begin": 3295,
"end": 3414,
"name": "PUSH [tag]",
"source": 6,
"value": "108"
},
{
"begin": 3295,
"end": 3414,
"name": "JUMPI",
"source": 6
},
{
"begin": 3333,
"end": 3412,
"name": "PUSH [tag]",
"source": 6,
"value": "109"
},
{
"begin": 3333,
"end": 3412,
"name": "PUSH [tag]",
"source": 6,
"value": "46"
},
{
"begin": 3333,
"end": 3412,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 3333,
"end": 3412,
"name": "tag",
"source": 6,
"value": "109"
},
{
"begin": 3333,
"end": 3412,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 3295,
"end": 3414,
"name": "tag",
"source": 6,
"value": "108"
},
{
"begin": 3295,
"end": 3414,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 3453,
"end": 3454,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 3478,
"end": 3542,
"name": "PUSH [tag]",
"source": 6,
"value": "110"
},
{
"begin": 3534,
"end": 3541,
"name": "DUP6",
"source": 6
},
{
"begin": 3525,
"end": 3531,
"name": "DUP3",
"source": 6
},
{
"begin": 3514,
"end": 3523,
"name": "DUP7",
"source": 6
},
{
"begin": 3510,
"end": 3532,
"name": "ADD",
"source": 6
},
{
"begin": 3478,
"end": 3542,
"name": "PUSH [tag]",
"source": 6,
"value": "51"
},
{
"begin": 3478,
"end": 3542,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 3478,
"end": 3542,
"name": "tag",
"source": 6,
"value": "110"
},
{
"begin": 3478,
"end": 3542,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 3468,
"end": 3542,
"name": "SWAP3",
"source": 6
},
{
"begin": 3468,
"end": 3542,
"name": "POP",
"source": 6
},
{
"begin": 3424,
"end": 3552,
"name": "POP",
"source": 6
},
{
"begin": 3612,
"end": 3614,
"name": "PUSH",
"source": 6,
"value": "20"
},
{
"begin": 3601,
"end": 3610,
"name": "DUP4",
"source": 6
},
{
"begin": 3597,
"end": 3615,
"name": "ADD",
"source": 6
},
{
"begin": 3591,
"end": 3616,
"name": "MLOAD",
"source": 6
},
{
"begin": 3643,
"end": 3661,
"name": "PUSH",
"source": 6,
"value": "FFFFFFFFFFFFFFFF"
},
{
"begin": 3635,
"end": 3641,
"name": "DUP2",
"source": 6
},
{
"begin": 3632,
"end": 3662,
"name": "GT",
"source": 6
},
{
"begin": 3629,
"end": 3746,
"name": "ISZERO",
"source": 6
},
{
"begin": 3629,
"end": 3746,
"name": "PUSH [tag]",
"source": 6,
"value": "111"
},
{
"begin": 3629,
"end": 3746,
"name": "JUMPI",
"source": 6
},
{
"begin": 3665,
"end": 3744,
"name": "PUSH [tag]",
"source": 6,
"value": "112"
},
{
"begin": 3665,
"end": 3744,
"name": "PUSH [tag]",
"source": 6,
"value": "47"
},
{
"begin": 3665,
"end": 3744,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 3665,
"end": 3744,
"name": "tag",
"source": 6,
"value": "112"
},
{
"begin": 3665,
"end": 3744,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 3629,
"end": 3746,
"name": "tag",
"source": 6,
"value": "111"
},
{
"begin": 3629,
"end": 3746,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 3770,
"end": 3843,
"name": "PUSH [tag]",
"source": 6,
"value": "113"
},
{
"begin": 3835,
"end": 3842,
"name": "DUP6",
"source": 6
},
{
"begin": 3826,
"end": 3832,
"name": "DUP3",
"source": 6
},
{
"begin": 3815,
"end": 3824,
"name": "DUP7",
"source": 6
},
{
"begin": 3811,
"end": 3833,
"name": "ADD",
"source": 6
},
{
"begin": 3770,
"end": 3843,
"name": "PUSH [tag]",
"source": 6,
"value": "61"
},
{
"begin": 3770,
"end": 3843,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 3770,
"end": 3843,
"name": "tag",
"source": 6,
"value": "113"
},
{
"begin": 3770,
"end": 3843,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 3760,
"end": 3843,
"name": "SWAP2",
"source": 6
},
{
"begin": 3760,
"end": 3843,
"name": "POP",
"source": 6
},
{
"begin": 3562,
"end": 3853,
"name": "POP",
"source": 6
},
{
"begin": 3182,
"end": 3860,
"name": "SWAP3",
"source": 6
},
{
"begin": 3182,
"end": 3860,
"name": "POP",
"source": 6
},
{
"begin": 3182,
"end": 3860,
"name": "SWAP3",
"source": 6
},
{
"begin": 3182,
"end": 3860,
"name": "SWAP1",
"source": 6
},
{
"begin": 3182,
"end": 3860,
"name": "POP",
"source": 6
},
{
"begin": 3182,
"end": 3860,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 3866,
"end": 3984,
"name": "tag",
"source": 6,
"value": "62"
},
{
"begin": 3866,
"end": 3984,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 3953,
"end": 3977,
"name": "PUSH [tag]",
"source": 6,
"value": "115"
},
{
"begin": 3971,
"end": 3976,
"name": "DUP2",
"source": 6
},
{
"begin": 3953,
"end": 3977,
"name": "PUSH [tag]",
"source": 6,
"value": "49"
},
{
"begin": 3953,
"end": 3977,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 3953,
"end": 3977,
"name": "tag",
"source": 6,
"value": "115"
},
{
"begin": 3953,
"end": 3977,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 3948,
"end": 3951,
"name": "DUP3",
"source": 6
},
{
"begin": 3941,
"end": 3978,
"name": "MSTORE",
"source": 6
},
{
"begin": 3866,
"end": 3984,
"name": "POP",
"source": 6
},
{
"begin": 3866,
"end": 3984,
"name": "POP",
"source": 6
},
{
"begin": 3866,
"end": 3984,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 3990,
"end": 4212,
"name": "tag",
"source": 6,
"value": "20"
},
{
"begin": 3990,
"end": 4212,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 4083,
"end": 4087,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 4121,
"end": 4123,
"name": "PUSH",
"source": 6,
"value": "20"
},
{
"begin": 4110,
"end": 4119,
"name": "DUP3",
"source": 6
},
{
"begin": 4106,
"end": 4124,
"name": "ADD",
"source": 6
},
{
"begin": 4098,
"end": 4124,
"name": "SWAP1",
"source": 6
},
{
"begin": 4098,
"end": 4124,
"name": "POP",
"source": 6
},
{
"begin": 4134,
"end": 4205,
"name": "PUSH [tag]",
"source": 6,
"value": "117"
},
{
"begin": 4202,
"end": 4203,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 4191,
"end": 4200,
"name": "DUP4",
"source": 6
},
{
"begin": 4187,
"end": 4204,
"name": "ADD",
"source": 6
},
{
"begin": 4178,
"end": 4184,
"name": "DUP5",
"source": 6
},
{
"begin": 4134,
"end": 4205,
"name": "PUSH [tag]",
"source": 6,
"value": "62"
},
{
"begin": 4134,
"end": 4205,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 4134,
"end": 4205,
"name": "tag",
"source": 6,
"value": "117"
},
{
"begin": 4134,
"end": 4205,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 3990,
"end": 4212,
"name": "SWAP3",
"source": 6
},
{
"begin": 3990,
"end": 4212,
"name": "SWAP2",
"source": 6
},
{
"begin": 3990,
"end": 4212,
"name": "POP",
"source": 6
},
{
"begin": 3990,
"end": 4212,
"name": "POP",
"source": 6
},
{
"begin": 3990,
"end": 4212,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 4218,
"end": 4316,
"name": "tag",
"source": 6,
"value": "63"
},
{
"begin": 4218,
"end": 4316,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 4269,
"end": 4275,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 4303,
"end": 4308,
"name": "DUP2",
"source": 6
},
{
"begin": 4297,
"end": 4309,
"name": "MLOAD",
"source": 6
},
{
"begin": 4287,
"end": 4309,
"name": "SWAP1",
"source": 6
},
{
"begin": 4287,
"end": 4309,
"name": "POP",
"source": 6
},
{
"begin": 4218,
"end": 4316,
"name": "SWAP2",
"source": 6
},
{
"begin": 4218,
"end": 4316,
"name": "SWAP1",
"source": 6
},
{
"begin": 4218,
"end": 4316,
"name": "POP",
"source": 6
},
{
"begin": 4218,
"end": 4316,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 4322,
"end": 4469,
"name": "tag",
"source": 6,
"value": "64"
},
{
"begin": 4322,
"end": 4469,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 4423,
"end": 4434,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 4460,
"end": 4463,
"name": "DUP2",
"source": 6
},
{
"begin": 4445,
"end": 4463,
"name": "SWAP1",
"source": 6
},
{
"begin": 4445,
"end": 4463,
"name": "POP",
"source": 6
},
{
"begin": 4322,
"end": 4469,
"name": "SWAP3",
"source": 6
},
{
"begin": 4322,
"end": 4469,
"name": "SWAP2",
"source": 6
},
{
"begin": 4322,
"end": 4469,
"name": "POP",
"source": 6
},
{
"begin": 4322,
"end": 4469,
"name": "POP",
"source": 6
},
{
"begin": 4322,
"end": 4469,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 4475,
"end": 4861,
"name": "tag",
"source": 6,
"value": "65"
},
{
"begin": 4475,
"end": 4861,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 4579,
"end": 4582,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 4607,
"end": 4645,
"name": "PUSH [tag]",
"source": 6,
"value": "121"
},
{
"begin": 4639,
"end": 4644,
"name": "DUP3",
"source": 6
},
{
"begin": 4607,
"end": 4645,
"name": "PUSH [tag]",
"source": 6,
"value": "63"
},
{
"begin": 4607,
"end": 4645,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 4607,
"end": 4645,
"name": "tag",
"source": 6,
"value": "121"
},
{
"begin": 4607,
"end": 4645,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 4661,
"end": 4749,
"name": "PUSH [tag]",
"source": 6,
"value": "122"
},
{
"begin": 4742,
"end": 4748,
"name": "DUP2",
"source": 6
},
{
"begin": 4737,
"end": 4740,
"name": "DUP6",
"source": 6
},
{
"begin": 4661,
"end": 4749,
"name": "PUSH [tag]",
"source": 6,
"value": "64"
},
{
"begin": 4661,
"end": 4749,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 4661,
"end": 4749,
"name": "tag",
"source": 6,
"value": "122"
},
{
"begin": 4661,
"end": 4749,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 4654,
"end": 4749,
"name": "SWAP4",
"source": 6
},
{
"begin": 4654,
"end": 4749,
"name": "POP",
"source": 6
},
{
"begin": 4758,
"end": 4823,
"name": "PUSH [tag]",
"source": 6,
"value": "123"
},
{
"begin": 4816,
"end": 4822,
"name": "DUP2",
"source": 6
},
{
"begin": 4811,
"end": 4814,
"name": "DUP6",
"source": 6
},
{
"begin": 4804,
"end": 4808,
"name": "PUSH",
"source": 6,
"value": "20"
},
{
"begin": 4797,
"end": 4802,
"name": "DUP7",
"source": 6
},
{
"begin": 4793,
"end": 4809,
"name": "ADD",
"source": 6
},
{
"begin": 4758,
"end": 4823,
"name": "PUSH [tag]",
"source": 6,
"value": "59"
},
{
"begin": 4758,
"end": 4823,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 4758,
"end": 4823,
"name": "tag",
"source": 6,
"value": "123"
},
{
"begin": 4758,
"end": 4823,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 4848,
"end": 4854,
"name": "DUP1",
"source": 6
},
{
"begin": 4843,
"end": 4846,
"name": "DUP5",
"source": 6
},
{
"begin": 4839,
"end": 4855,
"name": "ADD",
"source": 6
},
{
"begin": 4832,
"end": 4855,
"name": "SWAP2",
"source": 6
},
{
"begin": 4832,
"end": 4855,
"name": "POP",
"source": 6
},
{
"begin": 4583,
"end": 4861,
"name": "POP",
"source": 6
},
{
"begin": 4475,
"end": 4861,
"name": "SWAP3",
"source": 6
},
{
"begin": 4475,
"end": 4861,
"name": "SWAP2",
"source": 6
},
{
"begin": 4475,
"end": 4861,
"name": "POP",
"source": 6
},
{
"begin": 4475,
"end": 4861,
"name": "POP",
"source": 6
},
{
"begin": 4475,
"end": 4861,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 4867,
"end": 5138,
"name": "tag",
"source": 6,
"value": "25"
},
{
"begin": 4867,
"end": 5138,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 4997,
"end": 5000,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 5019,
"end": 5112,
"name": "PUSH [tag]",
"source": 6,
"value": "125"
},
{
"begin": 5108,
"end": 5111,
"name": "DUP3",
"source": 6
},
{
"begin": 5099,
"end": 5105,
"name": "DUP5",
"source": 6
},
{
"begin": 5019,
"end": 5112,
"name": "PUSH [tag]",
"source": 6,
"value": "65"
},
{
"begin": 5019,
"end": 5112,
"jumpType": "[in]",
"name": "JUMP",
"source": 6
},
{
"begin": 5019,
"end": 5112,
"name": "tag",
"source": 6,
"value": "125"
},
{
"begin": 5019,
"end": 5112,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 5012,
"end": 5112,
"name": "SWAP2",
"source": 6
},
{
"begin": 5012,
"end": 5112,
"name": "POP",
"source": 6
},
{
"begin": 5129,
"end": 5132,
"name": "DUP2",
"source": 6
},
{
"begin": 5122,
"end": 5132,
"name": "SWAP1",
"source": 6
},
{
"begin": 5122,
"end": 5132,
"name": "POP",
"source": 6
},
{
"begin": 4867,
"end": 5138,
"name": "SWAP3",
"source": 6
},
{
"begin": 4867,
"end": 5138,
"name": "SWAP2",
"source": 6
},
{
"begin": 4867,
"end": 5138,
"name": "POP",
"source": 6
},
{
"begin": 4867,
"end": 5138,
"name": "POP",
"source": 6
},
{
"begin": 4867,
"end": 5138,
"jumpType": "[out]",
"name": "JUMP",
"source": 6
},
{
"begin": 599,
"end": 1715,
"name": "tag",
"source": 0,
"value": "7"
},
{
"begin": 599,
"end": 1715,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 599,
"end": 1715,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 599,
"end": 1715,
"name": "DUP1",
"source": 0
},
{
"begin": 599,
"end": 1715,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 599,
"end": 1715,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 599,
"end": 1715,
"name": "CODECOPY",
"source": 0
},
{
"begin": 599,
"end": 1715,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 599,
"end": 1715,
"name": "RETURN",
"source": 0
}
],
".data": {
"0": {
".auxdata": "a26469706673582212204445ca1d654fe96658df00412cf9c7bcb1fdfaf66f39f4eb3c6a802907e7966864736f6c63430008150033",
".code": [
{
"begin": 599,
"end": 1715,
"name": "PUSH",
"source": 0,
"value": "80"
},
{
"begin": 599,
"end": 1715,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 599,
"end": 1715,
"name": "MSTORE",
"source": 0
},
{
"begin": 2649,
"end": 2660,
"name": "PUSH [tag]",
"source": 2,
"value": "5"
},
{
"begin": 2649,
"end": 2658,
"name": "PUSH [tag]",
"source": 2,
"value": "6"
},
{
"begin": 2649,
"end": 2660,
"jumpType": "[in]",
"name": "JUMP",
"source": 2
},
{
"begin": 2649,
"end": 2660,
"name": "tag",
"source": 2,
"value": "5"
},
{
"begin": 2649,
"end": 2660,
"name": "JUMPDEST",
"source": 2
},
{
"begin": 599,
"end": 1715,
"name": "STOP",
"source": 0
},
{
"begin": 2323,
"end": 2406,
"name": "tag",
"source": 2,
"value": "6"
},
{
"begin": 2323,
"end": 2406,
"name": "JUMPDEST",
"source": 2
},
{
"begin": 2371,
"end": 2399,
"name": "PUSH [tag]",
"source": 2,
"value": "8"
},
{
"begin": 2381,
"end": 2398,
"name": "PUSH [tag]",
"source": 2,
"value": "9"
},
{
"begin": 2381,
"end": 2396,
"name": "PUSH [tag]",
"source": 2,
"value": "10"
},
{
"begin": 2381,
"end": 2398,
"jumpType": "[in]",
"name": "JUMP",
"source": 2
},
{
"begin": 2381,
"end": 2398,
"name": "tag",
"source": 2,
"value": "9"
},
{
"begin": 2381,
"end": 2398,
"name": "JUMPDEST",
"source": 2
},
{
"begin": 2371,
"end": 2380,
"name": "PUSH [tag]",
"source": 2,
"value": "11"
},
{
"begin": 2371,
"end": 2399,
"jumpType": "[in]",
"name": "JUMP",
"source": 2
},
{
"begin": 2371,
"end": 2399,
"name": "tag",
"source": 2,
"value": "8"
},
{
"begin": 2371,
"end": 2399,
"name": "JUMPDEST",
"source": 2
},
{
"begin": 2323,
"end": 2406,
"jumpType": "[out]",
"name": "JUMP",
"source": 2
},
{
"begin": 1581,
"end": 1713,
"name": "tag",
"source": 0,
"value": "10"
},
{
"begin": 1581,
"end": 1713,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 1648,
"end": 1655,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 1674,
"end": 1706,
"name": "PUSH [tag]",
"source": 0,
"value": "13"
},
{
"begin": 1674,
"end": 1704,
"name": "PUSH [tag]",
"source": 0,
"value": "14"
},
{
"begin": 1674,
"end": 1706,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 1674,
"end": 1706,
"name": "tag",
"source": 0,
"value": "13"
},
{
"begin": 1674,
"end": 1706,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 1667,
"end": 1706,
"name": "SWAP1",
"source": 0
},
{
"begin": 1667,
"end": 1706,
"name": "POP",
"source": 0
},
{
"begin": 1581,
"end": 1713,
"name": "SWAP1",
"source": 0
},
{
"begin": 1581,
"end": 1713,
"jumpType": "[out]",
"name": "JUMP",
"source": 0
},
{
"begin": 949,
"end": 1844,
"name": "tag",
"source": 2,
"value": "11"
},
{
"begin": 949,
"end": 1844,
"name": "JUMPDEST",
"source": 2
},
{
"begin": 1287,
"end": 1301,
"name": "CALLDATASIZE",
"source": 2
},
{
"begin": 1284,
"end": 1285,
"name": "PUSH",
"source": 2,
"value": "0"
},
{
"begin": 1281,
"end": 1282,
"name": "DUP1",
"source": 2
},
{
"begin": 1268,
"end": 1302,
"name": "CALLDATACOPY",
"source": 2
},
{
"begin": 1501,
"end": 1502,
"name": "PUSH",
"source": 2,
"value": "0"
},
{
"begin": 1498,
"end": 1499,
"name": "DUP1",
"source": 2
},
{
"begin": 1482,
"end": 1496,
"name": "CALLDATASIZE",
"source": 2
},
{
"begin": 1479,
"end": 1480,
"name": "PUSH",
"source": 2,
"value": "0"
},
{
"begin": 1463,
"end": 1477,
"name": "DUP5",
"source": 2
},
{
"begin": 1456,
"end": 1461,
"name": "GAS",
"source": 2
},
{
"begin": 1443,
"end": 1503,
"name": "DELEGATECALL",
"source": 2
},
{
"begin": 1577,
"end": 1593,
"name": "RETURNDATASIZE",
"source": 2
},
{
"begin": 1574,
"end": 1575,
"name": "PUSH",
"source": 2,
"value": "0"
},
{
"begin": 1571,
"end": 1572,
"name": "DUP1",
"source": 2
},
{
"begin": 1556,
"end": 1594,
"name": "RETURNDATACOPY",
"source": 2
},
{
"begin": 1615,
"end": 1621,
"name": "DUP1",
"source": 2
},
{
"begin": 1687,
"end": 1688,
"name": "PUSH",
"source": 2,
"value": "0"
},
{
"begin": 1682,
"end": 1748,
"name": "DUP2",
"source": 2
},
{
"begin": 1682,
"end": 1748,
"name": "EQ",
"source": 2
},
{
"begin": 1682,
"end": 1748,
"name": "PUSH [tag]",
"source": 2,
"value": "17"
},
{
"begin": 1682,
"end": 1748,
"name": "JUMPI",
"source": 2
},
{
"begin": 1797,
"end": 1813,
"name": "RETURNDATASIZE",
"source": 2
},
{
"begin": 1794,
"end": 1795,
"name": "PUSH",
"source": 2,
"value": "0"
},
{
"begin": 1787,
"end": 1814,
"name": "RETURN",
"source": 2
},
{
"begin": 1682,
"end": 1748,
"name": "tag",
"source": 2,
"value": "17"
},
{
"begin": 1682,
"end": 1748,
"name": "JUMPDEST",
"source": 2
},
{
"begin": 1717,
"end": 1733,
"name": "RETURNDATASIZE",
"source": 2
},
{
"begin": 1714,
"end": 1715,
"name": "PUSH",
"source": 2,
"value": "0"
},
{
"begin": 1707,
"end": 1734,
"name": "REVERT",
"source": 2
},
{
"begin": 1957,
"end": 2095,
"name": "tag",
"source": 1,
"value": "14"
},
{
"begin": 1957,
"end": 2095,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2009,
"end": 2016,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 2035,
"end": 2082,
"name": "PUSH [tag]",
"source": 1,
"value": "19"
},
{
"begin": 1327,
"end": 1393,
"name": "PUSH",
"source": 1,
"value": "360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC"
},
{
"begin": 2062,
"end": 2081,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 2062,
"end": 2081,
"name": "SHL",
"source": 1
},
{
"begin": 2035,
"end": 2061,
"name": "PUSH [tag]",
"source": 1,
"value": "20"
},
{
"begin": 2035,
"end": 2082,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 2035,
"end": 2082,
"name": "tag",
"source": 1,
"value": "19"
},
{
"begin": 2035,
"end": 2082,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2035,
"end": 2088,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 2035,
"end": 2088,
"name": "ADD",
"source": 1
},
{
"begin": 2035,
"end": 2088,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 2035,
"end": 2088,
"name": "SWAP1",
"source": 1
},
{
"begin": 2035,
"end": 2088,
"name": "SLOAD",
"source": 1
},
{
"begin": 2035,
"end": 2088,
"name": "SWAP1",
"source": 1
},
{
"begin": 2035,
"end": 2088,
"name": "PUSH",
"source": 1,
"value": "100"
},
{
"begin": 2035,
"end": 2088,
"name": "EXP",
"source": 1
},
{
"begin": 2035,
"end": 2088,
"name": "SWAP1",
"source": 1
},
{
"begin": 2035,
"end": 2088,
"name": "DIV",
"source": 1
},
{
"begin": 2035,
"end": 2088,
"name": "PUSH",
"source": 1,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 2035,
"end": 2088,
"name": "AND",
"source": 1
},
{
"begin": 2028,
"end": 2088,
"name": "SWAP1",
"source": 1
},
{
"begin": 2028,
"end": 2088,
"name": "POP",
"source": 1
},
{
"begin": 1957,
"end": 2095,
"name": "SWAP1",
"source": 1
},
{
"begin": 1957,
"end": 2095,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 1684,
"end": 1874,
"name": "tag",
"source": 5,
"value": "20"
},
{
"begin": 1684,
"end": 1874,
"name": "JUMPDEST",
"source": 5
},
{
"begin": 1745,
"end": 1766,
"name": "PUSH",
"source": 5,
"value": "0"
},
{
"begin": 1854,
"end": 1858,
"name": "DUP2",
"source": 5
},
{
"begin": 1844,
"end": 1858,
"name": "SWAP1",
"source": 5
},
{
"begin": 1844,
"end": 1858,
"name": "POP",
"source": 5
},
{
"begin": 1684,
"end": 1874,
"name": "SWAP2",
"source": 5
},
{
"begin": 1684,
"end": 1874,
"name": "SWAP1",
"source": 5
},
{
"begin": 1684,
"end": 1874,
"name": "POP",
"source": 5
},
{
"begin": 1684,
"end": 1874,
"jumpType": "[out]",
"name": "JUMP",
"source": 5
}
]
}
},
"sourceList": [
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol",
"#utility.yul"
]
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xbfb6695731de677140fbf76c772ab08c4233a122fb51ac28ac120fc49bbbc4ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f8fded7cc318efa15874b7c6a983fe17a4a955d72d240353a9a4ca1e1b824c\",\"dweb:/ipfs/QmdcmBL9Qo4Tk3Dby4wFYabGyot9JNeLPxpSXZUgUm92BV\"]},\"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol": {
"ERC1967Utils": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "admin",
"type": "address"
}
],
"name": "ERC1967InvalidAdmin",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "ERC1967InvalidBeacon",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "previousAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "AdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "BeaconUpgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
}
],
"devdoc": {
"details": "This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.",
"errors": {
"ERC1967InvalidAdmin(address)": [
{
"details": "The `admin` of the proxy is invalid."
}
],
"ERC1967InvalidBeacon(address)": [
{
"details": "The `beacon` of the proxy is invalid."
}
],
"ERC1967InvalidImplementation(address)": [
{
"details": "The `implementation` of the proxy is invalid."
}
],
"ERC1967NonPayable()": [
{
"details": "An upgrade function sees `msg.value > 0` that may be lost."
}
]
},
"events": {
"AdminChanged(address,address)": {
"details": "Emitted when the admin account has changed."
},
"BeaconUpgraded(address)": {
"details": "Emitted when the beacon is changed."
},
"Upgraded(address)": {
"details": "Emitted when the implementation is upgraded."
}
},
"kind": "dev",
"methods": {},
"stateVariables": {
"ADMIN_SLOT": {
"details": "Storage slot with the admin of the contract. This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1."
},
"BEACON_SLOT": {
"details": "The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1."
},
"IMPLEMENTATION_SLOT": {
"details": "Storage slot with the address of the current implementation. This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1."
}
},
"version": 1
},
"evm": {
"assembly": " /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":449:6722 library ERC1967Utils {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":449:6722 library ERC1967Utils {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212202962696cce633b63b4e0360a13dfcf05df0c784895310d8a6af653b3cd87d49d64736f6c63430008150033\n}\n",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212202962696cce633b63b4e0360a13dfcf05df0c784895310d8a6af653b3cd87d49d64736f6c63430008150033",
"opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x29 PUSH3 0x696CCE PUSH4 0x3B63B4E0 CALLDATASIZE EXP SGT 0xDF 0xCF SDIV 0xDF 0xC PUSH25 0x4895310D8A6AF653B3CD87D49D64736F6C6343000815003300 ",
"sourceMap": "449:6273:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212202962696cce633b63b4e0360a13dfcf05df0c784895310d8a6af653b3cd87d49d64736f6c63430008150033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x29 PUSH3 0x696CCE PUSH4 0x3B63B4E0 CALLDATASIZE EXP SGT 0xDF 0xCF SDIV 0xDF 0xC PUSH25 0x4895310D8A6AF653B3CD87D49D64736F6C6343000815003300 ",
"sourceMap": "449:6273:1:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17000",
"executionCost": "92",
"totalCost": "17092"
},
"internal": {
"_checkNonPayable()": "infinite",
"_setAdmin(address)": "infinite",
"_setBeacon(address)": "infinite",
"_setImplementation(address)": "infinite",
"changeAdmin(address)": "infinite",
"getAdmin()": "infinite",
"getBeacon()": "infinite",
"getImplementation()": "infinite",
"upgradeBeaconToAndCall(address,bytes memory)": "infinite",
"upgradeToAndCall(address,bytes memory)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 449,
"end": 6722,
"name": "PUSH #[$]",
"source": 1,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 449,
"end": 6722,
"name": "PUSH [$]",
"source": 1,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 449,
"end": 6722,
"name": "PUSH",
"source": 1,
"value": "B"
},
{
"begin": 449,
"end": 6722,
"name": "DUP3",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "DUP3",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "DUP3",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "CODECOPY",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "DUP1",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "MLOAD",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 449,
"end": 6722,
"name": "BYTE",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "PUSH",
"source": 1,
"value": "73"
},
{
"begin": 449,
"end": 6722,
"name": "EQ",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "PUSH [tag]",
"source": 1,
"value": "1"
},
{
"begin": 449,
"end": 6722,
"name": "JUMPI",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "PUSH",
"source": 1,
"value": "4E487B7100000000000000000000000000000000000000000000000000000000"
},
{
"begin": 449,
"end": 6722,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 449,
"end": 6722,
"name": "MSTORE",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 449,
"end": 6722,
"name": "PUSH",
"source": 1,
"value": "4"
},
{
"begin": 449,
"end": 6722,
"name": "MSTORE",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "PUSH",
"source": 1,
"value": "24"
},
{
"begin": 449,
"end": 6722,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 449,
"end": 6722,
"name": "REVERT",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "tag",
"source": 1,
"value": "1"
},
{
"begin": 449,
"end": 6722,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "ADDRESS",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 449,
"end": 6722,
"name": "MSTORE",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "PUSH",
"source": 1,
"value": "73"
},
{
"begin": 449,
"end": 6722,
"name": "DUP2",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "MSTORE8",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "DUP3",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "DUP2",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "RETURN",
"source": 1
}
],
".data": {
"0": {
".auxdata": "a26469706673582212202962696cce633b63b4e0360a13dfcf05df0c784895310d8a6af653b3cd87d49d64736f6c63430008150033",
".code": [
{
"begin": 449,
"end": 6722,
"name": "PUSHDEPLOYADDRESS",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "ADDRESS",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "EQ",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "PUSH",
"source": 1,
"value": "80"
},
{
"begin": 449,
"end": 6722,
"name": "PUSH",
"source": 1,
"value": "40"
},
{
"begin": 449,
"end": 6722,
"name": "MSTORE",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 449,
"end": 6722,
"name": "DUP1",
"source": 1
},
{
"begin": 449,
"end": 6722,
"name": "REVERT",
"source": 1
}
]
}
},
"sourceList": [
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol",
"#utility.yul"
]
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\",\"errors\":{\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidBeacon(address)\":[{\"details\":\"The `beacon` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\"},\"BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\"},\"IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":\"ERC1967Utils\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol": {
"Proxy": {
"abi": [
{
"stateMutability": "payable",
"type": "fallback"
}
],
"devdoc": {
"details": "This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.",
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol": {
"IBeacon": {
"abi": [
{
"inputs": [],
"name": "implementation",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"details": "This is the interface that {BeaconProxy} expects of its beacon.",
"kind": "dev",
"methods": {
"implementation()": {
"details": "Must return an address that can be used as a delegate call target. {UpgradeableBeacon} will check that this address is a contract."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"implementation()": "5c60da1b"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"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\":{\"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol": {
"Address": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "AddressInsufficientBalance",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
}
],
"devdoc": {
"details": "Collection of functions related to the address type",
"errors": {
"AddressEmptyCode(address)": [
{
"details": "There's no code at `target` (it is not a contract)."
}
],
"AddressInsufficientBalance(address)": [
{
"details": "The ETH balance of the account is not enough to perform the operation."
}
],
"FailedInnerCall()": [
{
"details": "A call to an address target failed. The target may have reverted."
}
]
},
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": " /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":195:6261 library Address {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":195:6261 library Address {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212202e9bc740be063baf7b4656c512ebb4b2dcb41ca3a31519da71306b655aaf1e9264736f6c63430008150033\n}\n",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212202e9bc740be063baf7b4656c512ebb4b2dcb41ca3a31519da71306b655aaf1e9264736f6c63430008150033",
"opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2E SWAP12 0xC7 BLOCKHASH 0xBE MOD EXTCODESIZE 0xAF PUSH28 0x4656C512EBB4B2DCB41CA3A31519DA71306B655AAF1E9264736F6C63 NUMBER STOP ADDMOD ISZERO STOP CALLER ",
"sourceMap": "195:6066:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212202e9bc740be063baf7b4656c512ebb4b2dcb41ca3a31519da71306b655aaf1e9264736f6c63430008150033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2E SWAP12 0xC7 BLOCKHASH 0xBE MOD EXTCODESIZE 0xAF PUSH28 0x4656C512EBB4B2DCB41CA3A31519DA71306B655AAF1E9264736F6C63 NUMBER STOP ADDMOD ISZERO STOP CALLER ",
"sourceMap": "195:6066:4:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17000",
"executionCost": "92",
"totalCost": "17092"
},
"internal": {
"_revert(bytes memory)": "infinite",
"functionCall(address,bytes memory)": "infinite",
"functionCallWithValue(address,bytes memory,uint256)": "infinite",
"functionDelegateCall(address,bytes memory)": "infinite",
"functionStaticCall(address,bytes memory)": "infinite",
"sendValue(address payable,uint256)": "infinite",
"verifyCallResult(bool,bytes memory)": "infinite",
"verifyCallResultFromTarget(address,bool,bytes memory)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 195,
"end": 6261,
"name": "PUSH #[$]",
"source": 4,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 195,
"end": 6261,
"name": "PUSH [$]",
"source": 4,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 195,
"end": 6261,
"name": "PUSH",
"source": 4,
"value": "B"
},
{
"begin": 195,
"end": 6261,
"name": "DUP3",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "DUP3",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "DUP3",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "CODECOPY",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "DUP1",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "MLOAD",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 195,
"end": 6261,
"name": "BYTE",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "PUSH",
"source": 4,
"value": "73"
},
{
"begin": 195,
"end": 6261,
"name": "EQ",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "PUSH [tag]",
"source": 4,
"value": "1"
},
{
"begin": 195,
"end": 6261,
"name": "JUMPI",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "PUSH",
"source": 4,
"value": "4E487B7100000000000000000000000000000000000000000000000000000000"
},
{
"begin": 195,
"end": 6261,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 195,
"end": 6261,
"name": "MSTORE",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 195,
"end": 6261,
"name": "PUSH",
"source": 4,
"value": "4"
},
{
"begin": 195,
"end": 6261,
"name": "MSTORE",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "PUSH",
"source": 4,
"value": "24"
},
{
"begin": 195,
"end": 6261,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 195,
"end": 6261,
"name": "REVERT",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "tag",
"source": 4,
"value": "1"
},
{
"begin": 195,
"end": 6261,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "ADDRESS",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 195,
"end": 6261,
"name": "MSTORE",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "PUSH",
"source": 4,
"value": "73"
},
{
"begin": 195,
"end": 6261,
"name": "DUP2",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "MSTORE8",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "DUP3",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "DUP2",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "RETURN",
"source": 4
}
],
".data": {
"0": {
".auxdata": "a26469706673582212202e9bc740be063baf7b4656c512ebb4b2dcb41ca3a31519da71306b655aaf1e9264736f6c63430008150033",
".code": [
{
"begin": 195,
"end": 6261,
"name": "PUSHDEPLOYADDRESS",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "ADDRESS",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "EQ",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "PUSH",
"source": 4,
"value": "80"
},
{
"begin": 195,
"end": 6261,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 195,
"end": 6261,
"name": "MSTORE",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 195,
"end": 6261,
"name": "DUP1",
"source": 4
},
{
"begin": 195,
"end": 6261,
"name": "REVERT",
"source": 4
}
]
}
},
"sourceList": [
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol",
"#utility.yul"
]
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol": {
"StorageSlot": {
"abi": [],
"devdoc": {
"details": "Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ```",
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": " /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1245:3930 library StorageSlot {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":1245:3930 library StorageSlot {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220bacaea727064bb4f4be2fb8419b8d27347a9fe38830c83c124631975a588b91a64736f6c63430008150033\n}\n",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220bacaea727064bb4f4be2fb8419b8d27347a9fe38830c83c124631975a588b91a64736f6c63430008150033",
"opcodes": "PUSH1 0x55 PUSH1 0x4B PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x3F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBA 0xCA 0xEA PUSH19 0x7064BB4F4BE2FB8419B8D27347A9FE38830C83 0xC1 0x24 PUSH4 0x1975A588 0xB9 BYTE PUSH5 0x736F6C6343 STOP ADDMOD ISZERO STOP CALLER ",
"sourceMap": "1245:2685:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220bacaea727064bb4f4be2fb8419b8d27347a9fe38830c83c124631975a588b91a64736f6c63430008150033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBA 0xCA 0xEA PUSH19 0x7064BB4F4BE2FB8419B8D27347A9FE38830C83 0xC1 0x24 PUSH4 0x1975A588 0xB9 BYTE PUSH5 0x736F6C6343 STOP ADDMOD ISZERO STOP CALLER ",
"sourceMap": "1245:2685:5:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17000",
"executionCost": "92",
"totalCost": "17092"
},
"internal": {
"getAddressSlot(bytes32)": "infinite",
"getBooleanSlot(bytes32)": "infinite",
"getBytes32Slot(bytes32)": "infinite",
"getBytesSlot(bytes storage pointer)": "infinite",
"getBytesSlot(bytes32)": "infinite",
"getStringSlot(bytes32)": "infinite",
"getStringSlot(string storage pointer)": "infinite",
"getUint256Slot(bytes32)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 1245,
"end": 3930,
"name": "PUSH #[$]",
"source": 5,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 1245,
"end": 3930,
"name": "PUSH [$]",
"source": 5,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 1245,
"end": 3930,
"name": "PUSH",
"source": 5,
"value": "B"
},
{
"begin": 1245,
"end": 3930,
"name": "DUP3",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "DUP3",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "DUP3",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "CODECOPY",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "DUP1",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "MLOAD",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "PUSH",
"source": 5,
"value": "0"
},
{
"begin": 1245,
"end": 3930,
"name": "BYTE",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "PUSH",
"source": 5,
"value": "73"
},
{
"begin": 1245,
"end": 3930,
"name": "EQ",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "PUSH [tag]",
"source": 5,
"value": "1"
},
{
"begin": 1245,
"end": 3930,
"name": "JUMPI",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "PUSH",
"source": 5,
"value": "4E487B7100000000000000000000000000000000000000000000000000000000"
},
{
"begin": 1245,
"end": 3930,
"name": "PUSH",
"source": 5,
"value": "0"
},
{
"begin": 1245,
"end": 3930,
"name": "MSTORE",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "PUSH",
"source": 5,
"value": "0"
},
{
"begin": 1245,
"end": 3930,
"name": "PUSH",
"source": 5,
"value": "4"
},
{
"begin": 1245,
"end": 3930,
"name": "MSTORE",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "PUSH",
"source": 5,
"value": "24"
},
{
"begin": 1245,
"end": 3930,
"name": "PUSH",
"source": 5,
"value": "0"
},
{
"begin": 1245,
"end": 3930,
"name": "REVERT",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "tag",
"source": 5,
"value": "1"
},
{
"begin": 1245,
"end": 3930,
"name": "JUMPDEST",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "ADDRESS",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "PUSH",
"source": 5,
"value": "0"
},
{
"begin": 1245,
"end": 3930,
"name": "MSTORE",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "PUSH",
"source": 5,
"value": "73"
},
{
"begin": 1245,
"end": 3930,
"name": "DUP2",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "MSTORE8",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "DUP3",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "DUP2",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "RETURN",
"source": 5
}
],
".data": {
"0": {
".auxdata": "a2646970667358221220bacaea727064bb4f4be2fb8419b8d27347a9fe38830c83c124631975a588b91a64736f6c63430008150033",
".code": [
{
"begin": 1245,
"end": 3930,
"name": "PUSHDEPLOYADDRESS",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "ADDRESS",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "EQ",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "PUSH",
"source": 5,
"value": "80"
},
{
"begin": 1245,
"end": 3930,
"name": "PUSH",
"source": 5,
"value": "40"
},
{
"begin": 1245,
"end": 3930,
"name": "MSTORE",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "PUSH",
"source": 5,
"value": "0"
},
{
"begin": 1245,
"end": 3930,
"name": "DUP1",
"source": 5
},
{
"begin": 1245,
"end": 3930,
"name": "REVERT",
"source": 5
}
]
}
},
"sourceList": [
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol",
"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol",
"#utility.yul"
]
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ```\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
}
},
"sources": {
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol": {
"ast": {
"absolutePath": "github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol",
"exportedSymbols": {
"ERC1967Proxy": [
37
],
"ERC1967Utils": [
340
],
"Proxy": [
376
]
},
"id": 38,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
"^",
"0.8",
".20"
],
"nodeType": "PragmaDirective",
"src": "114:24:0"
},
{
"absolutePath": "github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol",
"file": "../Proxy.sol",
"id": 3,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 38,
"sourceUnit": 377,
"src": "140:35:0",
"symbolAliases": [
{
"foreign": {
"id": 2,
"name": "Proxy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 376,
"src": "148:5:0",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"absolutePath": "github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol",
"file": "./ERC1967Utils.sol",
"id": 5,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 38,
"sourceUnit": 341,
"src": "176:48:0",
"symbolAliases": [
{
"foreign": {
"id": 4,
"name": "ERC1967Utils",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 340,
"src": "184:12:0",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 7,
"name": "Proxy",
"nameLocations": [
"624:5:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 376,
"src": "624:5:0"
},
"id": 8,
"nodeType": "InheritanceSpecifier",
"src": "624:5:0"
}
],
"canonicalName": "ERC1967Proxy",
"contractDependencies": [],
"contractKind": "contract",
"documentation": {
"id": 6,
"nodeType": "StructuredDocumentation",
"src": "226:372:0",
"text": " @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."
},
"fullyImplemented": true,
"id": 37,
"linearizedBaseContracts": [
37,
376
],
"name": "ERC1967Proxy",
"nameLocation": "608:12:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 23,
"nodeType": "Block",
"src": "1144:69:0",
"statements": [
{
"expression": {
"arguments": [
{
"id": 19,
"name": "implementation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 11,
"src": "1184:14:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 20,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13,
"src": "1200:5:0",
"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": 16,
"name": "ERC1967Utils",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 340,
"src": "1154:12:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$340_$",
"typeString": "type(library ERC1967Utils)"
}
},
"id": 18,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1167:16:0",
"memberName": "upgradeToAndCall",
"nodeType": "MemberAccess",
"referencedDeclaration": 159,
"src": "1154:29:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (address,bytes memory)"
}
},
"id": 21,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1154:52:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 22,
"nodeType": "ExpressionStatement",
"src": "1154:52:0"
}
]
},
"documentation": {
"id": 9,
"nodeType": "StructuredDocumentation",
"src": "636:439:0",
"text": " @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n Requirements:\n - If `data` is empty, `msg.value` must be zero."
},
"id": 24,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 14,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11,
"mutability": "mutable",
"name": "implementation",
"nameLocation": "1100:14:0",
"nodeType": "VariableDeclaration",
"scope": 24,
"src": "1092:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 10,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1092:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 13,
"mutability": "mutable",
"name": "_data",
"nameLocation": "1129:5:0",
"nodeType": "VariableDeclaration",
"scope": 24,
"src": "1116:18:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 12,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1116:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "1091:44:0"
},
"returnParameters": {
"id": 15,
"nodeType": "ParameterList",
"parameters": [],
"src": "1144:0:0"
},
"scope": 37,
"src": "1080:133:0",
"stateMutability": "payable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
357
],
"body": {
"id": 35,
"nodeType": "Block",
"src": "1657:56:0",
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 31,
"name": "ERC1967Utils",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 340,
"src": "1674:12:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$340_$",
"typeString": "type(library ERC1967Utils)"
}
},
"id": 32,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1687:17:0",
"memberName": "getImplementation",
"nodeType": "MemberAccess",
"referencedDeclaration": 98,
"src": "1674:30:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 33,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1674:32:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 30,
"id": 34,
"nodeType": "Return",
"src": "1667:39:0"
}
]
},
"documentation": {
"id": 25,
"nodeType": "StructuredDocumentation",
"src": "1219:357:0",
"text": " @dev Returns the current implementation address.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"
},
"id": 36,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_implementation",
"nameLocation": "1590:15:0",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 27,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "1630:8:0"
},
"parameters": {
"id": 26,
"nodeType": "ParameterList",
"parameters": [],
"src": "1605:2:0"
},
"returnParameters": {
"id": 30,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 29,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 36,
"src": "1648:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 28,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1648:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1647:9:0"
},
"scope": 37,
"src": "1581:132:0",
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
}
],
"scope": 38,
"src": "599:1116:0",
"usedErrors": [
72,
85,
399,
402
],
"usedEvents": [
51
]
}
],
"src": "114:1602:0"
},
"id": 0
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol": {
"ast": {
"absolutePath": "github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol",
"exportedSymbols": {
"Address": [
639
],
"ERC1967Utils": [
340
],
"IBeacon": [
386
],
"StorageSlot": [
749
]
},
"id": 341,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 39,
"literals": [
"solidity",
"^",
"0.8",
".20"
],
"nodeType": "PragmaDirective",
"src": "114:24:1"
},
{
"absolutePath": "github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol",
"file": "../beacon/IBeacon.sol",
"id": 41,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 341,
"sourceUnit": 387,
"src": "140:46:1",
"symbolAliases": [
{
"foreign": {
"id": 40,
"name": "IBeacon",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 386,
"src": "148:7:1",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"absolutePath": "github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol",
"file": "../../utils/Address.sol",
"id": 43,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 341,
"sourceUnit": 640,
"src": "187:48:1",
"symbolAliases": [
{
"foreign": {
"id": 42,
"name": "Address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 639,
"src": "195:7:1",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"absolutePath": "github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol",
"file": "../../utils/StorageSlot.sol",
"id": 45,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 341,
"sourceUnit": 750,
"src": "236:56:1",
"symbolAliases": [
{
"foreign": {
"id": 44,
"name": "StorageSlot",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 749,
"src": "244:11:1",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "ERC1967Utils",
"contractDependencies": [],
"contractKind": "library",
"documentation": {
"id": 46,
"nodeType": "StructuredDocumentation",
"src": "294:154:1",
"text": " @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots."
},
"fullyImplemented": true,
"id": 340,
"linearizedBaseContracts": [
340
],
"name": "ERC1967Utils",
"nameLocation": "457:12:1",
"nodeType": "ContractDefinition",
"nodes": [
{
"anonymous": false,
"documentation": {
"id": 47,
"nodeType": "StructuredDocumentation",
"src": "660:68:1",
"text": " @dev Emitted when the implementation is upgraded."
},
"eventSelector": "bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b",
"id": 51,
"name": "Upgraded",
"nameLocation": "739:8:1",
"nodeType": "EventDefinition",
"parameters": {
"id": 50,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49,
"indexed": true,
"mutability": "mutable",
"name": "implementation",
"nameLocation": "764:14:1",
"nodeType": "VariableDeclaration",
"scope": 51,
"src": "748:30:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 48,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "748:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "747:32:1"
},
"src": "733:47:1"
},
{
"anonymous": false,
"documentation": {
"id": 52,
"nodeType": "StructuredDocumentation",
"src": "786:67:1",
"text": " @dev Emitted when the admin account has changed."
},
"eventSelector": "7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f",
"id": 58,
"name": "AdminChanged",
"nameLocation": "864:12:1",
"nodeType": "EventDefinition",
"parameters": {
"id": 57,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 54,
"indexed": false,
"mutability": "mutable",
"name": "previousAdmin",
"nameLocation": "885:13:1",
"nodeType": "VariableDeclaration",
"scope": 58,
"src": "877:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 53,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "877:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 56,
"indexed": false,
"mutability": "mutable",
"name": "newAdmin",
"nameLocation": "908:8:1",
"nodeType": "VariableDeclaration",
"scope": 58,
"src": "900:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 55,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "900:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "876:41:1"
},
"src": "858:60:1"
},
{
"anonymous": false,
"documentation": {
"id": 59,
"nodeType": "StructuredDocumentation",
"src": "924:59:1",
"text": " @dev Emitted when the beacon is changed."
},
"eventSelector": "1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e",
"id": 63,
"name": "BeaconUpgraded",
"nameLocation": "994:14:1",
"nodeType": "EventDefinition",
"parameters": {
"id": 62,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 61,
"indexed": true,
"mutability": "mutable",
"name": "beacon",
"nameLocation": "1025:6:1",
"nodeType": "VariableDeclaration",
"scope": 63,
"src": "1009:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 60,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1009:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1008:24:1"
},
"src": "988:45:1"
},
{
"constant": true,
"documentation": {
"id": 64,
"nodeType": "StructuredDocumentation",
"src": "1039:170:1",
"text": " @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1."
},
"id": 67,
"mutability": "constant",
"name": "IMPLEMENTATION_SLOT",
"nameLocation": "1305:19:1",
"nodeType": "VariableDeclaration",
"scope": 340,
"src": "1279:114:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 65,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1279:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"hexValue": "307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263",
"id": 66,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1327:66:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1",
"typeString": "int_const 2444...(69 digits omitted)...5612"
},
"value": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"
},
"visibility": "internal"
},
{
"documentation": {
"id": 68,
"nodeType": "StructuredDocumentation",
"src": "1400:69:1",
"text": " @dev The `implementation` of the proxy is invalid."
},
"errorSelector": "4c9c8ce3",
"id": 72,
"name": "ERC1967InvalidImplementation",
"nameLocation": "1480:28:1",
"nodeType": "ErrorDefinition",
"parameters": {
"id": 71,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70,
"mutability": "mutable",
"name": "implementation",
"nameLocation": "1517:14:1",
"nodeType": "VariableDeclaration",
"scope": 72,
"src": "1509:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1509:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1508:24:1"
},
"src": "1474:59:1"
},
{
"documentation": {
"id": 73,
"nodeType": "StructuredDocumentation",
"src": "1539:60:1",
"text": " @dev The `admin` of the proxy is invalid."
},
"errorSelector": "62e77ba2",
"id": 77,
"name": "ERC1967InvalidAdmin",
"nameLocation": "1610:19:1",
"nodeType": "ErrorDefinition",
"parameters": {
"id": 76,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 75,
"mutability": "mutable",
"name": "admin",
"nameLocation": "1638:5:1",
"nodeType": "VariableDeclaration",
"scope": 77,
"src": "1630:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 74,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1630:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1629:15:1"
},
"src": "1604:41:1"
},
{
"documentation": {
"id": 78,
"nodeType": "StructuredDocumentation",
"src": "1651:61:1",
"text": " @dev The `beacon` of the proxy is invalid."
},
"errorSelector": "64ced0ec",
"id": 82,
"name": "ERC1967InvalidBeacon",
"nameLocation": "1723:20:1",
"nodeType": "ErrorDefinition",
"parameters": {
"id": 81,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 80,
"mutability": "mutable",
"name": "beacon",
"nameLocation": "1752:6:1",
"nodeType": "VariableDeclaration",
"scope": 82,
"src": "1744:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 79,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1744:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1743:16:1"
},
"src": "1717:43:1"
},
{
"documentation": {
"id": 83,
"nodeType": "StructuredDocumentation",
"src": "1766:82:1",
"text": " @dev An upgrade function sees `msg.value > 0` that may be lost."
},
"errorSelector": "b398979f",
"id": 85,
"name": "ERC1967NonPayable",
"nameLocation": "1859:17:1",
"nodeType": "ErrorDefinition",
"parameters": {
"id": 84,
"nodeType": "ParameterList",
"parameters": [],
"src": "1876:2:1"
},
"src": "1853:26:1"
},
{
"body": {
"id": 97,
"nodeType": "Block",
"src": "2018:77:1",
"statements": [
{
"expression": {
"expression": {
"arguments": [
{
"id": 93,
"name": "IMPLEMENTATION_SLOT",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 67,
"src": "2062:19:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"id": 91,
"name": "StorageSlot",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 749,
"src": "2035:11:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_StorageSlot_$749_$",
"typeString": "type(library StorageSlot)"
}
},
"id": 92,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2047:14:1",
"memberName": "getAddressSlot",
"nodeType": "MemberAccess",
"referencedDeclaration": 671,
"src": "2035:26:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$645_storage_ptr_$",
"typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
}
},
"id": 94,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2035:47:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_AddressSlot_$645_storage_ptr",
"typeString": "struct StorageSlot.AddressSlot storage pointer"
}
},
"id": 95,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2083:5:1",
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": 644,
"src": "2035:53:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 90,
"id": 96,
"nodeType": "Return",
"src": "2028:60:1"
}
]
},
"documentation": {
"id": 86,
"nodeType": "StructuredDocumentation",
"src": "1885:67:1",
"text": " @dev Returns the current implementation address."
},
"id": 98,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getImplementation",
"nameLocation": "1966:17:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 87,
"nodeType": "ParameterList",
"parameters": [],
"src": "1983:2:1"
},
"returnParameters": {
"id": 90,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 89,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 98,
"src": "2009:7:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 88,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2009:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "2008:9:1"
},
"scope": 340,
"src": "1957:138:1",
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 124,
"nodeType": "Block",
"src": "2249:218:1",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 108,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"expression": {
"id": 104,
"name": "newImplementation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 101,
"src": "2263:17:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 105,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2281:4:1",
"memberName": "code",
"nodeType": "MemberAccess",
"src": "2263:22:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 106,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2286:6:1",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "2263:29:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 107,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2296:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2263:34:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 114,
"nodeType": "IfStatement",
"src": "2259:119:1",
"trueBody": {
"id": 113,
"nodeType": "Block",
"src": "2299:79:1",
"statements": [
{
"errorCall": {
"arguments": [
{
"id": 110,
"name": "newImplementation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 101,
"src": "2349:17:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 109,
"name": "ERC1967InvalidImplementation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 72,
"src": "2320:28:1",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
"typeString": "function (address) pure"
}
},
"id": 111,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2320:47:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 112,
"nodeType": "RevertStatement",
"src": "2313:54:1"
}
]
}
},
{
"expression": {
"id": 122,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"arguments": [
{
"id": 118,
"name": "IMPLEMENTATION_SLOT",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 67,
"src": "2414:19:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"id": 115,
"name": "StorageSlot",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 749,
"src": "2387:11:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_StorageSlot_$749_$",
"typeString": "type(library StorageSlot)"
}
},
"id": 117,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2399:14:1",
"memberName": "getAddressSlot",
"nodeType": "MemberAccess",
"referencedDeclaration": 671,
"src": "2387:26:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$645_storage_ptr_$",
"typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
}
},
"id": 119,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2387:47:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_AddressSlot_$645_storage_ptr",
"typeString": "struct StorageSlot.AddressSlot storage pointer"
}
},
"id": 120,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "2435:5:1",
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": 644,
"src": "2387:53:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 121,
"name": "newImplementation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 101,
"src": "2443:17:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2387:73:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 123,
"nodeType": "ExpressionStatement",
"src": "2387:73:1"
}
]
},
"documentation": {
"id": 99,
"nodeType": "StructuredDocumentation",
"src": "2101:80:1",
"text": " @dev Stores a new address in the EIP1967 implementation slot."
},
"id": 125,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_setImplementation",
"nameLocation": "2195:18:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 102,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 101,
"mutability": "mutable",
"name": "newImplementation",
"nameLocation": "2222:17:1",
"nodeType": "VariableDeclaration",
"scope": 125,
"src": "2214:25:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 100,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2214:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "2213:27:1"
},
"returnParameters": {
"id": 103,
"nodeType": "ParameterList",
"parameters": [],
"src": "2249:0:1"
},
"scope": 340,
"src": "2186:281:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 158,
"nodeType": "Block",
"src": "2860:254:1",
"statements": [
{
"expression": {
"arguments": [
{
"id": 134,
"name": "newImplementation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 128,
"src": "2889:17:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 133,
"name": "_setImplementation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 125,
"src": "2870:18:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 135,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2870:37:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 136,
"nodeType": "ExpressionStatement",
"src": "2870:37:1"
},
{
"eventCall": {
"arguments": [
{
"id": 138,
"name": "newImplementation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 128,
"src": "2931:17:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 137,
"name": "Upgraded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 51,
"src": "2922:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 139,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2922:27:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 140,
"nodeType": "EmitStatement",
"src": "2917:32:1"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 144,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 141,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 130,
"src": "2964:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 142,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2969:6:1",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "2964:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 143,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2978:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2964:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 156,
"nodeType": "Block",
"src": "3065:43:1",
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 153,
"name": "_checkNonPayable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 339,
"src": "3079:16:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
"typeString": "function ()"
}
},
"id": 154,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3079:18:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 155,
"nodeType": "ExpressionStatement",
"src": "3079:18:1"
}
]
},
"id": 157,
"nodeType": "IfStatement",
"src": "2960:148:1",
"trueBody": {
"id": 152,
"nodeType": "Block",
"src": "2981:78:1",
"statements": [
{
"expression": {
"arguments": [
{
"id": 148,
"name": "newImplementation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 128,
"src": "3024:17:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 149,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 130,
"src": "3043:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"id": 145,
"name": "Address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 639,
"src": "2995:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Address_$639_$",
"typeString": "type(library Address)"
}
},
"id": 147,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3003:20:1",
"memberName": "functionDelegateCall",
"nodeType": "MemberAccess",
"referencedDeclaration": 558,
"src": "2995:28:1",
"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": 150,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2995:53:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 151,
"nodeType": "ExpressionStatement",
"src": "2995:53:1"
}
]
}
}
]
},
"documentation": {
"id": 126,
"nodeType": "StructuredDocumentation",
"src": "2473:301:1",
"text": " @dev Performs implementation upgrade with additional setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-Upgraded} event."
},
"id": 159,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "upgradeToAndCall",
"nameLocation": "2788:16:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 131,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 128,
"mutability": "mutable",
"name": "newImplementation",
"nameLocation": "2813:17:1",
"nodeType": "VariableDeclaration",
"scope": 159,
"src": "2805:25:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 127,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2805:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 130,
"mutability": "mutable",
"name": "data",
"nameLocation": "2845:4:1",
"nodeType": "VariableDeclaration",
"scope": 159,
"src": "2832:17:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 129,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2832:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "2804:46:1"
},
"returnParameters": {
"id": 132,
"nodeType": "ParameterList",
"parameters": [],
"src": "2860:0:1"
},
"scope": 340,
"src": "2779:335:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"constant": true,
"documentation": {
"id": 160,
"nodeType": "StructuredDocumentation",
"src": "3120:145:1",
"text": " @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1."
},
"id": 163,
"mutability": "constant",
"name": "ADMIN_SLOT",
"nameLocation": "3361:10:1",
"nodeType": "VariableDeclaration",
"scope": 340,
"src": "3335:105:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 161,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "3335:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"hexValue": "307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033",
"id": 162,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3374:66:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1",
"typeString": "int_const 8195...(69 digits omitted)...7091"
},
"value": "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"
},
"visibility": "internal"
},
{
"body": {
"id": 175,
"nodeType": "Block",
"src": "3844:68:1",
"statements": [
{
"expression": {
"expression": {
"arguments": [
{
"id": 171,
"name": "ADMIN_SLOT",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 163,
"src": "3888:10:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"id": 169,
"name": "StorageSlot",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 749,
"src": "3861:11:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_StorageSlot_$749_$",
"typeString": "type(library StorageSlot)"
}
},
"id": 170,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3873:14:1",
"memberName": "getAddressSlot",
"nodeType": "MemberAccess",
"referencedDeclaration": 671,
"src": "3861:26:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$645_storage_ptr_$",
"typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
}
},
"id": 172,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3861:38:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_AddressSlot_$645_storage_ptr",
"typeString": "struct StorageSlot.AddressSlot storage pointer"
}
},
"id": 173,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3900:5:1",
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": 644,
"src": "3861:44:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 168,
"id": 174,
"nodeType": "Return",
"src": "3854:51:1"
}
]
},
"documentation": {
"id": 164,
"nodeType": "StructuredDocumentation",
"src": "3447:340:1",
"text": " @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"
},
"id": 176,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getAdmin",
"nameLocation": "3801:8:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 165,
"nodeType": "ParameterList",
"parameters": [],
"src": "3809:2:1"
},
"returnParameters": {
"id": 168,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 167,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 176,
"src": "3835:7:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 166,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3835:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "3834:9:1"
},
"scope": 340,
"src": "3792:120:1",
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 206,
"nodeType": "Block",
"src": "4039:172:1",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 187,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 182,
"name": "newAdmin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 179,
"src": "4053:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 185,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4073: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": 184,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "4065:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 183,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4065:7:1",
"typeDescriptions": {}
}
},
"id": 186,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4065:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4053:22:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 196,
"nodeType": "IfStatement",
"src": "4049:91:1",
"trueBody": {
"id": 195,
"nodeType": "Block",
"src": "4077:63:1",
"statements": [
{
"errorCall": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 191,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4126: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": 190,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "4118:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 189,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4118:7:1",
"typeDescriptions": {}
}
},
"id": 192,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4118:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 188,
"name": "ERC1967InvalidAdmin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 77,
"src": "4098:19:1",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
"typeString": "function (address) pure"
}
},
"id": 193,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4098:31:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 194,
"nodeType": "RevertStatement",
"src": "4091:38:1"
}
]
}
},
{
"expression": {
"id": 204,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"arguments": [
{
"id": 200,
"name": "ADMIN_SLOT",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 163,
"src": "4176:10:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"id": 197,
"name": "StorageSlot",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 749,
"src": "4149:11:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_StorageSlot_$749_$",
"typeString": "type(library StorageSlot)"
}
},
"id": 199,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4161:14:1",
"memberName": "getAddressSlot",
"nodeType": "MemberAccess",
"referencedDeclaration": 671,
"src": "4149:26:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$645_storage_ptr_$",
"typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
}
},
"id": 201,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4149:38:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_AddressSlot_$645_storage_ptr",
"typeString": "struct StorageSlot.AddressSlot storage pointer"
}
},
"id": 202,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "4188:5:1",
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": 644,
"src": "4149:44:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 203,
"name": "newAdmin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 179,
"src": "4196:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4149:55:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 205,
"nodeType": "ExpressionStatement",
"src": "4149:55:1"
}
]
},
"documentation": {
"id": 177,
"nodeType": "StructuredDocumentation",
"src": "3918:71:1",
"text": " @dev Stores a new address in the EIP1967 admin slot."
},
"id": 207,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_setAdmin",
"nameLocation": "4003:9:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 180,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 179,
"mutability": "mutable",
"name": "newAdmin",
"nameLocation": "4021:8:1",
"nodeType": "VariableDeclaration",
"scope": 207,
"src": "4013:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 178,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4013:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "4012:18:1"
},
"returnParameters": {
"id": 181,
"nodeType": "ParameterList",
"parameters": [],
"src": "4039:0:1"
},
"scope": 340,
"src": "3994:217:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 223,
"nodeType": "Block",
"src": "4379:85:1",
"statements": [
{
"eventCall": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 214,
"name": "getAdmin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 176,
"src": "4407:8:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 215,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4407:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 216,
"name": "newAdmin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 210,
"src": "4419:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 213,
"name": "AdminChanged",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 58,
"src": "4394:12:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
"typeString": "function (address,address)"
}
},
"id": 217,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4394:34:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 218,
"nodeType": "EmitStatement",
"src": "4389:39:1"
},
{
"expression": {
"arguments": [
{
"id": 220,
"name": "newAdmin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 210,
"src": "4448:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 219,
"name": "_setAdmin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 207,
"src": "4438:9:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 221,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4438:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 222,
"nodeType": "ExpressionStatement",
"src": "4438:19:1"
}
]
},
"documentation": {
"id": 208,
"nodeType": "StructuredDocumentation",
"src": "4217:109:1",
"text": " @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event."
},
"id": 224,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "changeAdmin",
"nameLocation": "4340:11:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 211,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 210,
"mutability": "mutable",
"name": "newAdmin",
"nameLocation": "4360:8:1",
"nodeType": "VariableDeclaration",
"scope": 224,
"src": "4352:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 209,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4352:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "4351:18:1"
},
"returnParameters": {
"id": 212,
"nodeType": "ParameterList",
"parameters": [],
"src": "4379:0:1"
},
"scope": 340,
"src": "4331:133:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"constant": true,
"documentation": {
"id": 225,
"nodeType": "StructuredDocumentation",
"src": "4470:201:1",
"text": " @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1."
},
"id": 228,
"mutability": "constant",
"name": "BEACON_SLOT",
"nameLocation": "4767:11:1",
"nodeType": "VariableDeclaration",
"scope": 340,
"src": "4741:106:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 226,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "4741:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"hexValue": "307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530",
"id": 227,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4781:66:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1",
"typeString": "int_const 7415...(69 digits omitted)...4704"
},
"value": "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"
},
"visibility": "internal"
},
{
"body": {
"id": 240,
"nodeType": "Block",
"src": "4963:69:1",
"statements": [
{
"expression": {
"expression": {
"arguments": [
{
"id": 236,
"name": "BEACON_SLOT",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 228,
"src": "5007:11:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"id": 234,
"name": "StorageSlot",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 749,
"src": "4980:11:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_StorageSlot_$749_$",
"typeString": "type(library StorageSlot)"
}
},
"id": 235,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4992:14:1",
"memberName": "getAddressSlot",
"nodeType": "MemberAccess",
"referencedDeclaration": 671,
"src": "4980:26:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$645_storage_ptr_$",
"typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
}
},
"id": 237,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4980:39:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_AddressSlot_$645_storage_ptr",
"typeString": "struct StorageSlot.AddressSlot storage pointer"
}
},
"id": 238,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5020:5:1",
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": 644,
"src": "4980:45:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 233,
"id": 239,
"nodeType": "Return",
"src": "4973:52:1"
}
]
},
"documentation": {
"id": 229,
"nodeType": "StructuredDocumentation",
"src": "4854:51:1",
"text": " @dev Returns the current beacon."
},
"id": 241,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getBeacon",
"nameLocation": "4919:9:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 230,
"nodeType": "ParameterList",
"parameters": [],
"src": "4928:2:1"
},
"returnParameters": {
"id": 233,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 232,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 241,
"src": "4954:7:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 231,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4954:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "4953:9:1"
},
"scope": 340,
"src": "4910:122:1",
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 286,
"nodeType": "Block",
"src": "5161:390:1",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 251,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"expression": {
"id": 247,
"name": "newBeacon",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 244,
"src": "5175:9:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 248,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5185:4:1",
"memberName": "code",
"nodeType": "MemberAccess",
"src": "5175:14:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 249,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5190:6:1",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "5175:21:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 250,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5200:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5175:26:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 257,
"nodeType": "IfStatement",
"src": "5171:95:1",
"trueBody": {
"id": 256,
"nodeType": "Block",
"src": "5203:63:1",
"statements": [
{
"errorCall": {
"arguments": [
{
"id": 253,
"name": "newBeacon",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 244,
"src": "5245:9:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 252,
"name": "ERC1967InvalidBeacon",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 82,
"src": "5224:20:1",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
"typeString": "function (address) pure"
}
},
"id": 254,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5224:31:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 255,
"nodeType": "RevertStatement",
"src": "5217:38:1"
}
]
}
},
{
"expression": {
"id": 265,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"arguments": [
{
"id": 261,
"name": "BEACON_SLOT",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 228,
"src": "5303:11:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"id": 258,
"name": "StorageSlot",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 749,
"src": "5276:11:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_StorageSlot_$749_$",
"typeString": "type(library StorageSlot)"
}
},
"id": 260,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5288:14:1",
"memberName": "getAddressSlot",
"nodeType": "MemberAccess",
"referencedDeclaration": 671,
"src": "5276:26:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$645_storage_ptr_$",
"typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"
}
},
"id": 262,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5276:39:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_AddressSlot_$645_storage_ptr",
"typeString": "struct StorageSlot.AddressSlot storage pointer"
}
},
"id": 263,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "5316:5:1",
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": 644,
"src": "5276:45:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 264,
"name": "newBeacon",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 244,
"src": "5324:9:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "5276:57:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 266,
"nodeType": "ExpressionStatement",
"src": "5276:57:1"
},
{
"assignments": [
268
],
"declarations": [
{
"constant": false,
"id": 268,
"mutability": "mutable",
"name": "beaconImplementation",
"nameLocation": "5352:20:1",
"nodeType": "VariableDeclaration",
"scope": 286,
"src": "5344:28:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 267,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5344:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 274,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"arguments": [
{
"id": 270,
"name": "newBeacon",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 244,
"src": "5383:9:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 269,
"name": "IBeacon",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 386,
"src": "5375:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IBeacon_$386_$",
"typeString": "type(contract IBeacon)"
}
},
"id": 271,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5375:18:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBeacon_$386",
"typeString": "contract IBeacon"
}
},
"id": 272,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5394:14:1",
"memberName": "implementation",
"nodeType": "MemberAccess",
"referencedDeclaration": 385,
"src": "5375:33:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 273,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5375:35:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5344:66:1"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 279,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"expression": {
"id": 275,
"name": "beaconImplementation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 268,
"src": "5424:20:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 276,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5445:4:1",
"memberName": "code",
"nodeType": "MemberAccess",
"src": "5424:25:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 277,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5450:6:1",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "5424:32:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 278,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5460:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5424:37:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 285,
"nodeType": "IfStatement",
"src": "5420:125:1",
"trueBody": {
"id": 284,
"nodeType": "Block",
"src": "5463:82:1",
"statements": [
{
"errorCall": {
"arguments": [
{
"id": 281,
"name": "beaconImplementation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 268,
"src": "5513:20:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 280,
"name": "ERC1967InvalidImplementation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 72,
"src": "5484:28:1",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
"typeString": "function (address) pure"
}
},
"id": 282,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5484:50:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 283,
"nodeType": "RevertStatement",
"src": "5477:57:1"
}
]
}
}
]
},
"documentation": {
"id": 242,
"nodeType": "StructuredDocumentation",
"src": "5038:71:1",
"text": " @dev Stores a new beacon in the EIP1967 beacon slot."
},
"id": 287,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_setBeacon",
"nameLocation": "5123:10:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 245,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 244,
"mutability": "mutable",
"name": "newBeacon",
"nameLocation": "5142:9:1",
"nodeType": "VariableDeclaration",
"scope": 287,
"src": "5134:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 243,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5134:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "5133:19:1"
},
"returnParameters": {
"id": 246,
"nodeType": "ParameterList",
"parameters": [],
"src": "5161:0:1"
},
"scope": 340,
"src": "5114:437:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 324,
"nodeType": "Block",
"src": "6155:254:1",
"statements": [
{
"expression": {
"arguments": [
{
"id": 296,
"name": "newBeacon",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 290,
"src": "6176:9:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 295,
"name": "_setBeacon",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 287,
"src": "6165:10:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 297,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6165:21:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 298,
"nodeType": "ExpressionStatement",
"src": "6165:21:1"
},
{
"eventCall": {
"arguments": [
{
"id": 300,
"name": "newBeacon",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 290,
"src": "6216:9:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 299,
"name": "BeaconUpgraded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 63,
"src": "6201:14:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 301,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6201:25:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 302,
"nodeType": "EmitStatement",
"src": "6196:30:1"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 306,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 303,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
"src": "6241:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 304,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6246:6:1",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "6241:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 305,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6255:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "6241:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 322,
"nodeType": "Block",
"src": "6360:43:1",
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 319,
"name": "_checkNonPayable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 339,
"src": "6374:16:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
"typeString": "function ()"
}
},
"id": 320,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6374:18:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 321,
"nodeType": "ExpressionStatement",
"src": "6374:18:1"
}
]
},
"id": 323,
"nodeType": "IfStatement",
"src": "6237:166:1",
"trueBody": {
"id": 318,
"nodeType": "Block",
"src": "6258:96:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"arguments": [
{
"id": 311,
"name": "newBeacon",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 290,
"src": "6309:9:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 310,
"name": "IBeacon",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 386,
"src": "6301:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IBeacon_$386_$",
"typeString": "type(contract IBeacon)"
}
},
"id": 312,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6301:18:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IBeacon_$386",
"typeString": "contract IBeacon"
}
},
"id": 313,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6320:14:1",
"memberName": "implementation",
"nodeType": "MemberAccess",
"referencedDeclaration": 385,
"src": "6301:33:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 314,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6301:35:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 315,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
"src": "6338:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"id": 307,
"name": "Address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 639,
"src": "6272:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Address_$639_$",
"typeString": "type(library Address)"
}
},
"id": 309,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6280:20:1",
"memberName": "functionDelegateCall",
"nodeType": "MemberAccess",
"referencedDeclaration": 558,
"src": "6272:28:1",
"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": 316,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6272:71:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 317,
"nodeType": "ExpressionStatement",
"src": "6272:71:1"
}
]
}
}
]
},
"documentation": {
"id": 288,
"nodeType": "StructuredDocumentation",
"src": "5557:514:1",
"text": " @dev Change the beacon and trigger a setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-BeaconUpgraded} event.\n CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n efficiency."
},
"id": 325,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "upgradeBeaconToAndCall",
"nameLocation": "6085:22:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 293,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 290,
"mutability": "mutable",
"name": "newBeacon",
"nameLocation": "6116:9:1",
"nodeType": "VariableDeclaration",
"scope": 325,
"src": "6108:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 289,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6108:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 292,
"mutability": "mutable",
"name": "data",
"nameLocation": "6140:4:1",
"nodeType": "VariableDeclaration",
"scope": 325,
"src": "6127:17:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 291,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "6127:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "6107:38:1"
},
"returnParameters": {
"id": 294,
"nodeType": "ParameterList",
"parameters": [],
"src": "6155:0:1"
},
"scope": 340,
"src": "6076:333:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 338,
"nodeType": "Block",
"src": "6634:86:1",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 332,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 329,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967281,
"src": "6648:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 330,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6652:5:1",
"memberName": "value",
"nodeType": "MemberAccess",
"src": "6648:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 331,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6660:1:1",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "6648:13:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 337,
"nodeType": "IfStatement",
"src": "6644:70:1",
"trueBody": {
"id": 336,
"nodeType": "Block",
"src": "6663:51:1",
"statements": [
{
"errorCall": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 333,
"name": "ERC1967NonPayable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 85,
"src": "6684:17:1",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 334,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6684:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 335,
"nodeType": "RevertStatement",
"src": "6677:26:1"
}
]
}
}
]
},
"documentation": {
"id": 326,
"nodeType": "StructuredDocumentation",
"src": "6415:178:1",
"text": " @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n if an upgrade doesn't perform an initialization call."
},
"id": 339,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_checkNonPayable",
"nameLocation": "6607:16:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 327,
"nodeType": "ParameterList",
"parameters": [],
"src": "6623:2:1"
},
"returnParameters": {
"id": 328,
"nodeType": "ParameterList",
"parameters": [],
"src": "6634:0:1"
},
"scope": 340,
"src": "6598:122:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
}
],
"scope": 341,
"src": "449:6273:1",
"usedErrors": [
72,
77,
82,
85
],
"usedEvents": [
51,
58,
63
]
}
],
"src": "114:6609:1"
},
"id": 1
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol": {
"ast": {
"absolutePath": "github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol",
"exportedSymbols": {
"Proxy": [
376
]
},
"id": 377,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 342,
"literals": [
"solidity",
"^",
"0.8",
".20"
],
"nodeType": "PragmaDirective",
"src": "99:24:2"
},
{
"abstract": true,
"baseContracts": [],
"canonicalName": "Proxy",
"contractDependencies": [],
"contractKind": "contract",
"documentation": {
"id": 343,
"nodeType": "StructuredDocumentation",
"src": "125:598:2",
"text": " @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy."
},
"fullyImplemented": false,
"id": 376,
"linearizedBaseContracts": [
376
],
"name": "Proxy",
"nameLocation": "742:5:2",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 350,
"nodeType": "Block",
"src": "1009:835:2",
"statements": [
{
"AST": {
"nativeSrc": "1028:810:2",
"nodeType": "YulBlock",
"src": "1028:810:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1281:1:2",
"nodeType": "YulLiteral",
"src": "1281:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1284:1:2",
"nodeType": "YulLiteral",
"src": "1284:1:2",
"type": "",
"value": "0"
},
{
"arguments": [],
"functionName": {
"name": "calldatasize",
"nativeSrc": "1287:12:2",
"nodeType": "YulIdentifier",
"src": "1287:12:2"
},
"nativeSrc": "1287:14:2",
"nodeType": "YulFunctionCall",
"src": "1287:14:2"
}
],
"functionName": {
"name": "calldatacopy",
"nativeSrc": "1268:12:2",
"nodeType": "YulIdentifier",
"src": "1268:12:2"
},
"nativeSrc": "1268:34:2",
"nodeType": "YulFunctionCall",
"src": "1268:34:2"
},
"nativeSrc": "1268:34:2",
"nodeType": "YulExpressionStatement",
"src": "1268:34:2"
},
{
"nativeSrc": "1429:74:2",
"nodeType": "YulVariableDeclaration",
"src": "1429:74:2",
"value": {
"arguments": [
{
"arguments": [],
"functionName": {
"name": "gas",
"nativeSrc": "1456:3:2",
"nodeType": "YulIdentifier",
"src": "1456:3:2"
},
"nativeSrc": "1456:5:2",
"nodeType": "YulFunctionCall",
"src": "1456:5:2"
},
{
"name": "implementation",
"nativeSrc": "1463:14:2",
"nodeType": "YulIdentifier",
"src": "1463:14:2"
},
{
"kind": "number",
"nativeSrc": "1479:1:2",
"nodeType": "YulLiteral",
"src": "1479:1:2",
"type": "",
"value": "0"
},
{
"arguments": [],
"functionName": {
"name": "calldatasize",
"nativeSrc": "1482:12:2",
"nodeType": "YulIdentifier",
"src": "1482:12:2"
},
"nativeSrc": "1482:14:2",
"nodeType": "YulFunctionCall",
"src": "1482:14:2"
},
{
"kind": "number",
"nativeSrc": "1498:1:2",
"nodeType": "YulLiteral",
"src": "1498:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1501:1:2",
"nodeType": "YulLiteral",
"src": "1501:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "delegatecall",
"nativeSrc": "1443:12:2",
"nodeType": "YulIdentifier",
"src": "1443:12:2"
},
"nativeSrc": "1443:60:2",
"nodeType": "YulFunctionCall",
"src": "1443:60:2"
},
"variables": [
{
"name": "result",
"nativeSrc": "1433:6:2",
"nodeType": "YulTypedName",
"src": "1433:6:2",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1571:1:2",
"nodeType": "YulLiteral",
"src": "1571:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1574:1:2",
"nodeType": "YulLiteral",
"src": "1574:1:2",
"type": "",
"value": "0"
},
{
"arguments": [],
"functionName": {
"name": "returndatasize",
"nativeSrc": "1577:14:2",
"nodeType": "YulIdentifier",
"src": "1577:14:2"
},
"nativeSrc": "1577:16:2",
"nodeType": "YulFunctionCall",
"src": "1577:16:2"
}
],
"functionName": {
"name": "returndatacopy",
"nativeSrc": "1556:14:2",
"nodeType": "YulIdentifier",
"src": "1556:14:2"
},
"nativeSrc": "1556:38:2",
"nodeType": "YulFunctionCall",
"src": "1556:38:2"
},
"nativeSrc": "1556:38:2",
"nodeType": "YulExpressionStatement",
"src": "1556:38:2"
},
{
"cases": [
{
"body": {
"nativeSrc": "1689:59:2",
"nodeType": "YulBlock",
"src": "1689:59:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1714:1:2",
"nodeType": "YulLiteral",
"src": "1714:1:2",
"type": "",
"value": "0"
},
{
"arguments": [],
"functionName": {
"name": "returndatasize",
"nativeSrc": "1717:14:2",
"nodeType": "YulIdentifier",
"src": "1717:14:2"
},
"nativeSrc": "1717:16:2",
"nodeType": "YulFunctionCall",
"src": "1717:16:2"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1707:6:2",
"nodeType": "YulIdentifier",
"src": "1707:6:2"
},
"nativeSrc": "1707:27:2",
"nodeType": "YulFunctionCall",
"src": "1707:27:2"
},
"nativeSrc": "1707:27:2",
"nodeType": "YulExpressionStatement",
"src": "1707:27:2"
}
]
},
"nativeSrc": "1682:66:2",
"nodeType": "YulCase",
"src": "1682:66:2",
"value": {
"kind": "number",
"nativeSrc": "1687:1:2",
"nodeType": "YulLiteral",
"src": "1687:1:2",
"type": "",
"value": "0"
}
},
{
"body": {
"nativeSrc": "1769:59:2",
"nodeType": "YulBlock",
"src": "1769:59:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1794:1:2",
"nodeType": "YulLiteral",
"src": "1794:1:2",
"type": "",
"value": "0"
},
{
"arguments": [],
"functionName": {
"name": "returndatasize",
"nativeSrc": "1797:14:2",
"nodeType": "YulIdentifier",
"src": "1797:14:2"
},
"nativeSrc": "1797:16:2",
"nodeType": "YulFunctionCall",
"src": "1797:16:2"
}
],
"functionName": {
"name": "return",
"nativeSrc": "1787:6:2",
"nodeType": "YulIdentifier",
"src": "1787:6:2"
},
"nativeSrc": "1787:27:2",
"nodeType": "YulFunctionCall",
"src": "1787:27:2"
},
"nativeSrc": "1787:27:2",
"nodeType": "YulExpressionStatement",
"src": "1787:27:2"
}
]
},
"nativeSrc": "1761:67:2",
"nodeType": "YulCase",
"src": "1761:67:2",
"value": "default"
}
],
"expression": {
"name": "result",
"nativeSrc": "1615:6:2",
"nodeType": "YulIdentifier",
"src": "1615:6:2"
},
"nativeSrc": "1608:220:2",
"nodeType": "YulSwitch",
"src": "1608:220:2"
}
]
},
"evmVersion": "shanghai",
"externalReferences": [
{
"declaration": 346,
"isOffset": false,
"isSlot": false,
"src": "1463:14:2",
"valueSize": 1
}
],
"id": 349,
"nodeType": "InlineAssembly",
"src": "1019:819:2"
}
]
},
"documentation": {
"id": 344,
"nodeType": "StructuredDocumentation",
"src": "754:190:2",
"text": " @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller."
},
"id": 351,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_delegate",
"nameLocation": "958:9:2",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 347,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 346,
"mutability": "mutable",
"name": "implementation",
"nameLocation": "976:14:2",
"nodeType": "VariableDeclaration",
"scope": 351,
"src": "968:22:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 345,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "968:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "967:24:2"
},
"returnParameters": {
"id": 348,
"nodeType": "ParameterList",
"parameters": [],
"src": "1009:0:2"
},
"scope": 376,
"src": "949:895:2",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"documentation": {
"id": 352,
"nodeType": "StructuredDocumentation",
"src": "1850:173:2",
"text": " @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n function and {_fallback} should delegate."
},
"id": 357,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "_implementation",
"nameLocation": "2037:15:2",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 353,
"nodeType": "ParameterList",
"parameters": [],
"src": "2052:2:2"
},
"returnParameters": {
"id": 356,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 355,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 357,
"src": "2086:7:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 354,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2086:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "2085:9:2"
},
"scope": 376,
"src": "2028:67:2",
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 366,
"nodeType": "Block",
"src": "2361:45:2",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 362,
"name": "_implementation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 357,
"src": "2381:15:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 363,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2381:17:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 361,
"name": "_delegate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 351,
"src": "2371:9:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 364,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2371:28:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 365,
"nodeType": "ExpressionStatement",
"src": "2371:28:2"
}
]
},
"documentation": {
"id": 358,
"nodeType": "StructuredDocumentation",
"src": "2101:217:2",
"text": " @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internal call site, it will return directly to the external caller."
},
"id": 367,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_fallback",
"nameLocation": "2332:9:2",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 359,
"nodeType": "ParameterList",
"parameters": [],
"src": "2341:2:2"
},
"returnParameters": {
"id": 360,
"nodeType": "ParameterList",
"parameters": [],
"src": "2361:0:2"
},
"scope": 376,
"src": "2323:83:2",
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"body": {
"id": 374,
"nodeType": "Block",
"src": "2639:28:2",
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 371,
"name": "_fallback",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 367,
"src": "2649:9:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
"typeString": "function ()"
}
},
"id": 372,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2649:11:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 373,
"nodeType": "ExpressionStatement",
"src": "2649:11:2"
}
]
},
"documentation": {
"id": 368,
"nodeType": "StructuredDocumentation",
"src": "2412:186:2",
"text": " @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data."
},
"id": 375,
"implemented": true,
"kind": "fallback",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 369,
"nodeType": "ParameterList",
"parameters": [],
"src": "2611:2:2"
},
"returnParameters": {
"id": 370,
"nodeType": "ParameterList",
"parameters": [],
"src": "2639:0:2"
},
"scope": 376,
"src": "2603:64:2",
"stateMutability": "payable",
"virtual": true,
"visibility": "external"
}
],
"scope": 377,
"src": "724:1945:2",
"usedErrors": [],
"usedEvents": []
}
],
"src": "99:2571:2"
},
"id": 2
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol": {
"ast": {
"absolutePath": "github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol",
"exportedSymbols": {
"IBeacon": [
386
]
},
"id": 387,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 378,
"literals": [
"solidity",
"^",
"0.8",
".20"
],
"nodeType": "PragmaDirective",
"src": "108:24:3"
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "IBeacon",
"contractDependencies": [],
"contractKind": "interface",
"documentation": {
"id": 379,
"nodeType": "StructuredDocumentation",
"src": "134:79:3",
"text": " @dev This is the interface that {BeaconProxy} expects of its beacon."
},
"fullyImplemented": false,
"id": 386,
"linearizedBaseContracts": [
386
],
"name": "IBeacon",
"nameLocation": "224:7:3",
"nodeType": "ContractDefinition",
"nodes": [
{
"documentation": {
"id": 380,
"nodeType": "StructuredDocumentation",
"src": "238:168:3",
"text": " @dev Must return an address that can be used as a delegate call target.\n {UpgradeableBeacon} will check that this address is a contract."
},
"functionSelector": "5c60da1b",
"id": 385,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "implementation",
"nameLocation": "420:14:3",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 381,
"nodeType": "ParameterList",
"parameters": [],
"src": "434:2:3"
},
"returnParameters": {
"id": 384,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 383,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 385,
"src": "460:7:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 382,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "460:7:3",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "459:9:3"
},
"scope": 386,
"src": "411:58:3",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"scope": 387,
"src": "214:257:3",
"usedErrors": [],
"usedEvents": []
}
],
"src": "108:364:3"
},
"id": 3
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol": {
"ast": {
"absolutePath": "github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol",
"exportedSymbols": {
"Address": [
639
]
},
"id": 640,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 388,
"literals": [
"solidity",
"^",
"0.8",
".20"
],
"nodeType": "PragmaDirective",
"src": "101:24:4"
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "Address",
"contractDependencies": [],
"contractKind": "library",
"documentation": {
"id": 389,
"nodeType": "StructuredDocumentation",
"src": "127:67:4",
"text": " @dev Collection of functions related to the address type"
},
"fullyImplemented": true,
"id": 639,
"linearizedBaseContracts": [
639
],
"name": "Address",
"nameLocation": "203:7:4",
"nodeType": "ContractDefinition",
"nodes": [
{
"documentation": {
"id": 390,
"nodeType": "StructuredDocumentation",
"src": "217:94:4",
"text": " @dev The ETH balance of the account is not enough to perform the operation."
},
"errorSelector": "cd786059",
"id": 394,
"name": "AddressInsufficientBalance",
"nameLocation": "322:26:4",
"nodeType": "ErrorDefinition",
"parameters": {
"id": 393,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 392,
"mutability": "mutable",
"name": "account",
"nameLocation": "357:7:4",
"nodeType": "VariableDeclaration",
"scope": 394,
"src": "349:15:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 391,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "349:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "348:17:4"
},
"src": "316:50:4"
},
{
"documentation": {
"id": 395,
"nodeType": "StructuredDocumentation",
"src": "372:75:4",
"text": " @dev There's no code at `target` (it is not a contract)."
},
"errorSelector": "9996b315",
"id": 399,
"name": "AddressEmptyCode",
"nameLocation": "458:16:4",
"nodeType": "ErrorDefinition",
"parameters": {
"id": 398,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 397,
"mutability": "mutable",
"name": "target",
"nameLocation": "483:6:4",
"nodeType": "VariableDeclaration",
"scope": 399,
"src": "475:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 396,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "475:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "474:16:4"
},
"src": "452:39:4"
},
{
"documentation": {
"id": 400,
"nodeType": "StructuredDocumentation",
"src": "497:89:4",
"text": " @dev A call to an address target failed. The target may have reverted."
},
"errorSelector": "1425ea42",
"id": 402,
"name": "FailedInnerCall",
"nameLocation": "597:15:4",
"nodeType": "ErrorDefinition",
"parameters": {
"id": 401,
"nodeType": "ParameterList",
"parameters": [],
"src": "612:2:4"
},
"src": "591:24:4"
},
{
"body": {
"id": 442,
"nodeType": "Block",
"src": "1602:260:4",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 416,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"arguments": [
{
"id": 412,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967268,
"src": "1624:4:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Address_$639",
"typeString": "library Address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Address_$639",
"typeString": "library Address"
}
],
"id": 411,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1616:7:4",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 410,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1616:7:4",
"typeDescriptions": {}
}
},
"id": 413,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1616:13:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 414,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1630:7:4",
"memberName": "balance",
"nodeType": "MemberAccess",
"src": "1616:21:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"id": 415,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 407,
"src": "1640:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1616:30:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 425,
"nodeType": "IfStatement",
"src": "1612:109:4",
"trueBody": {
"id": 424,
"nodeType": "Block",
"src": "1648:73:4",
"statements": [
{
"errorCall": {
"arguments": [
{
"arguments": [
{
"id": 420,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967268,
"src": "1704:4:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Address_$639",
"typeString": "library Address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Address_$639",
"typeString": "library Address"
}
],
"id": 419,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1696:7:4",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 418,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1696:7:4",
"typeDescriptions": {}
}
},
"id": 421,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1696:13:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 417,
"name": "AddressInsufficientBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 394,
"src": "1669:26:4",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
"typeString": "function (address) pure"
}
},
"id": 422,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1669:41:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 423,
"nodeType": "RevertStatement",
"src": "1662:48:4"
}
]
}
},
{
"assignments": [
427,
null
],
"declarations": [
{
"constant": false,
"id": 427,
"mutability": "mutable",
"name": "success",
"nameLocation": "1737:7:4",
"nodeType": "VariableDeclaration",
"scope": 442,
"src": "1732:12:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 426,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1732:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
},
null
],
"id": 434,
"initialValue": {
"arguments": [
{
"hexValue": "",
"id": 432,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1780:2:4",
"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": 428,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 405,
"src": "1750:9:4",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"id": 429,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1760:4:4",
"memberName": "call",
"nodeType": "MemberAccess",
"src": "1750:14:4",
"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": 431,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"names": [
"value"
],
"nodeType": "FunctionCallOptions",
"options": [
{
"id": 430,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 407,
"src": "1772:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"src": "1750:29:4",
"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": 433,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1750:33:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "tuple(bool,bytes memory)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1731:52:4"
},
{
"condition": {
"id": 436,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "1797:8:4",
"subExpression": {
"id": 435,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 427,
"src": "1798:7:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 441,
"nodeType": "IfStatement",
"src": "1793:63:4",
"trueBody": {
"id": 440,
"nodeType": "Block",
"src": "1807:49:4",
"statements": [
{
"errorCall": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 437,
"name": "FailedInnerCall",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 402,
"src": "1828:15:4",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 438,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1828:17:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 439,
"nodeType": "RevertStatement",
"src": "1821:24:4"
}
]
}
}
]
},
"documentation": {
"id": 403,
"nodeType": "StructuredDocumentation",
"src": "621:905:4",
"text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."
},
"id": 443,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "sendValue",
"nameLocation": "1540:9:4",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 408,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 405,
"mutability": "mutable",
"name": "recipient",
"nameLocation": "1566:9:4",
"nodeType": "VariableDeclaration",
"scope": 443,
"src": "1550:25:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
"typeName": {
"id": 404,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1550:15:4",
"stateMutability": "payable",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 407,
"mutability": "mutable",
"name": "amount",
"nameLocation": "1585:6:4",
"nodeType": "VariableDeclaration",
"scope": 443,
"src": "1577:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 406,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1577:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "1549:43:4"
},
"returnParameters": {
"id": 409,
"nodeType": "ParameterList",
"parameters": [],
"src": "1602:0:4"
},
"scope": 639,
"src": "1531:331:4",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 459,
"nodeType": "Block",
"src": "2794:62:4",
"statements": [
{
"expression": {
"arguments": [
{
"id": 454,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 446,
"src": "2833:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 455,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 448,
"src": "2841:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"hexValue": "30",
"id": 456,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2847:1:4",
"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": 453,
"name": "functionCallWithValue",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 506,
"src": "2811:21:4",
"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": 457,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2811:38:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 452,
"id": 458,
"nodeType": "Return",
"src": "2804:45:4"
}
]
},
"documentation": {
"id": 444,
"nodeType": "StructuredDocumentation",
"src": "1868:832:4",
"text": " @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {FailedInnerCall} error.\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert."
},
"id": 460,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "functionCall",
"nameLocation": "2714:12:4",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 449,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 446,
"mutability": "mutable",
"name": "target",
"nameLocation": "2735:6:4",
"nodeType": "VariableDeclaration",
"scope": 460,
"src": "2727:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 445,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2727:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 448,
"mutability": "mutable",
"name": "data",
"nameLocation": "2756:4:4",
"nodeType": "VariableDeclaration",
"scope": 460,
"src": "2743:17:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 447,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2743:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "2726:35:4"
},
"returnParameters": {
"id": 452,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 451,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 460,
"src": "2780:12:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 450,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2780:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "2779:14:4"
},
"scope": 639,
"src": "2705:151:4",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 505,
"nodeType": "Block",
"src": "3293:279:4",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 478,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"arguments": [
{
"id": 474,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967268,
"src": "3315:4:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Address_$639",
"typeString": "library Address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Address_$639",
"typeString": "library Address"
}
],
"id": 473,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3307:7:4",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 472,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3307:7:4",
"typeDescriptions": {}
}
},
"id": 475,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3307:13:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 476,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3321:7:4",
"memberName": "balance",
"nodeType": "MemberAccess",
"src": "3307:21:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"id": 477,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 467,
"src": "3331:5:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3307:29:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 487,
"nodeType": "IfStatement",
"src": "3303:108:4",
"trueBody": {
"id": 486,
"nodeType": "Block",
"src": "3338:73:4",
"statements": [
{
"errorCall": {
"arguments": [
{
"arguments": [
{
"id": 482,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967268,
"src": "3394:4:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Address_$639",
"typeString": "library Address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Address_$639",
"typeString": "library Address"
}
],
"id": 481,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3386:7:4",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 480,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3386:7:4",
"typeDescriptions": {}
}
},
"id": 483,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3386:13:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 479,
"name": "AddressInsufficientBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 394,
"src": "3359:26:4",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
"typeString": "function (address) pure"
}
},
"id": 484,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3359:41:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 485,
"nodeType": "RevertStatement",
"src": "3352:48:4"
}
]
}
},
{
"assignments": [
489,
491
],
"declarations": [
{
"constant": false,
"id": 489,
"mutability": "mutable",
"name": "success",
"nameLocation": "3426:7:4",
"nodeType": "VariableDeclaration",
"scope": 505,
"src": "3421:12:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 488,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "3421:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 491,
"mutability": "mutable",
"name": "returndata",
"nameLocation": "3448:10:4",
"nodeType": "VariableDeclaration",
"scope": 505,
"src": "3435:23:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 490,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3435:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 498,
"initialValue": {
"arguments": [
{
"id": 496,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 465,
"src": "3488:4:4",
"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": 492,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 463,
"src": "3462:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 493,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3469:4:4",
"memberName": "call",
"nodeType": "MemberAccess",
"src": "3462:11:4",
"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": 495,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"names": [
"value"
],
"nodeType": "FunctionCallOptions",
"options": [
{
"id": 494,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 467,
"src": "3481:5:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"src": "3462:25:4",
"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": 497,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3462:31:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "tuple(bool,bytes memory)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3420:73:4"
},
{
"expression": {
"arguments": [
{
"id": 500,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 463,
"src": "3537:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 501,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 489,
"src": "3545:7:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"id": 502,
"name": "returndata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 491,
"src": "3554:10:4",
"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": 499,
"name": "verifyCallResultFromTarget",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 598,
"src": "3510:26:4",
"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": 503,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3510:55:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 471,
"id": 504,
"nodeType": "Return",
"src": "3503:62:4"
}
]
},
"documentation": {
"id": 461,
"nodeType": "StructuredDocumentation",
"src": "2862:313:4",
"text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`."
},
"id": 506,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "functionCallWithValue",
"nameLocation": "3189:21:4",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 468,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 463,
"mutability": "mutable",
"name": "target",
"nameLocation": "3219:6:4",
"nodeType": "VariableDeclaration",
"scope": 506,
"src": "3211:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 462,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3211:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 465,
"mutability": "mutable",
"name": "data",
"nameLocation": "3240:4:4",
"nodeType": "VariableDeclaration",
"scope": 506,
"src": "3227:17:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 464,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3227:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 467,
"mutability": "mutable",
"name": "value",
"nameLocation": "3254:5:4",
"nodeType": "VariableDeclaration",
"scope": 506,
"src": "3246:13:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 466,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3246:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "3210:50:4"
},
"returnParameters": {
"id": 471,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 470,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 506,
"src": "3279:12:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 469,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3279:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "3278:14:4"
},
"scope": 639,
"src": "3180:392:4",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 531,
"nodeType": "Block",
"src": "3811:154:4",
"statements": [
{
"assignments": [
517,
519
],
"declarations": [
{
"constant": false,
"id": 517,
"mutability": "mutable",
"name": "success",
"nameLocation": "3827:7:4",
"nodeType": "VariableDeclaration",
"scope": 531,
"src": "3822:12:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 516,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "3822:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 519,
"mutability": "mutable",
"name": "returndata",
"nameLocation": "3849:10:4",
"nodeType": "VariableDeclaration",
"scope": 531,
"src": "3836:23:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 518,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3836:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 524,
"initialValue": {
"arguments": [
{
"id": 522,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 511,
"src": "3881:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"id": 520,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 509,
"src": "3863:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 521,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3870:10:4",
"memberName": "staticcall",
"nodeType": "MemberAccess",
"src": "3863:17:4",
"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": 523,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3863:23:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "tuple(bool,bytes memory)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3821:65:4"
},
{
"expression": {
"arguments": [
{
"id": 526,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 509,
"src": "3930:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 527,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 517,
"src": "3938:7:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"id": 528,
"name": "returndata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 519,
"src": "3947:10:4",
"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": 525,
"name": "verifyCallResultFromTarget",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 598,
"src": "3903:26:4",
"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": 529,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3903:55:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 515,
"id": 530,
"nodeType": "Return",
"src": "3896:62:4"
}
]
},
"documentation": {
"id": 507,
"nodeType": "StructuredDocumentation",
"src": "3578:128:4",
"text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call."
},
"id": 532,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "functionStaticCall",
"nameLocation": "3720:18:4",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 512,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 509,
"mutability": "mutable",
"name": "target",
"nameLocation": "3747:6:4",
"nodeType": "VariableDeclaration",
"scope": 532,
"src": "3739:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 508,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3739:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 511,
"mutability": "mutable",
"name": "data",
"nameLocation": "3768:4:4",
"nodeType": "VariableDeclaration",
"scope": 532,
"src": "3755:17:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 510,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3755:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "3738:35:4"
},
"returnParameters": {
"id": 515,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 514,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 532,
"src": "3797:12:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 513,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3797:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "3796:14:4"
},
"scope": 639,
"src": "3711:254:4",
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 557,
"nodeType": "Block",
"src": "4203:156:4",
"statements": [
{
"assignments": [
543,
545
],
"declarations": [
{
"constant": false,
"id": 543,
"mutability": "mutable",
"name": "success",
"nameLocation": "4219:7:4",
"nodeType": "VariableDeclaration",
"scope": 557,
"src": "4214:12:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 542,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4214:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 545,
"mutability": "mutable",
"name": "returndata",
"nameLocation": "4241:10:4",
"nodeType": "VariableDeclaration",
"scope": 557,
"src": "4228:23:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 544,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4228:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 550,
"initialValue": {
"arguments": [
{
"id": 548,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 537,
"src": "4275:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"id": 546,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 535,
"src": "4255:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 547,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4262:12:4",
"memberName": "delegatecall",
"nodeType": "MemberAccess",
"src": "4255:19:4",
"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": 549,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4255:25:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "tuple(bool,bytes memory)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4213:67:4"
},
{
"expression": {
"arguments": [
{
"id": 552,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 535,
"src": "4324:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 553,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 543,
"src": "4332:7:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"id": 554,
"name": "returndata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 545,
"src": "4341:10:4",
"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": 551,
"name": "verifyCallResultFromTarget",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 598,
"src": "4297:26:4",
"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": 555,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4297:55:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 541,
"id": 556,
"nodeType": "Return",
"src": "4290:62:4"
}
]
},
"documentation": {
"id": 533,
"nodeType": "StructuredDocumentation",
"src": "3971:130:4",
"text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call."
},
"id": 558,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "functionDelegateCall",
"nameLocation": "4115:20:4",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 538,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 535,
"mutability": "mutable",
"name": "target",
"nameLocation": "4144:6:4",
"nodeType": "VariableDeclaration",
"scope": 558,
"src": "4136:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 534,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4136:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 537,
"mutability": "mutable",
"name": "data",
"nameLocation": "4165:4:4",
"nodeType": "VariableDeclaration",
"scope": 558,
"src": "4152:17:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 536,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4152:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "4135:35:4"
},
"returnParameters": {
"id": 541,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 540,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 558,
"src": "4189:12:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 539,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4189:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "4188:14:4"
},
"scope": 639,
"src": "4106:253:4",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 597,
"nodeType": "Block",
"src": "4783:424:4",
"statements": [
{
"condition": {
"id": 571,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "4797:8:4",
"subExpression": {
"id": 570,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 563,
"src": "4798:7:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 595,
"nodeType": "Block",
"src": "4857:344:4",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 586,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 580,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 577,
"name": "returndata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 565,
"src": "5045:10:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 578,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5056:6:4",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "5045:17:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 579,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5066:1:4",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5045:22:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 585,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"expression": {
"id": 581,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 561,
"src": "5071:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 582,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5078:4:4",
"memberName": "code",
"nodeType": "MemberAccess",
"src": "5071:11:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 583,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5083:6:4",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "5071:18:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 584,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5093:1:4",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5071:23:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "5045:49:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 592,
"nodeType": "IfStatement",
"src": "5041:119:4",
"trueBody": {
"id": 591,
"nodeType": "Block",
"src": "5096:64:4",
"statements": [
{
"errorCall": {
"arguments": [
{
"id": 588,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 561,
"src": "5138:6:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 587,
"name": "AddressEmptyCode",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 399,
"src": "5121:16:4",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
"typeString": "function (address) pure"
}
},
"id": 589,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5121:24:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 590,
"nodeType": "RevertStatement",
"src": "5114:31:4"
}
]
}
},
{
"expression": {
"id": 593,
"name": "returndata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 565,
"src": "5180:10:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 569,
"id": 594,
"nodeType": "Return",
"src": "5173:17:4"
}
]
},
"id": 596,
"nodeType": "IfStatement",
"src": "4793:408:4",
"trueBody": {
"id": 576,
"nodeType": "Block",
"src": "4807:44:4",
"statements": [
{
"expression": {
"arguments": [
{
"id": 573,
"name": "returndata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 565,
"src": "4829:10:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 572,
"name": "_revert",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 638,
"src": "4821:7:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (bytes memory) pure"
}
},
"id": 574,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4821:19:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 575,
"nodeType": "ExpressionStatement",
"src": "4821:19:4"
}
]
}
}
]
},
"documentation": {
"id": 559,
"nodeType": "StructuredDocumentation",
"src": "4365:255:4",
"text": " @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n unsuccessful call."
},
"id": 598,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "verifyCallResultFromTarget",
"nameLocation": "4634:26:4",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 566,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 561,
"mutability": "mutable",
"name": "target",
"nameLocation": "4678:6:4",
"nodeType": "VariableDeclaration",
"scope": 598,
"src": "4670:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 560,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4670:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 563,
"mutability": "mutable",
"name": "success",
"nameLocation": "4699:7:4",
"nodeType": "VariableDeclaration",
"scope": 598,
"src": "4694:12:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 562,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4694:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 565,
"mutability": "mutable",
"name": "returndata",
"nameLocation": "4729:10:4",
"nodeType": "VariableDeclaration",
"scope": 598,
"src": "4716:23:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 564,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4716:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "4660:85:4"
},
"returnParameters": {
"id": 569,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 568,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 598,
"src": "4769:12:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 567,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4769:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "4768:14:4"
},
"scope": 639,
"src": "4625:582:4",
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 619,
"nodeType": "Block",
"src": "5509:122:4",
"statements": [
{
"condition": {
"id": 609,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "5523:8:4",
"subExpression": {
"id": 608,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 601,
"src": "5524:7:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 617,
"nodeType": "Block",
"src": "5583:42:4",
"statements": [
{
"expression": {
"id": 615,
"name": "returndata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 603,
"src": "5604:10:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 607,
"id": 616,
"nodeType": "Return",
"src": "5597:17:4"
}
]
},
"id": 618,
"nodeType": "IfStatement",
"src": "5519:106:4",
"trueBody": {
"id": 614,
"nodeType": "Block",
"src": "5533:44:4",
"statements": [
{
"expression": {
"arguments": [
{
"id": 611,
"name": "returndata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 603,
"src": "5555:10:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 610,
"name": "_revert",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 638,
"src": "5547:7:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (bytes memory) pure"
}
},
"id": 612,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5547:19:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 613,
"nodeType": "ExpressionStatement",
"src": "5547:19:4"
}
]
}
}
]
},
"documentation": {
"id": 599,
"nodeType": "StructuredDocumentation",
"src": "5213:189:4",
"text": " @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {FailedInnerCall} error."
},
"id": 620,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "verifyCallResult",
"nameLocation": "5416:16:4",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 604,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 601,
"mutability": "mutable",
"name": "success",
"nameLocation": "5438:7:4",
"nodeType": "VariableDeclaration",
"scope": 620,
"src": "5433:12:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 600,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "5433:4:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 603,
"mutability": "mutable",
"name": "returndata",
"nameLocation": "5460:10:4",
"nodeType": "VariableDeclaration",
"scope": 620,
"src": "5447:23:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 602,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5447:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "5432:39:4"
},
"returnParameters": {
"id": 607,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 606,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 620,
"src": "5495:12:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 605,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5495:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "5494:14:4"
},
"scope": 639,
"src": "5407:224:4",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 637,
"nodeType": "Block",
"src": "5798:461:4",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 629,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 626,
"name": "returndata",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 623,
"src": "5874:10:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 627,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5885:6:4",
"memberName": "length",
"nodeType": "MemberAccess",
"src": "5874:17:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 628,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5894:1:4",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5874:21:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 635,
"nodeType": "Block",
"src": "6204:49:4",
"statements": [
{
"errorCall": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 632,
"name": "FailedInnerCall",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 402,
"src": "6225:15:4",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 633,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6225:17:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 634,
"nodeType": "RevertStatement",
"src": "6218:24:4"
}
]
},
"id": 636,
"nodeType": "IfStatement",
"src": "5870:383:4",
"trueBody": {
"id": 631,
"nodeType": "Block",
"src": "5897:301:4",
"statements": [
{
"AST": {
"nativeSrc": "6055:133:4",
"nodeType": "YulBlock",
"src": "6055:133:4",
"statements": [
{
"nativeSrc": "6073:40:4",
"nodeType": "YulVariableDeclaration",
"src": "6073:40:4",
"value": {
"arguments": [
{
"name": "returndata",
"nativeSrc": "6102:10:4",
"nodeType": "YulIdentifier",
"src": "6102:10:4"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "6096:5:4",
"nodeType": "YulIdentifier",
"src": "6096:5:4"
},
"nativeSrc": "6096:17:4",
"nodeType": "YulFunctionCall",
"src": "6096:17:4"
},
"variables": [
{
"name": "returndata_size",
"nativeSrc": "6077:15:4",
"nodeType": "YulTypedName",
"src": "6077:15:4",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "6141:2:4",
"nodeType": "YulLiteral",
"src": "6141:2:4",
"type": "",
"value": "32"
},
{
"name": "returndata",
"nativeSrc": "6145:10:4",
"nodeType": "YulIdentifier",
"src": "6145:10:4"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6137:3:4",
"nodeType": "YulIdentifier",
"src": "6137:3:4"
},
"nativeSrc": "6137:19:4",
"nodeType": "YulFunctionCall",
"src": "6137:19:4"
},
{
"name": "returndata_size",
"nativeSrc": "6158:15:4",
"nodeType": "YulIdentifier",
"src": "6158:15:4"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "6130:6:4",
"nodeType": "YulIdentifier",
"src": "6130:6:4"
},
"nativeSrc": "6130:44:4",
"nodeType": "YulFunctionCall",
"src": "6130:44:4"
},
"nativeSrc": "6130:44:4",
"nodeType": "YulExpressionStatement",
"src": "6130:44:4"
}
]
},
"documentation": "@solidity memory-safe-assembly",
"evmVersion": "shanghai",
"externalReferences": [
{
"declaration": 623,
"isOffset": false,
"isSlot": false,
"src": "6102:10:4",
"valueSize": 1
},
{
"declaration": 623,
"isOffset": false,
"isSlot": false,
"src": "6145:10:4",
"valueSize": 1
}
],
"id": 630,
"nodeType": "InlineAssembly",
"src": "6046:142:4"
}
]
}
}
]
},
"documentation": {
"id": 621,
"nodeType": "StructuredDocumentation",
"src": "5637:101:4",
"text": " @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}."
},
"id": 638,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_revert",
"nameLocation": "5752:7:4",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 624,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 623,
"mutability": "mutable",
"name": "returndata",
"nameLocation": "5773:10:4",
"nodeType": "VariableDeclaration",
"scope": 638,
"src": "5760:23:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 622,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5760:5:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "5759:25:4"
},
"returnParameters": {
"id": 625,
"nodeType": "ParameterList",
"parameters": [],
"src": "5798:0:4"
},
"scope": 639,
"src": "5743:516:4",
"stateMutability": "pure",
"virtual": false,
"visibility": "private"
}
],
"scope": 640,
"src": "195:6066:4",
"usedErrors": [
394,
399,
402
],
"usedEvents": []
}
],
"src": "101:6161:4"
},
"id": 4
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol": {
"ast": {
"absolutePath": "github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol",
"exportedSymbols": {
"StorageSlot": [
749
]
},
"id": 750,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 641,
"literals": [
"solidity",
"^",
"0.8",
".20"
],
"nodeType": "PragmaDirective",
"src": "193:24:5"
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "StorageSlot",
"contractDependencies": [],
"contractKind": "library",
"documentation": {
"id": 642,
"nodeType": "StructuredDocumentation",
"src": "219:1025:5",
"text": " @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(newImplementation.code.length > 0);\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```"
},
"fullyImplemented": true,
"id": 749,
"linearizedBaseContracts": [
749
],
"name": "StorageSlot",
"nameLocation": "1253:11:5",
"nodeType": "ContractDefinition",
"nodes": [
{
"canonicalName": "StorageSlot.AddressSlot",
"id": 645,
"members": [
{
"constant": false,
"id": 644,
"mutability": "mutable",
"name": "value",
"nameLocation": "1308:5:5",
"nodeType": "VariableDeclaration",
"scope": 645,
"src": "1300:13:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 643,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1300:7:5",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"name": "AddressSlot",
"nameLocation": "1278:11:5",
"nodeType": "StructDefinition",
"scope": 749,
"src": "1271:49:5",
"visibility": "public"
},
{
"canonicalName": "StorageSlot.BooleanSlot",
"id": 648,
"members": [
{
"constant": false,
"id": 647,
"mutability": "mutable",
"name": "value",
"nameLocation": "1360:5:5",
"nodeType": "VariableDeclaration",
"scope": 648,
"src": "1355:10:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 646,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1355:4:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"name": "BooleanSlot",
"nameLocation": "1333:11:5",
"nodeType": "StructDefinition",
"scope": 749,
"src": "1326:46:5",
"visibility": "public"
},
{
"canonicalName": "StorageSlot.Bytes32Slot",
"id": 651,
"members": [
{
"constant": false,
"id": 650,
"mutability": "mutable",
"name": "value",
"nameLocation": "1415:5:5",
"nodeType": "VariableDeclaration",
"scope": 651,
"src": "1407:13:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 649,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1407:7:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"name": "Bytes32Slot",
"nameLocation": "1385:11:5",
"nodeType": "StructDefinition",
"scope": 749,
"src": "1378:49:5",
"visibility": "public"
},
{
"canonicalName": "StorageSlot.Uint256Slot",
"id": 654,
"members": [
{
"constant": false,
"id": 653,
"mutability": "mutable",
"name": "value",
"nameLocation": "1470:5:5",
"nodeType": "VariableDeclaration",
"scope": 654,
"src": "1462:13:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 652,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1462:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"name": "Uint256Slot",
"nameLocation": "1440:11:5",
"nodeType": "StructDefinition",
"scope": 749,
"src": "1433:49:5",
"visibility": "public"
},
{
"canonicalName": "StorageSlot.StringSlot",
"id": 657,
"members": [
{
"constant": false,
"id": 656,
"mutability": "mutable",
"name": "value",
"nameLocation": "1523:5:5",
"nodeType": "VariableDeclaration",
"scope": 657,
"src": "1516:12:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
},
"typeName": {
"id": 655,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1516:6:5",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"name": "StringSlot",
"nameLocation": "1495:10:5",
"nodeType": "StructDefinition",
"scope": 749,
"src": "1488:47:5",
"visibility": "public"
},
{
"canonicalName": "StorageSlot.BytesSlot",
"id": 660,
"members": [
{
"constant": false,
"id": 659,
"mutability": "mutable",
"name": "value",
"nameLocation": "1574:5:5",
"nodeType": "VariableDeclaration",
"scope": 660,
"src": "1568:11:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 658,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1568:5:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"name": "BytesSlot",
"nameLocation": "1548:9:5",
"nodeType": "StructDefinition",
"scope": 749,
"src": "1541:45:5",
"visibility": "public"
},
{
"body": {
"id": 670,
"nodeType": "Block",
"src": "1768:106:5",
"statements": [
{
"AST": {
"nativeSrc": "1830:38:5",
"nodeType": "YulBlock",
"src": "1830:38:5",
"statements": [
{
"nativeSrc": "1844:14:5",
"nodeType": "YulAssignment",
"src": "1844:14:5",
"value": {
"name": "slot",
"nativeSrc": "1854:4:5",
"nodeType": "YulIdentifier",
"src": "1854:4:5"
},
"variableNames": [
{
"name": "r.slot",
"nativeSrc": "1844:6:5",
"nodeType": "YulIdentifier",
"src": "1844:6:5"
}
]
}
]
},
"documentation": "@solidity memory-safe-assembly",
"evmVersion": "shanghai",
"externalReferences": [
{
"declaration": 667,
"isOffset": false,
"isSlot": true,
"src": "1844:6:5",
"suffix": "slot",
"valueSize": 1
},
{
"declaration": 663,
"isOffset": false,
"isSlot": false,
"src": "1854:4:5",
"valueSize": 1
}
],
"id": 669,
"nodeType": "InlineAssembly",
"src": "1821:47:5"
}
]
},
"documentation": {
"id": 661,
"nodeType": "StructuredDocumentation",
"src": "1592:87:5",
"text": " @dev Returns an `AddressSlot` with member `value` located at `slot`."
},
"id": 671,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getAddressSlot",
"nameLocation": "1693:14:5",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 664,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 663,
"mutability": "mutable",
"name": "slot",
"nameLocation": "1716:4:5",
"nodeType": "VariableDeclaration",
"scope": 671,
"src": "1708:12:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 662,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1708:7:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"src": "1707:14:5"
},
"returnParameters": {
"id": 668,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 667,
"mutability": "mutable",
"name": "r",
"nameLocation": "1765:1:5",
"nodeType": "VariableDeclaration",
"scope": 671,
"src": "1745:21:5",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_AddressSlot_$645_storage_ptr",
"typeString": "struct StorageSlot.AddressSlot"
},
"typeName": {
"id": 666,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 665,
"name": "AddressSlot",
"nameLocations": [
"1745:11:5"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 645,
"src": "1745:11:5"
},
"referencedDeclaration": 645,
"src": "1745:11:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_AddressSlot_$645_storage_ptr",
"typeString": "struct StorageSlot.AddressSlot"
}
},
"visibility": "internal"
}
],
"src": "1744:23:5"
},
"scope": 749,
"src": "1684:190:5",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 681,
"nodeType": "Block",
"src": "2056:106:5",
"statements": [
{
"AST": {
"nativeSrc": "2118:38:5",
"nodeType": "YulBlock",
"src": "2118:38:5",
"statements": [
{
"nativeSrc": "2132:14:5",
"nodeType": "YulAssignment",
"src": "2132:14:5",
"value": {
"name": "slot",
"nativeSrc": "2142:4:5",
"nodeType": "YulIdentifier",
"src": "2142:4:5"
},
"variableNames": [
{
"name": "r.slot",
"nativeSrc": "2132:6:5",
"nodeType": "YulIdentifier",
"src": "2132:6:5"
}
]
}
]
},
"documentation": "@solidity memory-safe-assembly",
"evmVersion": "shanghai",
"externalReferences": [
{
"declaration": 678,
"isOffset": false,
"isSlot": true,
"src": "2132:6:5",
"suffix": "slot",
"valueSize": 1
},
{
"declaration": 674,
"isOffset": false,
"isSlot": false,
"src": "2142:4:5",
"valueSize": 1
}
],
"id": 680,
"nodeType": "InlineAssembly",
"src": "2109:47:5"
}
]
},
"documentation": {
"id": 672,
"nodeType": "StructuredDocumentation",
"src": "1880:87:5",
"text": " @dev Returns an `BooleanSlot` with member `value` located at `slot`."
},
"id": 682,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getBooleanSlot",
"nameLocation": "1981:14:5",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 675,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 674,
"mutability": "mutable",
"name": "slot",
"nameLocation": "2004:4:5",
"nodeType": "VariableDeclaration",
"scope": 682,
"src": "1996:12:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 673,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1996:7:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"src": "1995:14:5"
},
"returnParameters": {
"id": 679,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 678,
"mutability": "mutable",
"name": "r",
"nameLocation": "2053:1:5",
"nodeType": "VariableDeclaration",
"scope": 682,
"src": "2033:21:5",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_BooleanSlot_$648_storage_ptr",
"typeString": "struct StorageSlot.BooleanSlot"
},
"typeName": {
"id": 677,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 676,
"name": "BooleanSlot",
"nameLocations": [
"2033:11:5"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 648,
"src": "2033:11:5"
},
"referencedDeclaration": 648,
"src": "2033:11:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_BooleanSlot_$648_storage_ptr",
"typeString": "struct StorageSlot.BooleanSlot"
}
},
"visibility": "internal"
}
],
"src": "2032:23:5"
},
"scope": 749,
"src": "1972:190:5",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 692,
"nodeType": "Block",
"src": "2344:106:5",
"statements": [
{
"AST": {
"nativeSrc": "2406:38:5",
"nodeType": "YulBlock",
"src": "2406:38:5",
"statements": [
{
"nativeSrc": "2420:14:5",
"nodeType": "YulAssignment",
"src": "2420:14:5",
"value": {
"name": "slot",
"nativeSrc": "2430:4:5",
"nodeType": "YulIdentifier",
"src": "2430:4:5"
},
"variableNames": [
{
"name": "r.slot",
"nativeSrc": "2420:6:5",
"nodeType": "YulIdentifier",
"src": "2420:6:5"
}
]
}
]
},
"documentation": "@solidity memory-safe-assembly",
"evmVersion": "shanghai",
"externalReferences": [
{
"declaration": 689,
"isOffset": false,
"isSlot": true,
"src": "2420:6:5",
"suffix": "slot",
"valueSize": 1
},
{
"declaration": 685,
"isOffset": false,
"isSlot": false,
"src": "2430:4:5",
"valueSize": 1
}
],
"id": 691,
"nodeType": "InlineAssembly",
"src": "2397:47:5"
}
]
},
"documentation": {
"id": 683,
"nodeType": "StructuredDocumentation",
"src": "2168:87:5",
"text": " @dev Returns an `Bytes32Slot` with member `value` located at `slot`."
},
"id": 693,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getBytes32Slot",
"nameLocation": "2269:14:5",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 686,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 685,
"mutability": "mutable",
"name": "slot",
"nameLocation": "2292:4:5",
"nodeType": "VariableDeclaration",
"scope": 693,
"src": "2284:12:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 684,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2284:7:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"src": "2283:14:5"
},
"returnParameters": {
"id": 690,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 689,
"mutability": "mutable",
"name": "r",
"nameLocation": "2341:1:5",
"nodeType": "VariableDeclaration",
"scope": 693,
"src": "2321:21:5",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Bytes32Slot_$651_storage_ptr",
"typeString": "struct StorageSlot.Bytes32Slot"
},
"typeName": {
"id": 688,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 687,
"name": "Bytes32Slot",
"nameLocations": [
"2321:11:5"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 651,
"src": "2321:11:5"
},
"referencedDeclaration": 651,
"src": "2321:11:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Bytes32Slot_$651_storage_ptr",
"typeString": "struct StorageSlot.Bytes32Slot"
}
},
"visibility": "internal"
}
],
"src": "2320:23:5"
},
"scope": 749,
"src": "2260:190:5",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 703,
"nodeType": "Block",
"src": "2632:106:5",
"statements": [
{
"AST": {
"nativeSrc": "2694:38:5",
"nodeType": "YulBlock",
"src": "2694:38:5",
"statements": [
{
"nativeSrc": "2708:14:5",
"nodeType": "YulAssignment",
"src": "2708:14:5",
"value": {
"name": "slot",
"nativeSrc": "2718:4:5",
"nodeType": "YulIdentifier",
"src": "2718:4:5"
},
"variableNames": [
{
"name": "r.slot",
"nativeSrc": "2708:6:5",
"nodeType": "YulIdentifier",
"src": "2708:6:5"
}
]
}
]
},
"documentation": "@solidity memory-safe-assembly",
"evmVersion": "shanghai",
"externalReferences": [
{
"declaration": 700,
"isOffset": false,
"isSlot": true,
"src": "2708:6:5",
"suffix": "slot",
"valueSize": 1
},
{
"declaration": 696,
"isOffset": false,
"isSlot": false,
"src": "2718:4:5",
"valueSize": 1
}
],
"id": 702,
"nodeType": "InlineAssembly",
"src": "2685:47:5"
}
]
},
"documentation": {
"id": 694,
"nodeType": "StructuredDocumentation",
"src": "2456:87:5",
"text": " @dev Returns an `Uint256Slot` with member `value` located at `slot`."
},
"id": 704,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getUint256Slot",
"nameLocation": "2557:14:5",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 697,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 696,
"mutability": "mutable",
"name": "slot",
"nameLocation": "2580:4:5",
"nodeType": "VariableDeclaration",
"scope": 704,
"src": "2572:12:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 695,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2572:7:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"src": "2571:14:5"
},
"returnParameters": {
"id": 701,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 700,
"mutability": "mutable",
"name": "r",
"nameLocation": "2629:1:5",
"nodeType": "VariableDeclaration",
"scope": 704,
"src": "2609:21:5",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Uint256Slot_$654_storage_ptr",
"typeString": "struct StorageSlot.Uint256Slot"
},
"typeName": {
"id": 699,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 698,
"name": "Uint256Slot",
"nameLocations": [
"2609:11:5"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 654,
"src": "2609:11:5"
},
"referencedDeclaration": 654,
"src": "2609:11:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Uint256Slot_$654_storage_ptr",
"typeString": "struct StorageSlot.Uint256Slot"
}
},
"visibility": "internal"
}
],
"src": "2608:23:5"
},
"scope": 749,
"src": "2548:190:5",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 714,
"nodeType": "Block",
"src": "2917:106:5",
"statements": [
{
"AST": {
"nativeSrc": "2979:38:5",
"nodeType": "YulBlock",
"src": "2979:38:5",
"statements": [
{
"nativeSrc": "2993:14:5",
"nodeType": "YulAssignment",
"src": "2993:14:5",
"value": {
"name": "slot",
"nativeSrc": "3003:4:5",
"nodeType": "YulIdentifier",
"src": "3003:4:5"
},
"variableNames": [
{
"name": "r.slot",
"nativeSrc": "2993:6:5",
"nodeType": "YulIdentifier",
"src": "2993:6:5"
}
]
}
]
},
"documentation": "@solidity memory-safe-assembly",
"evmVersion": "shanghai",
"externalReferences": [
{
"declaration": 711,
"isOffset": false,
"isSlot": true,
"src": "2993:6:5",
"suffix": "slot",
"valueSize": 1
},
{
"declaration": 707,
"isOffset": false,
"isSlot": false,
"src": "3003:4:5",
"valueSize": 1
}
],
"id": 713,
"nodeType": "InlineAssembly",
"src": "2970:47:5"
}
]
},
"documentation": {
"id": 705,
"nodeType": "StructuredDocumentation",
"src": "2744:86:5",
"text": " @dev Returns an `StringSlot` with member `value` located at `slot`."
},
"id": 715,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getStringSlot",
"nameLocation": "2844:13:5",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 708,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 707,
"mutability": "mutable",
"name": "slot",
"nameLocation": "2866:4:5",
"nodeType": "VariableDeclaration",
"scope": 715,
"src": "2858:12:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 706,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2858:7:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"src": "2857:14:5"
},
"returnParameters": {
"id": 712,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 711,
"mutability": "mutable",
"name": "r",
"nameLocation": "2914:1:5",
"nodeType": "VariableDeclaration",
"scope": 715,
"src": "2895:20:5",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_StringSlot_$657_storage_ptr",
"typeString": "struct StorageSlot.StringSlot"
},
"typeName": {
"id": 710,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 709,
"name": "StringSlot",
"nameLocations": [
"2895:10:5"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 657,
"src": "2895:10:5"
},
"referencedDeclaration": 657,
"src": "2895:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_StringSlot_$657_storage_ptr",
"typeString": "struct StorageSlot.StringSlot"
}
},
"visibility": "internal"
}
],
"src": "2894:22:5"
},
"scope": 749,
"src": "2835:188:5",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 725,
"nodeType": "Block",
"src": "3225:112:5",
"statements": [
{
"AST": {
"nativeSrc": "3287:44:5",
"nodeType": "YulBlock",
"src": "3287:44:5",
"statements": [
{
"nativeSrc": "3301:20:5",
"nodeType": "YulAssignment",
"src": "3301:20:5",
"value": {
"name": "store.slot",
"nativeSrc": "3311:10:5",
"nodeType": "YulIdentifier",
"src": "3311:10:5"
},
"variableNames": [
{
"name": "r.slot",
"nativeSrc": "3301:6:5",
"nodeType": "YulIdentifier",
"src": "3301:6:5"
}
]
}
]
},
"documentation": "@solidity memory-safe-assembly",
"evmVersion": "shanghai",
"externalReferences": [
{
"declaration": 722,
"isOffset": false,
"isSlot": true,
"src": "3301:6:5",
"suffix": "slot",
"valueSize": 1
},
{
"declaration": 718,
"isOffset": false,
"isSlot": true,
"src": "3311:10:5",
"suffix": "slot",
"valueSize": 1
}
],
"id": 724,
"nodeType": "InlineAssembly",
"src": "3278:53:5"
}
]
},
"documentation": {
"id": 716,
"nodeType": "StructuredDocumentation",
"src": "3029:101:5",
"text": " @dev Returns an `StringSlot` representation of the string storage pointer `store`."
},
"id": 726,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getStringSlot",
"nameLocation": "3144:13:5",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 719,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 718,
"mutability": "mutable",
"name": "store",
"nameLocation": "3173:5:5",
"nodeType": "VariableDeclaration",
"scope": 726,
"src": "3158:20:5",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
},
"typeName": {
"id": 717,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3158:6:5",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "3157:22:5"
},
"returnParameters": {
"id": 723,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 722,
"mutability": "mutable",
"name": "r",
"nameLocation": "3222:1:5",
"nodeType": "VariableDeclaration",
"scope": 726,
"src": "3203:20:5",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_StringSlot_$657_storage_ptr",
"typeString": "struct StorageSlot.StringSlot"
},
"typeName": {
"id": 721,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 720,
"name": "StringSlot",
"nameLocations": [
"3203:10:5"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 657,
"src": "3203:10:5"
},
"referencedDeclaration": 657,
"src": "3203:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_StringSlot_$657_storage_ptr",
"typeString": "struct StorageSlot.StringSlot"
}
},
"visibility": "internal"
}
],
"src": "3202:22:5"
},
"scope": 749,
"src": "3135:202:5",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 736,
"nodeType": "Block",
"src": "3513:106:5",
"statements": [
{
"AST": {
"nativeSrc": "3575:38:5",
"nodeType": "YulBlock",
"src": "3575:38:5",
"statements": [
{
"nativeSrc": "3589:14:5",
"nodeType": "YulAssignment",
"src": "3589:14:5",
"value": {
"name": "slot",
"nativeSrc": "3599:4:5",
"nodeType": "YulIdentifier",
"src": "3599:4:5"
},
"variableNames": [
{
"name": "r.slot",
"nativeSrc": "3589:6:5",
"nodeType": "YulIdentifier",
"src": "3589:6:5"
}
]
}
]
},
"documentation": "@solidity memory-safe-assembly",
"evmVersion": "shanghai",
"externalReferences": [
{
"declaration": 733,
"isOffset": false,
"isSlot": true,
"src": "3589:6:5",
"suffix": "slot",
"valueSize": 1
},
{
"declaration": 729,
"isOffset": false,
"isSlot": false,
"src": "3599:4:5",
"valueSize": 1
}
],
"id": 735,
"nodeType": "InlineAssembly",
"src": "3566:47:5"
}
]
},
"documentation": {
"id": 727,
"nodeType": "StructuredDocumentation",
"src": "3343:85:5",
"text": " @dev Returns an `BytesSlot` with member `value` located at `slot`."
},
"id": 737,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getBytesSlot",
"nameLocation": "3442:12:5",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 730,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 729,
"mutability": "mutable",
"name": "slot",
"nameLocation": "3463:4:5",
"nodeType": "VariableDeclaration",
"scope": 737,
"src": "3455:12:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 728,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "3455:7:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"src": "3454:14:5"
},
"returnParameters": {
"id": 734,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 733,
"mutability": "mutable",
"name": "r",
"nameLocation": "3510:1:5",
"nodeType": "VariableDeclaration",
"scope": 737,
"src": "3492:19:5",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_BytesSlot_$660_storage_ptr",
"typeString": "struct StorageSlot.BytesSlot"
},
"typeName": {
"id": 732,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 731,
"name": "BytesSlot",
"nameLocations": [
"3492:9:5"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 660,
"src": "3492:9:5"
},
"referencedDeclaration": 660,
"src": "3492:9:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_BytesSlot_$660_storage_ptr",
"typeString": "struct StorageSlot.BytesSlot"
}
},
"visibility": "internal"
}
],
"src": "3491:21:5"
},
"scope": 749,
"src": "3433:186:5",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 747,
"nodeType": "Block",
"src": "3816:112:5",
"statements": [
{
"AST": {
"nativeSrc": "3878:44:5",
"nodeType": "YulBlock",
"src": "3878:44:5",
"statements": [
{
"nativeSrc": "3892:20:5",
"nodeType": "YulAssignment",
"src": "3892:20:5",
"value": {
"name": "store.slot",
"nativeSrc": "3902:10:5",
"nodeType": "YulIdentifier",
"src": "3902:10:5"
},
"variableNames": [
{
"name": "r.slot",
"nativeSrc": "3892:6:5",
"nodeType": "YulIdentifier",
"src": "3892:6:5"
}
]
}
]
},
"documentation": "@solidity memory-safe-assembly",
"evmVersion": "shanghai",
"externalReferences": [
{
"declaration": 744,
"isOffset": false,
"isSlot": true,
"src": "3892:6:5",
"suffix": "slot",
"valueSize": 1
},
{
"declaration": 740,
"isOffset": false,
"isSlot": true,
"src": "3902:10:5",
"suffix": "slot",
"valueSize": 1
}
],
"id": 746,
"nodeType": "InlineAssembly",
"src": "3869:53:5"
}
]
},
"documentation": {
"id": 738,
"nodeType": "StructuredDocumentation",
"src": "3625:99:5",
"text": " @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."
},
"id": 748,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getBytesSlot",
"nameLocation": "3738:12:5",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 741,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 740,
"mutability": "mutable",
"name": "store",
"nameLocation": "3765:5:5",
"nodeType": "VariableDeclaration",
"scope": 748,
"src": "3751:19:5",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 739,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3751:5:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "3750:21:5"
},
"returnParameters": {
"id": 745,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 744,
"mutability": "mutable",
"name": "r",
"nameLocation": "3813:1:5",
"nodeType": "VariableDeclaration",
"scope": 748,
"src": "3795:19:5",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_BytesSlot_$660_storage_ptr",
"typeString": "struct StorageSlot.BytesSlot"
},
"typeName": {
"id": 743,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 742,
"name": "BytesSlot",
"nameLocations": [
"3795:9:5"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 660,
"src": "3795:9:5"
},
"referencedDeclaration": 660,
"src": "3795:9:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_BytesSlot_$660_storage_ptr",
"typeString": "struct StorageSlot.BytesSlot"
}
},
"visibility": "internal"
}
],
"src": "3794:21:5"
},
"scope": 749,
"src": "3729:199:5",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
}
],
"scope": 750,
"src": "1245:2685:5",
"usedErrors": [],
"usedEvents": []
}
],
"src": "193:3738:5"
},
"id": 5
}
}
}
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_24": {
"entryPoint": null,
"id": 24,
"parameterSlots": 2,
"returnSlots": 0
},
"@_checkNonPayable_339": {
"entryPoint": 533,
"id": 339,
"parameterSlots": 0,
"returnSlots": 0
},
"@_revert_638": {
"entryPoint": 749,
"id": 638,
"parameterSlots": 1,
"returnSlots": 0
},
"@_setImplementation_125": {
"entryPoint": 192,
"id": 125,
"parameterSlots": 1,
"returnSlots": 0
},
"@functionDelegateCall_558": {
"entryPoint": 399,
"id": 558,
"parameterSlots": 2,
"returnSlots": 1
},
"@getAddressSlot_671": {
"entryPoint": 593,
"id": 671,
"parameterSlots": 1,
"returnSlots": 1
},
"@upgradeToAndCall_159": {
"entryPoint": 60,
"id": 159,
"parameterSlots": 2,
"returnSlots": 0
},
"@verifyCallResultFromTarget_598": {
"entryPoint": 602,
"id": 598,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_available_length_t_bytes_memory_ptr_fromMemory": {
"entryPoint": 1156,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_t_address_fromMemory": {
"entryPoint": 904,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes_memory_ptr_fromMemory": {
"entryPoint": 1221,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory": {
"entryPoint": 1266,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 1356,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 1416,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 1464,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 1371,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_memory": {
"entryPoint": 1042,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": 817,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_allocation_size_t_bytes_memory_ptr": {
"entryPoint": 1068,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_bytes_memory_ptr": {
"entryPoint": 1396,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 1406,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 865,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 834,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_memory_to_memory_with_cleanup": {
"entryPoint": 1116,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"finalize_allocation": {
"entryPoint": 993,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 948,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": {
"entryPoint": 924,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae": {
"entryPoint": 928,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": 830,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 826,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 932,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"validator_revert_t_address": {
"entryPoint": 882,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nativeSrc": "0:5141:6",
"nodeType": "YulBlock",
"src": "0:5141:6",
"statements": [
{
"body": {
"nativeSrc": "47:35:6",
"nodeType": "YulBlock",
"src": "47:35:6",
"statements": [
{
"nativeSrc": "57:19:6",
"nodeType": "YulAssignment",
"src": "57:19:6",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "73:2:6",
"nodeType": "YulLiteral",
"src": "73:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "67:5:6",
"nodeType": "YulIdentifier",
"src": "67:5:6"
},
"nativeSrc": "67:9:6",
"nodeType": "YulFunctionCall",
"src": "67:9:6"
},
"variableNames": [
{
"name": "memPtr",
"nativeSrc": "57:6:6",
"nodeType": "YulIdentifier",
"src": "57:6:6"
}
]
}
]
},
"name": "allocate_unbounded",
"nativeSrc": "7:75:6",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nativeSrc": "40:6:6",
"nodeType": "YulTypedName",
"src": "40:6:6",
"type": ""
}
],
"src": "7:75:6"
},
{
"body": {
"nativeSrc": "177:28:6",
"nodeType": "YulBlock",
"src": "177:28:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "194:1:6",
"nodeType": "YulLiteral",
"src": "194:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "197:1:6",
"nodeType": "YulLiteral",
"src": "197:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "187:6:6",
"nodeType": "YulIdentifier",
"src": "187:6:6"
},
"nativeSrc": "187:12:6",
"nodeType": "YulFunctionCall",
"src": "187:12:6"
},
"nativeSrc": "187:12:6",
"nodeType": "YulExpressionStatement",
"src": "187:12:6"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "88:117:6",
"nodeType": "YulFunctionDefinition",
"src": "88:117:6"
},
{
"body": {
"nativeSrc": "300:28:6",
"nodeType": "YulBlock",
"src": "300:28:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "317:1:6",
"nodeType": "YulLiteral",
"src": "317:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "320:1:6",
"nodeType": "YulLiteral",
"src": "320:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "310:6:6",
"nodeType": "YulIdentifier",
"src": "310:6:6"
},
"nativeSrc": "310:12:6",
"nodeType": "YulFunctionCall",
"src": "310:12:6"
},
"nativeSrc": "310:12:6",
"nodeType": "YulExpressionStatement",
"src": "310:12:6"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nativeSrc": "211:117:6",
"nodeType": "YulFunctionDefinition",
"src": "211:117:6"
},
{
"body": {
"nativeSrc": "379:81:6",
"nodeType": "YulBlock",
"src": "379:81:6",
"statements": [
{
"nativeSrc": "389:65:6",
"nodeType": "YulAssignment",
"src": "389:65:6",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "404:5:6",
"nodeType": "YulIdentifier",
"src": "404:5:6"
},
{
"kind": "number",
"nativeSrc": "411:42:6",
"nodeType": "YulLiteral",
"src": "411:42:6",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nativeSrc": "400:3:6",
"nodeType": "YulIdentifier",
"src": "400:3:6"
},
"nativeSrc": "400:54:6",
"nodeType": "YulFunctionCall",
"src": "400:54:6"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "389:7:6",
"nodeType": "YulIdentifier",
"src": "389:7:6"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nativeSrc": "334:126:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "361:5:6",
"nodeType": "YulTypedName",
"src": "361:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "371:7:6",
"nodeType": "YulTypedName",
"src": "371:7:6",
"type": ""
}
],
"src": "334:126:6"
},
{
"body": {
"nativeSrc": "511:51:6",
"nodeType": "YulBlock",
"src": "511:51:6",
"statements": [
{
"nativeSrc": "521:35:6",
"nodeType": "YulAssignment",
"src": "521:35:6",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "550:5:6",
"nodeType": "YulIdentifier",
"src": "550:5:6"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nativeSrc": "532:17:6",
"nodeType": "YulIdentifier",
"src": "532:17:6"
},
"nativeSrc": "532:24:6",
"nodeType": "YulFunctionCall",
"src": "532:24:6"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "521:7:6",
"nodeType": "YulIdentifier",
"src": "521:7:6"
}
]
}
]
},
"name": "cleanup_t_address",
"nativeSrc": "466:96:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "493:5:6",
"nodeType": "YulTypedName",
"src": "493:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "503:7:6",
"nodeType": "YulTypedName",
"src": "503:7:6",
"type": ""
}
],
"src": "466:96:6"
},
{
"body": {
"nativeSrc": "611:79:6",
"nodeType": "YulBlock",
"src": "611:79:6",
"statements": [
{
"body": {
"nativeSrc": "668:16:6",
"nodeType": "YulBlock",
"src": "668:16:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "677:1:6",
"nodeType": "YulLiteral",
"src": "677:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "680:1:6",
"nodeType": "YulLiteral",
"src": "680:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "670:6:6",
"nodeType": "YulIdentifier",
"src": "670:6:6"
},
"nativeSrc": "670:12:6",
"nodeType": "YulFunctionCall",
"src": "670:12:6"
},
"nativeSrc": "670:12:6",
"nodeType": "YulExpressionStatement",
"src": "670:12:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "634:5:6",
"nodeType": "YulIdentifier",
"src": "634:5:6"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "659:5:6",
"nodeType": "YulIdentifier",
"src": "659:5:6"
}
],
"functionName": {
"name": "cleanup_t_address",
"nativeSrc": "641:17:6",
"nodeType": "YulIdentifier",
"src": "641:17:6"
},
"nativeSrc": "641:24:6",
"nodeType": "YulFunctionCall",
"src": "641:24:6"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "631:2:6",
"nodeType": "YulIdentifier",
"src": "631:2:6"
},
"nativeSrc": "631:35:6",
"nodeType": "YulFunctionCall",
"src": "631:35:6"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "624:6:6",
"nodeType": "YulIdentifier",
"src": "624:6:6"
},
"nativeSrc": "624:43:6",
"nodeType": "YulFunctionCall",
"src": "624:43:6"
},
"nativeSrc": "621:63:6",
"nodeType": "YulIf",
"src": "621:63:6"
}
]
},
"name": "validator_revert_t_address",
"nativeSrc": "568:122:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "604:5:6",
"nodeType": "YulTypedName",
"src": "604:5:6",
"type": ""
}
],
"src": "568:122:6"
},
{
"body": {
"nativeSrc": "759:80:6",
"nodeType": "YulBlock",
"src": "759:80:6",
"statements": [
{
"nativeSrc": "769:22:6",
"nodeType": "YulAssignment",
"src": "769:22:6",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "784:6:6",
"nodeType": "YulIdentifier",
"src": "784:6:6"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "778:5:6",
"nodeType": "YulIdentifier",
"src": "778:5:6"
},
"nativeSrc": "778:13:6",
"nodeType": "YulFunctionCall",
"src": "778:13:6"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "769:5:6",
"nodeType": "YulIdentifier",
"src": "769:5:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nativeSrc": "827:5:6",
"nodeType": "YulIdentifier",
"src": "827:5:6"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nativeSrc": "800:26:6",
"nodeType": "YulIdentifier",
"src": "800:26:6"
},
"nativeSrc": "800:33:6",
"nodeType": "YulFunctionCall",
"src": "800:33:6"
},
"nativeSrc": "800:33:6",
"nodeType": "YulExpressionStatement",
"src": "800:33:6"
}
]
},
"name": "abi_decode_t_address_fromMemory",
"nativeSrc": "696:143:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "737:6:6",
"nodeType": "YulTypedName",
"src": "737:6:6",
"type": ""
},
{
"name": "end",
"nativeSrc": "745:3:6",
"nodeType": "YulTypedName",
"src": "745:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nativeSrc": "753:5:6",
"nodeType": "YulTypedName",
"src": "753:5:6",
"type": ""
}
],
"src": "696:143:6"
},
{
"body": {
"nativeSrc": "934:28:6",
"nodeType": "YulBlock",
"src": "934:28:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "951:1:6",
"nodeType": "YulLiteral",
"src": "951:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "954:1:6",
"nodeType": "YulLiteral",
"src": "954:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "944:6:6",
"nodeType": "YulIdentifier",
"src": "944:6:6"
},
"nativeSrc": "944:12:6",
"nodeType": "YulFunctionCall",
"src": "944:12:6"
},
"nativeSrc": "944:12:6",
"nodeType": "YulExpressionStatement",
"src": "944:12:6"
}
]
},
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nativeSrc": "845:117:6",
"nodeType": "YulFunctionDefinition",
"src": "845:117:6"
},
{
"body": {
"nativeSrc": "1057:28:6",
"nodeType": "YulBlock",
"src": "1057:28:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1074:1:6",
"nodeType": "YulLiteral",
"src": "1074:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1077:1:6",
"nodeType": "YulLiteral",
"src": "1077:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1067:6:6",
"nodeType": "YulIdentifier",
"src": "1067:6:6"
},
"nativeSrc": "1067:12:6",
"nodeType": "YulFunctionCall",
"src": "1067:12:6"
},
"nativeSrc": "1067:12:6",
"nodeType": "YulExpressionStatement",
"src": "1067:12:6"
}
]
},
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nativeSrc": "968:117:6",
"nodeType": "YulFunctionDefinition",
"src": "968:117:6"
},
{
"body": {
"nativeSrc": "1139:54:6",
"nodeType": "YulBlock",
"src": "1139:54:6",
"statements": [
{
"nativeSrc": "1149:38:6",
"nodeType": "YulAssignment",
"src": "1149:38:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "1167:5:6",
"nodeType": "YulIdentifier",
"src": "1167:5:6"
},
{
"kind": "number",
"nativeSrc": "1174:2:6",
"nodeType": "YulLiteral",
"src": "1174:2:6",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1163:3:6",
"nodeType": "YulIdentifier",
"src": "1163:3:6"
},
"nativeSrc": "1163:14:6",
"nodeType": "YulFunctionCall",
"src": "1163:14:6"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "1183:2:6",
"nodeType": "YulLiteral",
"src": "1183:2:6",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nativeSrc": "1179:3:6",
"nodeType": "YulIdentifier",
"src": "1179:3:6"
},
"nativeSrc": "1179:7:6",
"nodeType": "YulFunctionCall",
"src": "1179:7:6"
}
],
"functionName": {
"name": "and",
"nativeSrc": "1159:3:6",
"nodeType": "YulIdentifier",
"src": "1159:3:6"
},
"nativeSrc": "1159:28:6",
"nodeType": "YulFunctionCall",
"src": "1159:28:6"
},
"variableNames": [
{
"name": "result",
"nativeSrc": "1149:6:6",
"nodeType": "YulIdentifier",
"src": "1149:6:6"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nativeSrc": "1091:102:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "1122:5:6",
"nodeType": "YulTypedName",
"src": "1122:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nativeSrc": "1132:6:6",
"nodeType": "YulTypedName",
"src": "1132:6:6",
"type": ""
}
],
"src": "1091:102:6"
},
{
"body": {
"nativeSrc": "1227:152:6",
"nodeType": "YulBlock",
"src": "1227:152:6",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1244:1:6",
"nodeType": "YulLiteral",
"src": "1244:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1247:77:6",
"nodeType": "YulLiteral",
"src": "1247:77:6",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1237:6:6",
"nodeType": "YulIdentifier",
"src": "1237:6:6"
},
"nativeSrc": "1237:88:6",
"nodeType": "YulFunctionCall",
"src": "1237:88:6"
},
"nativeSrc": "1237:88:6",
"nodeType": "YulExpressionStatement",
"src": "1237:88:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1341:1:6",
"nodeType": "YulLiteral",
"src": "1341:1:6",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "1344:4:6",
"nodeType": "YulLiteral",
"src": "1344:4:6",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1334:6:6",
"nodeType": "YulIdentifier",
"src": "1334:6:6"
},
"nativeSrc": "1334:15:6",
"nodeType": "YulFunctionCall",
"src": "1334:15:6"
},
"nativeSrc": "1334:15:6",
"nodeType": "YulExpressionStatement",
"src": "1334:15:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1365:1:6",
"nodeType": "YulLiteral",
"src": "1365:1:6",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1368:4:6",
"nodeType": "YulLiteral",
"src": "1368:4:6",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1358:6:6",
"nodeType": "YulIdentifier",
"src": "1358:6:6"
},
"nativeSrc": "1358:15:6",
"nodeType": "YulFunctionCall",
"src": "1358:15:6"
},
"nativeSrc": "1358:15:6",
"nodeType": "YulExpressionStatement",
"src": "1358:15:6"
}
]
},
"name": "panic_error_0x41",
"nativeSrc": "1199:180:6",
"nodeType": "YulFunctionDefinition",
"src": "1199:180:6"
},
{
"body": {
"nativeSrc": "1428:238:6",
"nodeType": "YulBlock",
"src": "1428:238:6",
"statements": [
{
"nativeSrc": "1438:58:6",
"nodeType": "YulVariableDeclaration",
"src": "1438:58:6",
"value": {
"arguments": [
{
"name": "memPtr",
"nativeSrc": "1460:6:6",
"nodeType": "YulIdentifier",
"src": "1460:6:6"
},
{
"arguments": [
{
"name": "size",
"nativeSrc": "1490:4:6",
"nodeType": "YulIdentifier",
"src": "1490:4:6"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nativeSrc": "1468:21:6",
"nodeType": "YulIdentifier",
"src": "1468:21:6"
},
"nativeSrc": "1468:27:6",
"nodeType": "YulFunctionCall",
"src": "1468:27:6"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1456:3:6",
"nodeType": "YulIdentifier",
"src": "1456:3:6"
},
"nativeSrc": "1456:40:6",
"nodeType": "YulFunctionCall",
"src": "1456:40:6"
},
"variables": [
{
"name": "newFreePtr",
"nativeSrc": "1442:10:6",
"nodeType": "YulTypedName",
"src": "1442:10:6",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "1607:22:6",
"nodeType": "YulBlock",
"src": "1607:22:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "1609:16:6",
"nodeType": "YulIdentifier",
"src": "1609:16:6"
},
"nativeSrc": "1609:18:6",
"nodeType": "YulFunctionCall",
"src": "1609:18:6"
},
"nativeSrc": "1609:18:6",
"nodeType": "YulExpressionStatement",
"src": "1609:18:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "1550:10:6",
"nodeType": "YulIdentifier",
"src": "1550:10:6"
},
{
"kind": "number",
"nativeSrc": "1562:18:6",
"nodeType": "YulLiteral",
"src": "1562:18:6",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "1547:2:6",
"nodeType": "YulIdentifier",
"src": "1547:2:6"
},
"nativeSrc": "1547:34:6",
"nodeType": "YulFunctionCall",
"src": "1547:34:6"
},
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "1586:10:6",
"nodeType": "YulIdentifier",
"src": "1586:10:6"
},
{
"name": "memPtr",
"nativeSrc": "1598:6:6",
"nodeType": "YulIdentifier",
"src": "1598:6:6"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "1583:2:6",
"nodeType": "YulIdentifier",
"src": "1583:2:6"
},
"nativeSrc": "1583:22:6",
"nodeType": "YulFunctionCall",
"src": "1583:22:6"
}
],
"functionName": {
"name": "or",
"nativeSrc": "1544:2:6",
"nodeType": "YulIdentifier",
"src": "1544:2:6"
},
"nativeSrc": "1544:62:6",
"nodeType": "YulFunctionCall",
"src": "1544:62:6"
},
"nativeSrc": "1541:88:6",
"nodeType": "YulIf",
"src": "1541:88:6"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1645:2:6",
"nodeType": "YulLiteral",
"src": "1645:2:6",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nativeSrc": "1649:10:6",
"nodeType": "YulIdentifier",
"src": "1649:10:6"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1638:6:6",
"nodeType": "YulIdentifier",
"src": "1638:6:6"
},
"nativeSrc": "1638:22:6",
"nodeType": "YulFunctionCall",
"src": "1638:22:6"
},
"nativeSrc": "1638:22:6",
"nodeType": "YulExpressionStatement",
"src": "1638:22:6"
}
]
},
"name": "finalize_allocation",
"nativeSrc": "1385:281:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "1414:6:6",
"nodeType": "YulTypedName",
"src": "1414:6:6",
"type": ""
},
{
"name": "size",
"nativeSrc": "1422:4:6",
"nodeType": "YulTypedName",
"src": "1422:4:6",
"type": ""
}
],
"src": "1385:281:6"
},
{
"body": {
"nativeSrc": "1713:88:6",
"nodeType": "YulBlock",
"src": "1713:88:6",
"statements": [
{
"nativeSrc": "1723:30:6",
"nodeType": "YulAssignment",
"src": "1723:30:6",
"value": {
"arguments": [],
"functionName": {
"name": "allocate_unbounded",
"nativeSrc": "1733:18:6",
"nodeType": "YulIdentifier",
"src": "1733:18:6"
},
"nativeSrc": "1733:20:6",
"nodeType": "YulFunctionCall",
"src": "1733:20:6"
},
"variableNames": [
{
"name": "memPtr",
"nativeSrc": "1723:6:6",
"nodeType": "YulIdentifier",
"src": "1723:6:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nativeSrc": "1782:6:6",
"nodeType": "YulIdentifier",
"src": "1782:6:6"
},
{
"name": "size",
"nativeSrc": "1790:4:6",
"nodeType": "YulIdentifier",
"src": "1790:4:6"
}
],
"functionName": {
"name": "finalize_allocation",
"nativeSrc": "1762:19:6",
"nodeType": "YulIdentifier",
"src": "1762:19:6"
},
"nativeSrc": "1762:33:6",
"nodeType": "YulFunctionCall",
"src": "1762:33:6"
},
"nativeSrc": "1762:33:6",
"nodeType": "YulExpressionStatement",
"src": "1762:33:6"
}
]
},
"name": "allocate_memory",
"nativeSrc": "1672:129:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nativeSrc": "1697:4:6",
"nodeType": "YulTypedName",
"src": "1697:4:6",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nativeSrc": "1706:6:6",
"nodeType": "YulTypedName",
"src": "1706:6:6",
"type": ""
}
],
"src": "1672:129:6"
},
{
"body": {
"nativeSrc": "1873:241:6",
"nodeType": "YulBlock",
"src": "1873:241:6",
"statements": [
{
"body": {
"nativeSrc": "1978:22:6",
"nodeType": "YulBlock",
"src": "1978:22:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "1980:16:6",
"nodeType": "YulIdentifier",
"src": "1980:16:6"
},
"nativeSrc": "1980:18:6",
"nodeType": "YulFunctionCall",
"src": "1980:18:6"
},
"nativeSrc": "1980:18:6",
"nodeType": "YulExpressionStatement",
"src": "1980:18:6"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nativeSrc": "1950:6:6",
"nodeType": "YulIdentifier",
"src": "1950:6:6"
},
{
"kind": "number",
"nativeSrc": "1958:18:6",
"nodeType": "YulLiteral",
"src": "1958:18:6",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "1947:2:6",
"nodeType": "YulIdentifier",
"src": "1947:2:6"
},
"nativeSrc": "1947:30:6",
"nodeType": "YulFunctionCall",
"src": "1947:30:6"
},
"nativeSrc": "1944:56:6",
"nodeType": "YulIf",
"src": "1944:56:6"
},
{
"nativeSrc": "2010:37:6",
"nodeType": "YulAssignment",
"src": "2010:37:6",
"value": {
"arguments": [
{
"name": "length",
"nativeSrc": "2040:6:6",
"nodeType": "YulIdentifier",
"src": "2040:6:6"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nativeSrc": "2018:21:6",
"nodeType": "YulIdentifier",
"src": "2018:21:6"
},
"nativeSrc": "2018:29:6",
"nodeType": "YulFunctionCall",
"src": "2018:29:6"
},
"variableNames": [
{
"name": "size",
"nativeSrc": "2010:4:6",
"nodeType": "YulIdentifier",
"src": "2010:4:6"
}
]
},
{
"nativeSrc": "2084:23:6",
"nodeType": "YulAssignment",
"src": "2084:23:6",
"value": {
"arguments": [
{
"name": "size",
"nativeSrc": "2096:4:6",
"nodeType": "YulIdentifier",
"src": "2096:4:6"
},
{
"kind": "number",
"nativeSrc": "2102:4:6",
"nodeType": "YulLiteral",
"src": "2102:4:6",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2092:3:6",
"nodeType": "YulIdentifier",
"src": "2092:3:6"
},
"nativeSrc": "2092:15:6",
"nodeType": "YulFunctionCall",
"src": "2092:15:6"
},
"variableNames": [
{
"name": "size",
"nativeSrc": "2084:4:6",
"nodeType": "YulIdentifier",
"src": "2084:4:6"
}
]
}
]
},
"name": "array_allocation_size_t_bytes_memory_ptr",
"nativeSrc": "1807:307:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nativeSrc": "1857:6:6",
"nodeType": "YulTypedName",
"src": "1857:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nativeSrc": "1868:4:6",
"nodeType": "YulTypedName",
"src": "1868:4:6",
"type": ""
}
],
"src": "1807:307:6"
},
{
"body": {
"nativeSrc": "2182:184:6",
"nodeType": "YulBlock",
"src": "2182:184:6",
"statements": [
{
"nativeSrc": "2192:10:6",
"nodeType": "YulVariableDeclaration",
"src": "2192:10:6",
"value": {
"kind": "number",
"nativeSrc": "2201:1:6",
"nodeType": "YulLiteral",
"src": "2201:1:6",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nativeSrc": "2196:1:6",
"nodeType": "YulTypedName",
"src": "2196:1:6",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "2261:63:6",
"nodeType": "YulBlock",
"src": "2261:63:6",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nativeSrc": "2286:3:6",
"nodeType": "YulIdentifier",
"src": "2286:3:6"
},
{
"name": "i",
"nativeSrc": "2291:1:6",
"nodeType": "YulIdentifier",
"src": "2291:1:6"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2282:3:6",
"nodeType": "YulIdentifier",
"src": "2282:3:6"
},
"nativeSrc": "2282:11:6",
"nodeType": "YulFunctionCall",
"src": "2282:11:6"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nativeSrc": "2305:3:6",
"nodeType": "YulIdentifier",
"src": "2305:3:6"
},
{
"name": "i",
"nativeSrc": "2310:1:6",
"nodeType": "YulIdentifier",
"src": "2310:1:6"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2301:3:6",
"nodeType": "YulIdentifier",
"src": "2301:3:6"
},
"nativeSrc": "2301:11:6",
"nodeType": "YulFunctionCall",
"src": "2301:11:6"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "2295:5:6",
"nodeType": "YulIdentifier",
"src": "2295:5:6"
},
"nativeSrc": "2295:18:6",
"nodeType": "YulFunctionCall",
"src": "2295:18:6"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2275:6:6",
"nodeType": "YulIdentifier",
"src": "2275:6:6"
},
"nativeSrc": "2275:39:6",
"nodeType": "YulFunctionCall",
"src": "2275:39:6"
},
"nativeSrc": "2275:39:6",
"nodeType": "YulExpressionStatement",
"src": "2275:39:6"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nativeSrc": "2222:1:6",
"nodeType": "YulIdentifier",
"src": "2222:1:6"
},
{
"name": "length",
"nativeSrc": "2225:6:6",
"nodeType": "YulIdentifier",
"src": "2225:6:6"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "2219:2:6",
"nodeType": "YulIdentifier",
"src": "2219:2:6"
},
"nativeSrc": "2219:13:6",
"nodeType": "YulFunctionCall",
"src": "2219:13:6"
},
"nativeSrc": "2211:113:6",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "2233:19:6",
"nodeType": "YulBlock",
"src": "2233:19:6",
"statements": [
{
"nativeSrc": "2235:15:6",
"nodeType": "YulAssignment",
"src": "2235:15:6",
"value": {
"arguments": [
{
"name": "i",
"nativeSrc": "2244:1:6",
"nodeType": "YulIdentifier",
"src": "2244:1:6"
},
{
"kind": "number",
"nativeSrc": "2247:2:6",
"nodeType": "YulLiteral",
"src": "2247:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2240:3:6",
"nodeType": "YulIdentifier",
"src": "2240:3:6"
},
"nativeSrc": "2240:10:6",
"nodeType": "YulFunctionCall",
"src": "2240:10:6"
},
"variableNames": [
{
"name": "i",
"nativeSrc": "2235:1:6",
"nodeType": "YulIdentifier",
"src": "2235:1:6"
}
]
}
]
},
"pre": {
"nativeSrc": "2215:3:6",
"nodeType": "YulBlock",
"src": "2215:3:6",
"statements": []
},
"src": "2211:113:6"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nativeSrc": "2344:3:6",
"nodeType": "YulIdentifier",
"src": "2344:3:6"
},
{
"name": "length",
"nativeSrc": "2349:6:6",
"nodeType": "YulIdentifier",
"src": "2349:6:6"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2340:3:6",
"nodeType": "YulIdentifier",
"src": "2340:3:6"
},
"nativeSrc": "2340:16:6",
"nodeType": "YulFunctionCall",
"src": "2340:16:6"
},
{
"kind": "number",
"nativeSrc": "2358:1:6",
"nodeType": "YulLiteral",
"src": "2358:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2333:6:6",
"nodeType": "YulIdentifier",
"src": "2333:6:6"
},
"nativeSrc": "2333:27:6",
"nodeType": "YulFunctionCall",
"src": "2333:27:6"
},
"nativeSrc": "2333:27:6",
"nodeType": "YulExpressionStatement",
"src": "2333:27:6"
}
]
},
"name": "copy_memory_to_memory_with_cleanup",
"nativeSrc": "2120:246:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nativeSrc": "2164:3:6",
"nodeType": "YulTypedName",
"src": "2164:3:6",
"type": ""
},
{
"name": "dst",
"nativeSrc": "2169:3:6",
"nodeType": "YulTypedName",
"src": "2169:3:6",
"type": ""
},
{
"name": "length",
"nativeSrc": "2174:6:6",
"nodeType": "YulTypedName",
"src": "2174:6:6",
"type": ""
}
],
"src": "2120:246:6"
},
{
"body": {
"nativeSrc": "2466:338:6",
"nodeType": "YulBlock",
"src": "2466:338:6",
"statements": [
{
"nativeSrc": "2476:74:6",
"nodeType": "YulAssignment",
"src": "2476:74:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nativeSrc": "2542:6:6",
"nodeType": "YulIdentifier",
"src": "2542:6:6"
}
],
"functionName": {
"name": "array_allocation_size_t_bytes_memory_ptr",
"nativeSrc": "2501:40:6",
"nodeType": "YulIdentifier",
"src": "2501:40:6"
},
"nativeSrc": "2501:48:6",
"nodeType": "YulFunctionCall",
"src": "2501:48:6"
}
],
"functionName": {
"name": "allocate_memory",
"nativeSrc": "2485:15:6",
"nodeType": "YulIdentifier",
"src": "2485:15:6"
},
"nativeSrc": "2485:65:6",
"nodeType": "YulFunctionCall",
"src": "2485:65:6"
},
"variableNames": [
{
"name": "array",
"nativeSrc": "2476:5:6",
"nodeType": "YulIdentifier",
"src": "2476:5:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nativeSrc": "2566:5:6",
"nodeType": "YulIdentifier",
"src": "2566:5:6"
},
{
"name": "length",
"nativeSrc": "2573:6:6",
"nodeType": "YulIdentifier",
"src": "2573:6:6"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2559:6:6",
"nodeType": "YulIdentifier",
"src": "2559:6:6"
},
"nativeSrc": "2559:21:6",
"nodeType": "YulFunctionCall",
"src": "2559:21:6"
},
"nativeSrc": "2559:21:6",
"nodeType": "YulExpressionStatement",
"src": "2559:21:6"
},
{
"nativeSrc": "2589:27:6",
"nodeType": "YulVariableDeclaration",
"src": "2589:27:6",
"value": {
"arguments": [
{
"name": "array",
"nativeSrc": "2604:5:6",
"nodeType": "YulIdentifier",
"src": "2604:5:6"
},
{
"kind": "number",
"nativeSrc": "2611:4:6",
"nodeType": "YulLiteral",
"src": "2611:4:6",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2600:3:6",
"nodeType": "YulIdentifier",
"src": "2600:3:6"
},
"nativeSrc": "2600:16:6",
"nodeType": "YulFunctionCall",
"src": "2600:16:6"
},
"variables": [
{
"name": "dst",
"nativeSrc": "2593:3:6",
"nodeType": "YulTypedName",
"src": "2593:3:6",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "2654:83:6",
"nodeType": "YulBlock",
"src": "2654:83:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nativeSrc": "2656:77:6",
"nodeType": "YulIdentifier",
"src": "2656:77:6"
},
"nativeSrc": "2656:79:6",
"nodeType": "YulFunctionCall",
"src": "2656:79:6"
},
"nativeSrc": "2656:79:6",
"nodeType": "YulExpressionStatement",
"src": "2656:79:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nativeSrc": "2635:3:6",
"nodeType": "YulIdentifier",
"src": "2635:3:6"
},
{
"name": "length",
"nativeSrc": "2640:6:6",
"nodeType": "YulIdentifier",
"src": "2640:6:6"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2631:3:6",
"nodeType": "YulIdentifier",
"src": "2631:3:6"
},
"nativeSrc": "2631:16:6",
"nodeType": "YulFunctionCall",
"src": "2631:16:6"
},
{
"name": "end",
"nativeSrc": "2649:3:6",
"nodeType": "YulIdentifier",
"src": "2649:3:6"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "2628:2:6",
"nodeType": "YulIdentifier",
"src": "2628:2:6"
},
"nativeSrc": "2628:25:6",
"nodeType": "YulFunctionCall",
"src": "2628:25:6"
},
"nativeSrc": "2625:112:6",
"nodeType": "YulIf",
"src": "2625:112:6"
},
{
"expression": {
"arguments": [
{
"name": "src",
"nativeSrc": "2781:3:6",
"nodeType": "YulIdentifier",
"src": "2781:3:6"
},
{
"name": "dst",
"nativeSrc": "2786:3:6",
"nodeType": "YulIdentifier",
"src": "2786:3:6"
},
{
"name": "length",
"nativeSrc": "2791:6:6",
"nodeType": "YulIdentifier",
"src": "2791:6:6"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nativeSrc": "2746:34:6",
"nodeType": "YulIdentifier",
"src": "2746:34:6"
},
"nativeSrc": "2746:52:6",
"nodeType": "YulFunctionCall",
"src": "2746:52:6"
},
"nativeSrc": "2746:52:6",
"nodeType": "YulExpressionStatement",
"src": "2746:52:6"
}
]
},
"name": "abi_decode_available_length_t_bytes_memory_ptr_fromMemory",
"nativeSrc": "2372:432:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nativeSrc": "2439:3:6",
"nodeType": "YulTypedName",
"src": "2439:3:6",
"type": ""
},
{
"name": "length",
"nativeSrc": "2444:6:6",
"nodeType": "YulTypedName",
"src": "2444:6:6",
"type": ""
},
{
"name": "end",
"nativeSrc": "2452:3:6",
"nodeType": "YulTypedName",
"src": "2452:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nativeSrc": "2460:5:6",
"nodeType": "YulTypedName",
"src": "2460:5:6",
"type": ""
}
],
"src": "2372:432:6"
},
{
"body": {
"nativeSrc": "2895:281:6",
"nodeType": "YulBlock",
"src": "2895:281:6",
"statements": [
{
"body": {
"nativeSrc": "2944:83:6",
"nodeType": "YulBlock",
"src": "2944:83:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nativeSrc": "2946:77:6",
"nodeType": "YulIdentifier",
"src": "2946:77:6"
},
"nativeSrc": "2946:79:6",
"nodeType": "YulFunctionCall",
"src": "2946:79:6"
},
"nativeSrc": "2946:79:6",
"nodeType": "YulExpressionStatement",
"src": "2946:79:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nativeSrc": "2923:6:6",
"nodeType": "YulIdentifier",
"src": "2923:6:6"
},
{
"kind": "number",
"nativeSrc": "2931:4:6",
"nodeType": "YulLiteral",
"src": "2931:4:6",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2919:3:6",
"nodeType": "YulIdentifier",
"src": "2919:3:6"
},
"nativeSrc": "2919:17:6",
"nodeType": "YulFunctionCall",
"src": "2919:17:6"
},
{
"name": "end",
"nativeSrc": "2938:3:6",
"nodeType": "YulIdentifier",
"src": "2938:3:6"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "2915:3:6",
"nodeType": "YulIdentifier",
"src": "2915:3:6"
},
"nativeSrc": "2915:27:6",
"nodeType": "YulFunctionCall",
"src": "2915:27:6"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "2908:6:6",
"nodeType": "YulIdentifier",
"src": "2908:6:6"
},
"nativeSrc": "2908:35:6",
"nodeType": "YulFunctionCall",
"src": "2908:35:6"
},
"nativeSrc": "2905:122:6",
"nodeType": "YulIf",
"src": "2905:122:6"
},
{
"nativeSrc": "3036:27:6",
"nodeType": "YulVariableDeclaration",
"src": "3036:27:6",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "3056:6:6",
"nodeType": "YulIdentifier",
"src": "3056:6:6"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "3050:5:6",
"nodeType": "YulIdentifier",
"src": "3050:5:6"
},
"nativeSrc": "3050:13:6",
"nodeType": "YulFunctionCall",
"src": "3050:13:6"
},
"variables": [
{
"name": "length",
"nativeSrc": "3040:6:6",
"nodeType": "YulTypedName",
"src": "3040:6:6",
"type": ""
}
]
},
{
"nativeSrc": "3072:98:6",
"nodeType": "YulAssignment",
"src": "3072:98:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nativeSrc": "3143:6:6",
"nodeType": "YulIdentifier",
"src": "3143:6:6"
},
{
"kind": "number",
"nativeSrc": "3151:4:6",
"nodeType": "YulLiteral",
"src": "3151:4:6",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3139:3:6",
"nodeType": "YulIdentifier",
"src": "3139:3:6"
},
"nativeSrc": "3139:17:6",
"nodeType": "YulFunctionCall",
"src": "3139:17:6"
},
{
"name": "length",
"nativeSrc": "3158:6:6",
"nodeType": "YulIdentifier",
"src": "3158:6:6"
},
{
"name": "end",
"nativeSrc": "3166:3:6",
"nodeType": "YulIdentifier",
"src": "3166:3:6"
}
],
"functionName": {
"name": "abi_decode_available_length_t_bytes_memory_ptr_fromMemory",
"nativeSrc": "3081:57:6",
"nodeType": "YulIdentifier",
"src": "3081:57:6"
},
"nativeSrc": "3081:89:6",
"nodeType": "YulFunctionCall",
"src": "3081:89:6"
},
"variableNames": [
{
"name": "array",
"nativeSrc": "3072:5:6",
"nodeType": "YulIdentifier",
"src": "3072:5:6"
}
]
}
]
},
"name": "abi_decode_t_bytes_memory_ptr_fromMemory",
"nativeSrc": "2823:353:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "2873:6:6",
"nodeType": "YulTypedName",
"src": "2873:6:6",
"type": ""
},
{
"name": "end",
"nativeSrc": "2881:3:6",
"nodeType": "YulTypedName",
"src": "2881:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nativeSrc": "2889:5:6",
"nodeType": "YulTypedName",
"src": "2889:5:6",
"type": ""
}
],
"src": "2823:353:6"
},
{
"body": {
"nativeSrc": "3285:575:6",
"nodeType": "YulBlock",
"src": "3285:575:6",
"statements": [
{
"body": {
"nativeSrc": "3331:83:6",
"nodeType": "YulBlock",
"src": "3331:83:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "3333:77:6",
"nodeType": "YulIdentifier",
"src": "3333:77:6"
},
"nativeSrc": "3333:79:6",
"nodeType": "YulFunctionCall",
"src": "3333:79:6"
},
"nativeSrc": "3333:79:6",
"nodeType": "YulExpressionStatement",
"src": "3333:79:6"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "3306:7:6",
"nodeType": "YulIdentifier",
"src": "3306:7:6"
},
{
"name": "headStart",
"nativeSrc": "3315:9:6",
"nodeType": "YulIdentifier",
"src": "3315:9:6"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "3302:3:6",
"nodeType": "YulIdentifier",
"src": "3302:3:6"
},
"nativeSrc": "3302:23:6",
"nodeType": "YulFunctionCall",
"src": "3302:23:6"
},
{
"kind": "number",
"nativeSrc": "3327:2:6",
"nodeType": "YulLiteral",
"src": "3327:2:6",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "3298:3:6",
"nodeType": "YulIdentifier",
"src": "3298:3:6"
},
"nativeSrc": "3298:32:6",
"nodeType": "YulFunctionCall",
"src": "3298:32:6"
},
"nativeSrc": "3295:119:6",
"nodeType": "YulIf",
"src": "3295:119:6"
},
{
"nativeSrc": "3424:128:6",
"nodeType": "YulBlock",
"src": "3424:128:6",
"statements": [
{
"nativeSrc": "3439:15:6",
"nodeType": "YulVariableDeclaration",
"src": "3439:15:6",
"value": {
"kind": "number",
"nativeSrc": "3453:1:6",
"nodeType": "YulLiteral",
"src": "3453:1:6",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "3443:6:6",
"nodeType": "YulTypedName",
"src": "3443:6:6",
"type": ""
}
]
},
{
"nativeSrc": "3468:74:6",
"nodeType": "YulAssignment",
"src": "3468:74:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "3514:9:6",
"nodeType": "YulIdentifier",
"src": "3514:9:6"
},
{
"name": "offset",
"nativeSrc": "3525:6:6",
"nodeType": "YulIdentifier",
"src": "3525:6:6"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3510:3:6",
"nodeType": "YulIdentifier",
"src": "3510:3:6"
},
"nativeSrc": "3510:22:6",
"nodeType": "YulFunctionCall",
"src": "3510:22:6"
},
{
"name": "dataEnd",
"nativeSrc": "3534:7:6",
"nodeType": "YulIdentifier",
"src": "3534:7:6"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nativeSrc": "3478:31:6",
"nodeType": "YulIdentifier",
"src": "3478:31:6"
},
"nativeSrc": "3478:64:6",
"nodeType": "YulFunctionCall",
"src": "3478:64:6"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "3468:6:6",
"nodeType": "YulIdentifier",
"src": "3468:6:6"
}
]
}
]
},
{
"nativeSrc": "3562:291:6",
"nodeType": "YulBlock",
"src": "3562:291:6",
"statements": [
{
"nativeSrc": "3577:39:6",
"nodeType": "YulVariableDeclaration",
"src": "3577:39:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "3601:9:6",
"nodeType": "YulIdentifier",
"src": "3601:9:6"
},
{
"kind": "number",
"nativeSrc": "3612:2:6",
"nodeType": "YulLiteral",
"src": "3612:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3597:3:6",
"nodeType": "YulIdentifier",
"src": "3597:3:6"
},
"nativeSrc": "3597:18:6",
"nodeType": "YulFunctionCall",
"src": "3597:18:6"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "3591:5:6",
"nodeType": "YulIdentifier",
"src": "3591:5:6"
},
"nativeSrc": "3591:25:6",
"nodeType": "YulFunctionCall",
"src": "3591:25:6"
},
"variables": [
{
"name": "offset",
"nativeSrc": "3581:6:6",
"nodeType": "YulTypedName",
"src": "3581:6:6",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "3663:83:6",
"nodeType": "YulBlock",
"src": "3663:83:6",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nativeSrc": "3665:77:6",
"nodeType": "YulIdentifier",
"src": "3665:77:6"
},
"nativeSrc": "3665:79:6",
"nodeType": "YulFunctionCall",
"src": "3665:79:6"
},
"nativeSrc": "3665:79:6",
"nodeType": "YulExpressionStatement",
"src": "3665:79:6"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nativeSrc": "3635:6:6",
"nodeType": "YulIdentifier",
"src": "3635:6:6"
},
{
"kind": "number",
"nativeSrc": "3643:18:6",
"nodeType": "YulLiteral",
"src": "3643:18:6",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "3632:2:6",
"nodeType": "YulIdentifier",
"src": "3632:2:6"
},
"nativeSrc": "3632:30:6",
"nodeType": "YulFunctionCall",
"src": "3632:30:6"
},
"nativeSrc": "3629:117:6",
"nodeType": "YulIf",
"src": "3629:117:6"
},
{
"nativeSrc": "3760:83:6",
"nodeType": "YulAssignment",
"src": "3760:83:6",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "3815:9:6",
"nodeType": "YulIdentifier",
"src": "3815:9:6"
},
{
"name": "offset",
"nativeSrc": "3826:6:6",
"nodeType": "YulIdentifier",
"src": "3826:6:6"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3811:3:6",
"nodeType": "YulIdentifier",
"src": "3811:3:6"
},
"nativeSrc": "3811:22:6",
"nodeType": "YulFunctionCall",
"src": "3811:22:6"
},
{
"name": "dataEnd",
"nativeSrc": "3835:7:6",
"nodeType": "YulIdentifier",
"src": "3835:7:6"
}
],
"functionName": {
"name": "abi_decode_t_bytes_memory_ptr_fromMemory",
"nativeSrc": "3770:40:6",
"nodeType": "YulIdentifier",
"src": "3770:40:6"
},
"nativeSrc": "3770:73:6",
"nodeType": "YulFunctionCall",
"src": "3770:73:6"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "3760:6:6",
"nodeType": "YulIdentifier",
"src": "3760:6:6"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory",
"nativeSrc": "3182:678:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "3247:9:6",
"nodeType": "YulTypedName",
"src": "3247:9:6",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "3258:7:6",
"nodeType": "YulTypedName",
"src": "3258:7:6",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "3270:6:6",
"nodeType": "YulTypedName",
"src": "3270:6:6",
"type": ""
},
{
"name": "value1",
"nativeSrc": "3278:6:6",
"nodeType": "YulTypedName",
"src": "3278:6:6",
"type": ""
}
],
"src": "3182:678:6"
},
{
"body": {
"nativeSrc": "3931:53:6",
"nodeType": "YulBlock",
"src": "3931:53:6",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "3948:3:6",
"nodeType": "YulIdentifier",
"src": "3948:3:6"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "3971:5:6",
"nodeType": "YulIdentifier",
"src": "3971:5:6"
}
],
"functionName": {
"name": "cleanup_t_address",
"nativeSrc": "3953:17:6",
"nodeType": "YulIdentifier",
"src": "3953:17:6"
},
"nativeSrc": "3953:24:6",
"nodeType": "YulFunctionCall",
"src": "3953:24:6"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "3941:6:6",
"nodeType": "YulIdentifier",
"src": "3941:6:6"
},
"nativeSrc": "3941:37:6",
"nodeType": "YulFunctionCall",
"src": "3941:37:6"
},
"nativeSrc": "3941:37:6",
"nodeType": "YulExpressionStatement",
"src": "3941:37:6"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nativeSrc": "3866:118:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "3919:5:6",
"nodeType": "YulTypedName",
"src": "3919:5:6",
"type": ""
},
{
"name": "pos",
"nativeSrc": "3926:3:6",
"nodeType": "YulTypedName",
"src": "3926:3:6",
"type": ""
}
],
"src": "3866:118:6"
},
{
"body": {
"nativeSrc": "4088:124:6",
"nodeType": "YulBlock",
"src": "4088:124:6",
"statements": [
{
"nativeSrc": "4098:26:6",
"nodeType": "YulAssignment",
"src": "4098:26:6",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "4110:9:6",
"nodeType": "YulIdentifier",
"src": "4110:9:6"
},
{
"kind": "number",
"nativeSrc": "4121:2:6",
"nodeType": "YulLiteral",
"src": "4121:2:6",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4106:3:6",
"nodeType": "YulIdentifier",
"src": "4106:3:6"
},
"nativeSrc": "4106:18:6",
"nodeType": "YulFunctionCall",
"src": "4106:18:6"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "4098:4:6",
"nodeType": "YulIdentifier",
"src": "4098:4:6"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "4178:6:6",
"nodeType": "YulIdentifier",
"src": "4178:6:6"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "4191:9:6",
"nodeType": "YulIdentifier",
"src": "4191:9:6"
},
{
"kind": "number",
"nativeSrc": "4202:1:6",
"nodeType": "YulLiteral",
"src": "4202:1:6",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4187:3:6",
"nodeType": "YulIdentifier",
"src": "4187:3:6"
},
"nativeSrc": "4187:17:6",
"nodeType": "YulFunctionCall",
"src": "4187:17:6"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nativeSrc": "4134:43:6",
"nodeType": "YulIdentifier",
"src": "4134:43:6"
},
"nativeSrc": "4134:71:6",
"nodeType": "YulFunctionCall",
"src": "4134:71:6"
},
"nativeSrc": "4134:71:6",
"nodeType": "YulExpressionStatement",
"src": "4134:71:6"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nativeSrc": "3990:222:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "4060:9:6",
"nodeType": "YulTypedName",
"src": "4060:9:6",
"type": ""
},
{
"name": "value0",
"nativeSrc": "4072:6:6",
"nodeType": "YulTypedName",
"src": "4072:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "4083:4:6",
"nodeType": "YulTypedName",
"src": "4083:4:6",
"type": ""
}
],
"src": "3990:222:6"
},
{
"body": {
"nativeSrc": "4276:40:6",
"nodeType": "YulBlock",
"src": "4276:40:6",
"statements": [
{
"nativeSrc": "4287:22:6",
"nodeType": "YulAssignment",
"src": "4287:22:6",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "4303:5:6",
"nodeType": "YulIdentifier",
"src": "4303:5:6"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "4297:5:6",
"nodeType": "YulIdentifier",
"src": "4297:5:6"
},
"nativeSrc": "4297:12:6",
"nodeType": "YulFunctionCall",
"src": "4297:12:6"
},
"variableNames": [
{
"name": "length",
"nativeSrc": "4287:6:6",
"nodeType": "YulIdentifier",
"src": "4287:6:6"
}
]
}
]
},
"name": "array_length_t_bytes_memory_ptr",
"nativeSrc": "4218:98:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "4259:5:6",
"nodeType": "YulTypedName",
"src": "4259:5:6",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nativeSrc": "4269:6:6",
"nodeType": "YulTypedName",
"src": "4269:6:6",
"type": ""
}
],
"src": "4218:98:6"
},
{
"body": {
"nativeSrc": "4435:34:6",
"nodeType": "YulBlock",
"src": "4435:34:6",
"statements": [
{
"nativeSrc": "4445:18:6",
"nodeType": "YulAssignment",
"src": "4445:18:6",
"value": {
"name": "pos",
"nativeSrc": "4460:3:6",
"nodeType": "YulIdentifier",
"src": "4460:3:6"
},
"variableNames": [
{
"name": "updated_pos",
"nativeSrc": "4445:11:6",
"nodeType": "YulIdentifier",
"src": "4445:11:6"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nativeSrc": "4322:147:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "4407:3:6",
"nodeType": "YulTypedName",
"src": "4407:3:6",
"type": ""
},
{
"name": "length",
"nativeSrc": "4412:6:6",
"nodeType": "YulTypedName",
"src": "4412:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nativeSrc": "4423:11:6",
"nodeType": "YulTypedName",
"src": "4423:11:6",
"type": ""
}
],
"src": "4322:147:6"
},
{
"body": {
"nativeSrc": "4583:278:6",
"nodeType": "YulBlock",
"src": "4583:278:6",
"statements": [
{
"nativeSrc": "4593:52:6",
"nodeType": "YulVariableDeclaration",
"src": "4593:52:6",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "4639:5:6",
"nodeType": "YulIdentifier",
"src": "4639:5:6"
}
],
"functionName": {
"name": "array_length_t_bytes_memory_ptr",
"nativeSrc": "4607:31:6",
"nodeType": "YulIdentifier",
"src": "4607:31:6"
},
"nativeSrc": "4607:38:6",
"nodeType": "YulFunctionCall",
"src": "4607:38:6"
},
"variables": [
{
"name": "length",
"nativeSrc": "4597:6:6",
"nodeType": "YulTypedName",
"src": "4597:6:6",
"type": ""
}
]
},
{
"nativeSrc": "4654:95:6",
"nodeType": "YulAssignment",
"src": "4654:95:6",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "4737:3:6",
"nodeType": "YulIdentifier",
"src": "4737:3:6"
},
{
"name": "length",
"nativeSrc": "4742:6:6",
"nodeType": "YulIdentifier",
"src": "4742:6:6"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nativeSrc": "4661:75:6",
"nodeType": "YulIdentifier",
"src": "4661:75:6"
},
"nativeSrc": "4661:88:6",
"nodeType": "YulFunctionCall",
"src": "4661:88:6"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "4654:3:6",
"nodeType": "YulIdentifier",
"src": "4654:3:6"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "4797:5:6",
"nodeType": "YulIdentifier",
"src": "4797:5:6"
},
{
"kind": "number",
"nativeSrc": "4804:4:6",
"nodeType": "YulLiteral",
"src": "4804:4:6",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4793:3:6",
"nodeType": "YulIdentifier",
"src": "4793:3:6"
},
"nativeSrc": "4793:16:6",
"nodeType": "YulFunctionCall",
"src": "4793:16:6"
},
{
"name": "pos",
"nativeSrc": "4811:3:6",
"nodeType": "YulIdentifier",
"src": "4811:3:6"
},
{
"name": "length",
"nativeSrc": "4816:6:6",
"nodeType": "YulIdentifier",
"src": "4816:6:6"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nativeSrc": "4758:34:6",
"nodeType": "YulIdentifier",
"src": "4758:34:6"
},
"nativeSrc": "4758:65:6",
"nodeType": "YulFunctionCall",
"src": "4758:65:6"
},
"nativeSrc": "4758:65:6",
"nodeType": "YulExpressionStatement",
"src": "4758:65:6"
},
{
"nativeSrc": "4832:23:6",
"nodeType": "YulAssignment",
"src": "4832:23:6",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "4843:3:6",
"nodeType": "YulIdentifier",
"src": "4843:3:6"
},
{
"name": "length",
"nativeSrc": "4848:6:6",
"nodeType": "YulIdentifier",
"src": "4848:6:6"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4839:3:6",
"nodeType": "YulIdentifier",
"src": "4839:3:6"
},
"nativeSrc": "4839:16:6",
"nodeType": "YulFunctionCall",
"src": "4839:16:6"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "4832:3:6",
"nodeType": "YulIdentifier",
"src": "4832:3:6"
}
]
}
]
},
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nativeSrc": "4475:386:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "4564:5:6",
"nodeType": "YulTypedName",
"src": "4564:5:6",
"type": ""
},
{
"name": "pos",
"nativeSrc": "4571:3:6",
"nodeType": "YulTypedName",
"src": "4571:3:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "4579:3:6",
"nodeType": "YulTypedName",
"src": "4579:3:6",
"type": ""
}
],
"src": "4475:386:6"
},
{
"body": {
"nativeSrc": "5001:137:6",
"nodeType": "YulBlock",
"src": "5001:137:6",
"statements": [
{
"nativeSrc": "5012:100:6",
"nodeType": "YulAssignment",
"src": "5012:100:6",
"value": {
"arguments": [
{
"name": "value0",
"nativeSrc": "5099:6:6",
"nodeType": "YulIdentifier",
"src": "5099:6:6"
},
{
"name": "pos",
"nativeSrc": "5108:3:6",
"nodeType": "YulIdentifier",
"src": "5108:3:6"
}
],
"functionName": {
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nativeSrc": "5019:79:6",
"nodeType": "YulIdentifier",
"src": "5019:79:6"
},
"nativeSrc": "5019:93:6",
"nodeType": "YulFunctionCall",
"src": "5019:93:6"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "5012:3:6",
"nodeType": "YulIdentifier",
"src": "5012:3:6"
}
]
},
{
"nativeSrc": "5122:10:6",
"nodeType": "YulAssignment",
"src": "5122:10:6",
"value": {
"name": "pos",
"nativeSrc": "5129:3:6",
"nodeType": "YulIdentifier",
"src": "5129:3:6"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "5122:3:6",
"nodeType": "YulIdentifier",
"src": "5122:3:6"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nativeSrc": "4867:271:6",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "4980:3:6",
"nodeType": "YulTypedName",
"src": "4980:3:6",
"type": ""
},
{
"name": "value0",
"nativeSrc": "4986:6:6",
"nodeType": "YulTypedName",
"src": "4986:6:6",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "4997:3:6",
"nodeType": "YulTypedName",
"src": "4997:3:6",
"type": ""
}
],
"src": "4867:271:6"
}
]
},
"contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_bytes_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory_with_cleanup(src, dst, length)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_bytes_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n}\n",
"id": 6,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "60806040526040516106ae3803806106ae833981810160405281019061002591906104f2565b610035828261003c60201b60201c565b50506105ce565b61004b826100c060201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25f815111156100ad576100a7828261018f60201b60201c565b506100bc565b6100bb61021560201b60201c565b5b5050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b0361011b57806040517f4c9c8ce3000000000000000000000000000000000000000000000000000000008152600401610112919061055b565b60405180910390fd5b8061014d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b61025160201b60201c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f808473ffffffffffffffffffffffffffffffffffffffff16846040516101b891906105b8565b5f60405180830381855af49150503d805f81146101f0576040519150601f19603f3d011682016040523d82523d5f602084013e6101f5565b606091505b509150915061020b85838361025a60201b60201c565b9250505092915050565b5f34111561024f576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f819050919050565b60608261027557610270826102ed60201b60201c565b6102e5565b5f825114801561029b57505f8473ffffffffffffffffffffffffffffffffffffffff163b145b156102dd57836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016102d4919061055b565b60405180910390fd5b8190506102e6565b5b9392505050565b5f815111156102ff5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61036b82610342565b9050919050565b61037b81610361565b8114610385575f80fd5b50565b5f8151905061039681610372565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6103ea826103a4565b810181811067ffffffffffffffff82111715610409576104086103b4565b5b80604052505050565b5f61041b610331565b905061042782826103e1565b919050565b5f67ffffffffffffffff821115610446576104456103b4565b5b61044f826103a4565b9050602081019050919050565b5f5b8381101561047957808201518184015260208101905061045e565b5f8484015250505050565b5f6104966104918461042c565b610412565b9050828152602081018484840111156104b2576104b16103a0565b5b6104bd84828561045c565b509392505050565b5f82601f8301126104d9576104d861039c565b5b81516104e9848260208601610484565b91505092915050565b5f80604083850312156105085761050761033a565b5b5f61051585828601610388565b925050602083015167ffffffffffffffff8111156105365761053561033e565b5b610542858286016104c5565b9150509250929050565b61055581610361565b82525050565b5f60208201905061056e5f83018461054c565b92915050565b5f81519050919050565b5f81905092915050565b5f61059282610574565b61059c818561057e565b93506105ac81856020860161045c565b80840191505092915050565b5f6105c38284610588565b915081905092915050565b60d4806105da5f395ff3fe6080604052600a600c565b005b60186014601a565b6026565b565b5f60216044565b905090565b365f80375f80365f845af43d5f803e805f81146040573d5ff35b3d5ffd5b5f606e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b6095565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81905091905056fea26469706673582212204445ca1d654fe96658df00412cf9c7bcb1fdfaf66f39f4eb3c6a802907e7966864736f6c63430008150033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x6AE CODESIZE SUB DUP1 PUSH2 0x6AE DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x25 SWAP2 SWAP1 PUSH2 0x4F2 JUMP JUMPDEST PUSH2 0x35 DUP3 DUP3 PUSH2 0x3C PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP PUSH2 0x5CE JUMP JUMPDEST PUSH2 0x4B DUP3 PUSH2 0xC0 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH0 DUP2 MLOAD GT ISZERO PUSH2 0xAD JUMPI PUSH2 0xA7 DUP3 DUP3 PUSH2 0x18F PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH2 0xBC JUMP JUMPDEST PUSH2 0xBB PUSH2 0x215 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH2 0x11B JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x112 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x14D PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH0 SHL PUSH2 0x251 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x1B8 SWAP2 SWAP1 PUSH2 0x5B8 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1F0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1F5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x20B DUP6 DUP4 DUP4 PUSH2 0x25A PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLVALUE GT ISZERO PUSH2 0x24F JUMPI PUSH1 0x40 MLOAD PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x275 JUMPI PUSH2 0x270 DUP3 PUSH2 0x2ED PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x2E5 JUMP JUMPDEST PUSH0 DUP3 MLOAD EQ DUP1 ISZERO PUSH2 0x29B JUMPI POP PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST ISZERO PUSH2 0x2DD JUMPI DUP4 PUSH1 0x40 MLOAD PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D4 SWAP2 SWAP1 PUSH2 0x55B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP1 POP PUSH2 0x2E6 JUMP JUMPDEST JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD GT ISZERO PUSH2 0x2FF JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x36B DUP3 PUSH2 0x342 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x37B DUP2 PUSH2 0x361 JUMP JUMPDEST DUP2 EQ PUSH2 0x385 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x396 DUP2 PUSH2 0x372 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x3EA DUP3 PUSH2 0x3A4 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x409 JUMPI PUSH2 0x408 PUSH2 0x3B4 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x41B PUSH2 0x331 JUMP JUMPDEST SWAP1 POP PUSH2 0x427 DUP3 DUP3 PUSH2 0x3E1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x446 JUMPI PUSH2 0x445 PUSH2 0x3B4 JUMP JUMPDEST JUMPDEST PUSH2 0x44F DUP3 PUSH2 0x3A4 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x479 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x45E JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x496 PUSH2 0x491 DUP5 PUSH2 0x42C JUMP JUMPDEST PUSH2 0x412 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x4B2 JUMPI PUSH2 0x4B1 PUSH2 0x3A0 JUMP JUMPDEST JUMPDEST PUSH2 0x4BD DUP5 DUP3 DUP6 PUSH2 0x45C JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4D9 JUMPI PUSH2 0x4D8 PUSH2 0x39C JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x4E9 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x484 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x508 JUMPI PUSH2 0x507 PUSH2 0x33A JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x515 DUP6 DUP3 DUP7 ADD PUSH2 0x388 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x536 JUMPI PUSH2 0x535 PUSH2 0x33E JUMP JUMPDEST JUMPDEST PUSH2 0x542 DUP6 DUP3 DUP7 ADD PUSH2 0x4C5 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x555 DUP2 PUSH2 0x361 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x56E PUSH0 DUP4 ADD DUP5 PUSH2 0x54C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x592 DUP3 PUSH2 0x574 JUMP JUMPDEST PUSH2 0x59C DUP2 DUP6 PUSH2 0x57E JUMP JUMPDEST SWAP4 POP PUSH2 0x5AC DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x45C JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5C3 DUP3 DUP5 PUSH2 0x588 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xD4 DUP1 PUSH2 0x5DA PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x26 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x21 PUSH1 0x44 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY DUP1 PUSH0 DUP2 EQ PUSH1 0x40 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x6E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH0 SHL PUSH1 0x95 JUMP JUMPDEST PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PREVRANDAO GASLIMIT 0xCA SAR PUSH6 0x4FE96658DF00 COINBASE 0x2C 0xF9 0xC7 0xBC 0xB1 REVERT STATICCALL 0xF6 PUSH16 0x39F4EB3C6A802907E7966864736F6C63 NUMBER STOP ADDMOD ISZERO STOP CALLER ",
"sourceMap": "599:1116:0:-:0;;;1080:133;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1154:52;1184:14;1200:5;1154:29;;;:52;;:::i;:::-;1080:133;;599:1116;;2779:335:1;2870:37;2889:17;2870:18;;;:37;;:::i;:::-;2931:17;2922:27;;;;;;;;;;;;2978:1;2964:4;:11;:15;2960:148;;;2995:53;3024:17;3043:4;2995:28;;;:53;;:::i;:::-;;2960:148;;;3079:18;:16;;;:18;;:::i;:::-;2960:148;2779:335;;:::o;2186:281::-;2296:1;2263:17;:29;;;:34;2259:119;;2349:17;2320:47;;;;;;;;;;;:::i;:::-;;;;;;;;2259:119;2443:17;2387:47;1327:66;2414:19;;2387:26;;;:47;;:::i;:::-;:53;;;:73;;;;;;;;;;;;;;;;;;2186:281;:::o;4106:253:4:-;4189:12;4214;4228:23;4255:6;:19;;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;;;:55;;:::i;:::-;4290:62;;;;4106:253;;;;:::o;6598:122:1:-;6660:1;6648:9;:13;6644:70;;;6684:19;;;;;;;;;;;;;;6644:70;6598:122::o;1684:190:5:-;1745:21;1854:4;1844:14;;1684:190;;;:::o;4625:582:4:-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;;;:19;;:::i;:::-;4793:408;;;5066:1;5045:10;:17;:22;:49;;;;;5093:1;5071:6;:18;;;:23;5045:49;5041:119;;;5138:6;5121:24;;;;;;;;;;;:::i;:::-;;;;;;;;5041:119;5180:10;5173:17;;;;4793:408;4625:582;;;;;;:::o;5743:516::-;5894:1;5874:10;:17;:21;5870:383;;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;;;;;;;;;;;;;7:75:6;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:117::-;954:1;951;944:12;968:117;1077:1;1074;1067:12;1091:102;1132:6;1183:2;1179:7;1174:2;1167:5;1163:14;1159:28;1149:38;;1091:102;;;:::o;1199:180::-;1247:77;1244:1;1237:88;1344:4;1341:1;1334:15;1368:4;1365:1;1358:15;1385:281;1468:27;1490:4;1468:27;:::i;:::-;1460:6;1456:40;1598:6;1586:10;1583:22;1562:18;1550:10;1547:34;1544:62;1541:88;;;1609:18;;:::i;:::-;1541:88;1649:10;1645:2;1638:22;1428:238;1385:281;;:::o;1672:129::-;1706:6;1733:20;;:::i;:::-;1723:30;;1762:33;1790:4;1782:6;1762:33;:::i;:::-;1672:129;;;:::o;1807:307::-;1868:4;1958:18;1950:6;1947:30;1944:56;;;1980:18;;:::i;:::-;1944:56;2018:29;2040:6;2018:29;:::i;:::-;2010:37;;2102:4;2096;2092:15;2084:23;;1807:307;;;:::o;2120:246::-;2201:1;2211:113;2225:6;2222:1;2219:13;2211:113;;;2310:1;2305:3;2301:11;2295:18;2291:1;2286:3;2282:11;2275:39;2247:2;2244:1;2240:10;2235:15;;2211:113;;;2358:1;2349:6;2344:3;2340:16;2333:27;2182:184;2120:246;;;:::o;2372:432::-;2460:5;2485:65;2501:48;2542:6;2501:48;:::i;:::-;2485:65;:::i;:::-;2476:74;;2573:6;2566:5;2559:21;2611:4;2604:5;2600:16;2649:3;2640:6;2635:3;2631:16;2628:25;2625:112;;;2656:79;;:::i;:::-;2625:112;2746:52;2791:6;2786:3;2781;2746:52;:::i;:::-;2466:338;2372:432;;;;;:::o;2823:353::-;2889:5;2938:3;2931:4;2923:6;2919:17;2915:27;2905:122;;2946:79;;:::i;:::-;2905:122;3056:6;3050:13;3081:89;3166:3;3158:6;3151:4;3143:6;3139:17;3081:89;:::i;:::-;3072:98;;2895:281;2823:353;;;;:::o;3182:678::-;3270:6;3278;3327:2;3315:9;3306:7;3302:23;3298:32;3295:119;;;3333:79;;:::i;:::-;3295:119;3453:1;3478:64;3534:7;3525:6;3514:9;3510:22;3478:64;:::i;:::-;3468:74;;3424:128;3612:2;3601:9;3597:18;3591:25;3643:18;3635:6;3632:30;3629:117;;;3665:79;;:::i;:::-;3629:117;3770:73;3835:7;3826:6;3815:9;3811:22;3770:73;:::i;:::-;3760:83;;3562:291;3182:678;;;;;:::o;3866:118::-;3953:24;3971:5;3953:24;:::i;:::-;3948:3;3941:37;3866:118;;:::o;3990:222::-;4083:4;4121:2;4110:9;4106:18;4098:26;;4134:71;4202:1;4191:9;4187:17;4178:6;4134:71;:::i;:::-;3990:222;;;;:::o;4218:98::-;4269:6;4303:5;4297:12;4287:22;;4218:98;;;:::o;4322:147::-;4423:11;4460:3;4445:18;;4322:147;;;;:::o;4475:386::-;4579:3;4607:38;4639:5;4607:38;:::i;:::-;4661:88;4742:6;4737:3;4661:88;:::i;:::-;4654:95;;4758:65;4816:6;4811:3;4804:4;4797:5;4793:16;4758:65;:::i;:::-;4848:6;4843:3;4839:16;4832:23;;4583:278;4475:386;;;;:::o;4867:271::-;4997:3;5019:93;5108:3;5099:6;5019:93;:::i;:::-;5012:100;;5129:3;5122:10;;4867:271;;;;:::o;599:1116:0:-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_375": {
"entryPoint": null,
"id": 375,
"parameterSlots": 0,
"returnSlots": 0
},
"@_delegate_351": {
"entryPoint": 38,
"id": 351,
"parameterSlots": 1,
"returnSlots": 0
},
"@_fallback_367": {
"entryPoint": 12,
"id": 367,
"parameterSlots": 0,
"returnSlots": 0
},
"@_implementation_36": {
"entryPoint": 26,
"id": 36,
"parameterSlots": 0,
"returnSlots": 1
},
"@getAddressSlot_671": {
"entryPoint": 149,
"id": 671,
"parameterSlots": 1,
"returnSlots": 1
},
"@getImplementation_98": {
"entryPoint": 68,
"id": 98,
"parameterSlots": 0,
"returnSlots": 1
}
},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600a600c565b005b60186014601a565b6026565b565b5f60216044565b905090565b365f80375f80365f845af43d5f803e805f81146040573d5ff35b3d5ffd5b5f606e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b6095565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81905091905056fea26469706673582212204445ca1d654fe96658df00412cf9c7bcb1fdfaf66f39f4eb3c6a802907e7966864736f6c63430008150033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x26 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x21 PUSH1 0x44 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY DUP1 PUSH0 DUP2 EQ PUSH1 0x40 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x6E PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH0 SHL PUSH1 0x95 JUMP JUMPDEST PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PREVRANDAO GASLIMIT 0xCA SAR PUSH6 0x4FE96658DF00 COINBASE 0x2C 0xF9 0xC7 0xBC 0xB1 REVERT STATICCALL 0xF6 PUSH16 0x39F4EB3C6A802907E7966864736F6C63 NUMBER STOP ADDMOD ISZERO STOP CALLER ",
"sourceMap": "599:1116:0:-:0;;;2649:11:2;:9;:11::i;:::-;599:1116:0;2323:83:2;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;:::-;2323:83::o;1581:132:0:-;1648:7;1674:32;:30;:32::i;:::-;1667:39;;1581:132;:::o;949:895:2:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1687:1;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27;1957:138:1;2009:7;2035:47;1327:66;2062:19;;2035:26;:47::i;:::-;:53;;;;;;;;;;;;2028:60;;1957:138;:::o;1684:190:5:-;1745:21;1854:4;1844:14;;1684:190;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "42400",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"": "infinite"
},
"internal": {
"_implementation()": "2243"
}
},
"methodIdentifiers": {}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"stateMutability": "payable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"stateMutability": "payable",
"type": "fallback"
}
]
}
{
"compiler": {
"version": "0.8.21+commit.d9974bed"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"stateMutability": "payable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"stateMutability": "payable",
"type": "fallback"
}
],
"devdoc": {
"details": "This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.",
"errors": {
"AddressEmptyCode(address)": [
{
"details": "There's no code at `target` (it is not a contract)."
}
],
"ERC1967InvalidImplementation(address)": [
{
"details": "The `implementation` of the proxy is invalid."
}
],
"ERC1967NonPayable()": [
{
"details": "An upgrade function sees `msg.value > 0` that may be lost."
}
],
"FailedInnerCall()": [
{
"details": "A call to an address target failed. The target may have reverted."
}
]
},
"events": {
"Upgraded(address)": {
"details": "Emitted when the implementation is upgraded."
}
},
"kind": "dev",
"methods": {
"constructor": {
"details": "Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero."
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol": "ERC1967Proxy"
},
"evmVersion": "shanghai",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol": {
"keccak256": "0xbfb6695731de677140fbf76c772ab08c4233a122fb51ac28ac120fc49bbbc4ec",
"license": "MIT",
"urls": [
"bzz-raw://68f8fded7cc318efa15874b7c6a983fe17a4a955d72d240353a9a4ca1e1b824c",
"dweb:/ipfs/QmdcmBL9Qo4Tk3Dby4wFYabGyot9JNeLPxpSXZUgUm92BV"
]
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol": {
"keccak256": "0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65",
"license": "MIT",
"urls": [
"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a",
"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE"
]
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/Proxy.sol": {
"keccak256": "0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd",
"license": "MIT",
"urls": [
"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac",
"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"
]
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol": {
"keccak256": "0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c",
"license": "MIT",
"urls": [
"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa",
"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"
]
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/Address.sol": {
"keccak256": "0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721",
"license": "MIT",
"urls": [
"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245",
"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"
]
},
"github/OpenZeppelin/openzeppelin-contracts/contracts/utils/StorageSlot.sol": {
"keccak256": "0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418",
"license": "MIT",
"urls": [
"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c",
"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"
]
}
},
"version": 1
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Proxy.sol)
pragma solidity ^0.8.20;
import {Proxy} from "../Proxy.sol";
import {ERC1967Utils} from "./ERC1967Utils.sol";
/**
* @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an
* implementation address that can be changed. This address is stored in storage in the location specified by
* https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the
* implementation behind the proxy.
*/
contract ERC1967Proxy is Proxy {
/**
* @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.
*
* If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an
* encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.
*
* Requirements:
*
* - If `data` is empty, `msg.value` must be zero.
*/
constructor(address implementation, bytes memory _data) payable {
ERC1967Utils.upgradeToAndCall(implementation, _data);
}
/**
* @dev Returns the current implementation address.
*
* TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using
* the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
* `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`
*/
function _implementation() internal view virtual override returns (address) {
return ERC1967Utils.getImplementation();
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)
pragma solidity ^0.8.20;
import {IBeacon} from "../beacon/IBeacon.sol";
import {Address} from "../../utils/Address.sol";
import {StorageSlot} from "../../utils/StorageSlot.sol";
/**
* @dev This abstract contract provides getters and event emitting update functions for
* https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.
*/
library ERC1967Utils {
// We re-declare ERC-1967 events here because they can't be used directly from IERC1967.
// This will be fixed in Solidity 0.8.21. At that point we should remove these events.
/**
* @dev Emitted when the implementation is upgraded.
*/
event Upgraded(address indexed implementation);
/**
* @dev Emitted when the admin account has changed.
*/
event AdminChanged(address previousAdmin, address newAdmin);
/**
* @dev Emitted when the beacon is changed.
*/
event BeaconUpgraded(address indexed beacon);
/**
* @dev Storage slot with the address of the current implementation.
* This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1.
*/
// solhint-disable-next-line private-vars-leading-underscore
bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
/**
* @dev The `implementation` of the proxy is invalid.
*/
error ERC1967InvalidImplementation(address implementation);
/**
* @dev The `admin` of the proxy is invalid.
*/
error ERC1967InvalidAdmin(address admin);
/**
* @dev The `beacon` of the proxy is invalid.
*/
error ERC1967InvalidBeacon(address beacon);
/**
* @dev An upgrade function sees `msg.value > 0` that may be lost.
*/
error ERC1967NonPayable();
/**
* @dev Returns the current implementation address.
*/
function getImplementation() internal view returns (address) {
return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;
}
/**
* @dev Stores a new address in the EIP1967 implementation slot.
*/
function _setImplementation(address newImplementation) private {
if (newImplementation.code.length == 0) {
revert ERC1967InvalidImplementation(newImplementation);
}
StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;
}
/**
* @dev Performs implementation upgrade with additional setup call if data is nonempty.
* This function is payable only if the setup call is performed, otherwise `msg.value` is rejected
* to avoid stuck value in the contract.
*
* Emits an {IERC1967-Upgraded} event.
*/
function upgradeToAndCall(address newImplementation, bytes memory data) internal {
_setImplementation(newImplementation);
emit Upgraded(newImplementation);
if (data.length > 0) {
Address.functionDelegateCall(newImplementation, data);
} else {
_checkNonPayable();
}
}
/**
* @dev Storage slot with the admin of the contract.
* This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1.
*/
// solhint-disable-next-line private-vars-leading-underscore
bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;
/**
* @dev Returns the current admin.
*
* TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using
* the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
* `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`
*/
function getAdmin() internal view returns (address) {
return StorageSlot.getAddressSlot(ADMIN_SLOT).value;
}
/**
* @dev Stores a new address in the EIP1967 admin slot.
*/
function _setAdmin(address newAdmin) private {
if (newAdmin == address(0)) {
revert ERC1967InvalidAdmin(address(0));
}
StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;
}
/**
* @dev Changes the admin of the proxy.
*
* Emits an {IERC1967-AdminChanged} event.
*/
function changeAdmin(address newAdmin) internal {
emit AdminChanged(getAdmin(), newAdmin);
_setAdmin(newAdmin);
}
/**
* @dev 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.
*/
// solhint-disable-next-line private-vars-leading-underscore
bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;
/**
* @dev Returns the current beacon.
*/
function getBeacon() internal view returns (address) {
return StorageSlot.getAddressSlot(BEACON_SLOT).value;
}
/**
* @dev Stores a new beacon in the EIP1967 beacon slot.
*/
function _setBeacon(address newBeacon) private {
if (newBeacon.code.length == 0) {
revert ERC1967InvalidBeacon(newBeacon);
}
StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;
address beaconImplementation = IBeacon(newBeacon).implementation();
if (beaconImplementation.code.length == 0) {
revert ERC1967InvalidImplementation(beaconImplementation);
}
}
/**
* @dev Change the beacon and trigger a setup call if data is nonempty.
* This function is payable only if the setup call is performed, otherwise `msg.value` is rejected
* to avoid stuck value in the contract.
*
* Emits an {IERC1967-BeaconUpgraded} event.
*
* CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since
* it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for
* efficiency.
*/
function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {
_setBeacon(newBeacon);
emit BeaconUpgraded(newBeacon);
if (data.length > 0) {
Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);
} else {
_checkNonPayable();
}
}
/**
* @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract
* if an upgrade doesn't perform an initialization call.
*/
function _checkNonPayable() private {
if (msg.value > 0) {
revert ERC1967NonPayable();
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)
pragma solidity ^0.8.20;
/**
* @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM
* instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to
* be specified by overriding the virtual {_implementation} function.
*
* Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a
* different contract through the {_delegate} function.
*
* The success and return data of the delegated call will be returned back to the caller of the proxy.
*/
abstract contract Proxy {
/**
* @dev Delegates the current call to `implementation`.
*
* This function does not return to its internal call site, it will return directly to the external caller.
*/
function _delegate(address implementation) internal virtual {
assembly {
// Copy msg.data. We take full control of memory in this inline assembly
// block because it will not return to Solidity code. We overwrite the
// Solidity scratch pad at memory position 0.
calldatacopy(0, 0, calldatasize())
// Call the implementation.
// out and outsize are 0 because we don't know the size yet.
let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)
// Copy the returned data.
returndatacopy(0, 0, returndatasize())
switch result
// delegatecall returns 0 on error.
case 0 {
revert(0, returndatasize())
}
default {
return(0, returndatasize())
}
}
}
/**
* @dev This is a virtual function that should be overridden so it returns the address to which the fallback
* function and {_fallback} should delegate.
*/
function _implementation() internal view virtual returns (address);
/**
* @dev Delegates the current call to the address returned by `_implementation()`.
*
* This function does not return to its internal call site, it will return directly to the external caller.
*/
function _fallback() internal virtual {
_delegate(_implementation());
}
/**
* @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other
* function in the contract matches the call data.
*/
fallback() external payable virtual {
_fallback();
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)
pragma solidity ^0.8.20;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev The ETH balance of the account is not enough to perform the operation.
*/
error AddressInsufficientBalance(address account);
/**
* @dev There's no code at `target` (it is not a contract).
*/
error AddressEmptyCode(address target);
/**
* @dev A call to an address target failed. The target may have reverted.
*/
error FailedInnerCall();
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
if (address(this).balance < amount) {
revert AddressInsufficientBalance(address(this));
}
(bool success, ) = recipient.call{value: amount}("");
if (!success) {
revert FailedInnerCall();
}
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason or custom error, it is bubbled
* up by this function (like regular Solidity function calls). However, if
* the call reverted with no returned reason, this function reverts with a
* {FailedInnerCall} error.
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*/
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
if (address(this).balance < value) {
revert AddressInsufficientBalance(address(this));
}
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, success, returndata);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, success, returndata);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResultFromTarget(target, success, returndata);
}
/**
* @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target
* was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an
* unsuccessful call.
*/
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata
) internal view returns (bytes memory) {
if (!success) {
_revert(returndata);
} else {
// only check if target is a contract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
if (returndata.length == 0 && target.code.length == 0) {
revert AddressEmptyCode(target);
}
return returndata;
}
}
/**
* @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the
* revert reason or with a default {FailedInnerCall} error.
*/
function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {
if (!success) {
_revert(returndata);
} else {
return returndata;
}
}
/**
* @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.
*/
function _revert(bytes memory returndata) private pure {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert FailedInnerCall();
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)
// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.
pragma solidity ^0.8.20;
/**
* @dev Library for reading and writing primitive types to specific storage slots.
*
* Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.
* This library helps with reading and writing to such slots without the need for inline assembly.
*
* The functions in this library return Slot structs that contain a `value` member that can be used to read or write.
*
* Example usage to set ERC1967 implementation slot:
* ```solidity
* contract ERC1967 {
* bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
*
* function _getImplementation() internal view returns (address) {
* return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
* }
*
* function _setImplementation(address newImplementation) internal {
* require(newImplementation.code.length > 0);
* StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
* }
* }
* ```
*/
library StorageSlot {
struct AddressSlot {
address value;
}
struct BooleanSlot {
bool value;
}
struct Bytes32Slot {
bytes32 value;
}
struct Uint256Slot {
uint256 value;
}
struct StringSlot {
string value;
}
struct BytesSlot {
bytes value;
}
/**
* @dev Returns an `AddressSlot` with member `value` located at `slot`.
*/
function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `BooleanSlot` with member `value` located at `slot`.
*/
function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `Bytes32Slot` with member `value` located at `slot`.
*/
function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `Uint256Slot` with member `value` located at `slot`.
*/
function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `StringSlot` with member `value` located at `slot`.
*/
function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `StringSlot` representation of the string storage pointer `store`.
*/
function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := store.slot
}
}
/**
* @dev Returns an `BytesSlot` with member `value` located at `slot`.
*/
function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.
*/
function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {
/// @solidity memory-safe-assembly
assembly {
r.slot := store.slot
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment