de28fc7d-facb-4a24-99e8-e7bf8312fa97
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 30899 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 94405 | artifact.fetch | failed | 1 / 3 | 1 week ago |
| 94406 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 94407 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 94408 | capability.graph | complete | 1 / 3 | 1 week ago |
| 94409 | detector.run | complete | 1 / 3 | 1 week ago |
| 94410 | validation.fork | complete | 1 / 3 | 1 week ago |
| 113788 | tool.slither | complete | 1 / 2 | 1 week ago |
'forge clean' running (wd: /tmp/slither-6kdtvjq8)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-6kdtvjq8)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#123-202) has bitwise-xor operator ^ instead of the exponentiation operator **:
- inverse = (3 * denominator) ^ 2 (node_modules/@openzeppelin/contracts/utils/math/Math.sol#184)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-exponentiation
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#169)
- inverse = (3 * denominator) ^ 2 (node_modules/@openzeppelin/contracts/utils/math/Math.sol#184)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#169)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#188)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#169)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#189)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#169)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#190)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#169)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#191)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#169)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#192)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#169)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#193)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#123-202) performs a multiplication on the result of a division:
- prod0 = prod0 / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#172)
- result = prod0 * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#199)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply
Reentrancy in L1OpUSDCBridgeAdapter.burnLockedUSDC() (src/contracts/L1OpUSDCBridgeAdapter.sol#113-137):
External calls:
- IUSDC(USDC).burn(_burnAmount) (src/contracts/L1OpUSDCBridgeAdapter.sol#130)
State variables written after the call(s):
- burnAmount = 0 (src/contracts/L1OpUSDCBridgeAdapter.sol#134)
L1OpUSDCBridgeAdapter.burnAmount (src/contracts/L1OpUSDCBridgeAdapter.sol#22) can be used in cross function reentrancies:
- L1OpUSDCBridgeAdapter.burnAmount (src/contracts/L1OpUSDCBridgeAdapter.sol#22)
- L1OpUSDCBridgeAdapter.burnLockedUSDC() (src/contracts/L1OpUSDCBridgeAdapter.sol#113-137)
- L1OpUSDCBridgeAdapter.setBurnAmount(uint256) (src/contracts/L1OpUSDCBridgeAdapter.sol#100-107)
- burnCaller = address(0) (src/contracts/L1OpUSDCBridgeAdapter.sol#135)
L1OpUSDCBridgeAdapter.burnCaller (src/contracts/L1OpUSDCBridgeAdapter.sol#25) can be used in cross function reentrancies:
- L1OpUSDCBridgeAdapter.burnCaller (src/contracts/L1OpUSDCBridgeAdapter.sol#25)
- L1OpUSDCBridgeAdapter.burnLockedUSDC() (src/contracts/L1OpUSDCBridgeAdapter.sol#113-137)
- L1OpUSDCBridgeAdapter.migrateToNative(address,address,uint32,uint32) (src/contracts/L1OpUSDCBridgeAdapter.sol#68-93)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1
ERC1967Utils.upgradeToAndCall(address,bytes) (node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol#83-92) ignores return value by Address.functionDelegateCall(newImplementation,data) (node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol#88)
ERC1967Utils.upgradeBeaconToAndCall(address,bytes) (node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol#173-182) ignores return value by Address.functionDelegateCall(IBeacon(newBeacon).implementation(),data) (node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol#178)
SignatureChecker.isValidSignatureNow(address,bytes32,bytes) (node_modules/@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol#22-27) ignores return value by (recovered,error,None) = ECDSA.tryRecover(hash,signature) (node_modules/@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol#23)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
FallbackProxyAdmin.constructor(address)._usdc (src/contracts/utils/FallbackProxyAdmin.sol#23) lacks a zero-check on :
- USDC = _usdc (src/contracts/utils/FallbackProxyAdmin.sol#24)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
Reentrancy in L1OpUSDCBridgeAdapter.receiveMessage(address,address,uint256) (src/contracts/L1OpUSDCBridgeAdapter.sol#260-269):
External calls:
- this.attemptTransfer(_user,_amount) (src/contracts/L1OpUSDCBridgeAdapter.sol#262-268)
State variables written after the call(s):
- lockedFundsDetails[_spender][_user] += _amount (src/contracts/L1OpUSDCBridgeAdapter.sol#266)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2
Reentrancy in L1OpUSDCBridgeAdapter._sendMessage(address,address,uint256,uint32) (src/contracts/L1OpUSDCBridgeAdapter.sol#324-334):
External calls:
- IUSDC(USDC).safeTransferFrom(_from,address(this),_amount) (src/contracts/L1OpUSDCBridgeAdapter.sol#326)
- ICrossDomainMessenger(MESSENGER).sendMessage(LINKED_ADAPTER,abi.encodeCall(IOpUSDCBridgeAdapter.receiveMessage,(_to,_from,_amount)),_minGasLimit) (src/contracts/L1OpUSDCBridgeAdapter.sol#329-331)
Event emitted after the call(s):
- MessageSent(_from,_to,_amount,MESSENGER,_minGasLimit) (src/contracts/L1OpUSDCBridgeAdapter.sol#333)
Reentrancy in L1OpUSDCBridgeAdapter.burnLockedUSDC() (src/contracts/L1OpUSDCBridgeAdapter.sol#113-137):
External calls:
- IUSDC(USDC).burn(_burnAmount) (src/contracts/L1OpUSDCBridgeAdapter.sol#130)
Event emitted after the call(s):
- MigrationComplete(_burnAmount) (src/contracts/L1OpUSDCBridgeAdapter.sol#136)
Reentrancy in L1OpUSDCBridgeAdapter.migrateToNative(address,address,uint32,uint32) (src/contracts/L1OpUSDCBridgeAdapter.sol#68-93):
External calls:
- ICrossDomainMessenger(MESSENGER).sendMessage(LINKED_ADAPTER,abi.encodeCall(IL2OpUSDCBridgeAdapter.receiveMigrateToNative,(_roleCaller,_minGasLimitSetBurnAmount)),_minGasLimitReceiveOnL2) (src/contracts/L1OpUSDCBridgeAdapter.sol#86-90)
Event emitted after the call(s):
- MigratingToNative(MESSENGER,_burnCaller) (src/contracts/L1OpUSDCBridgeAdapter.sol#92)
Reentrancy in L1OpUSDCBridgeAdapter.receiveMessage(address,address,uint256) (src/contracts/L1OpUSDCBridgeAdapter.sol#260-269):
External calls:
- this.attemptTransfer(_user,_amount) (src/contracts/L1OpUSDCBridgeAdapter.sol#262-268)
Event emitted after the call(s):
- MessageFailed(_spender,_user,_amount,MESSENGER) (src/contracts/L1OpUSDCBridgeAdapter.sol#267)
- MessageReceived(_spender,_user,_amount,MESSENGER) (src/contracts/L1OpUSDCBridgeAdapter.sol#263)
Reentrancy in L1OpUSDCBridgeAdapter.receiveWithdrawLockedFundsPostMigration(address,uint256) (src/contracts/L1OpUSDCBridgeAdapter.sol#277-284):
External calls:
- IUSDC(USDC).safeTransfer(_spender,_amount) (src/contracts/L1OpUSDCBridgeAdapter.sol#281)
Event emitted after the call(s):
- LockedFundsWithdrawn(_spender,_amount) (src/contracts/L1OpUSDCBridgeAdapter.sol#283)
Reentrancy in L1OpUSDCBridgeAdapter.resumeMessaging(uint32) (src/contracts/L1OpUSDCBridgeAdapter.sol#170-184):
External calls:
- ICrossDomainMessenger(MESSENGER).sendMessage(LINKED_ADAPTER,abi.encodeCall(IL2OpUSDCBridgeAdapter.receiveResumeMessaging,()),_minGasLimit) (src/contracts/L1OpUSDCBridgeAdapter.sol#179-181)
Event emitted after the call(s):
- MessagingResumed(MESSENGER) (src/contracts/L1OpUSDCBridgeAdapter.sol#183)
Reentrancy in L1OpUSDCBridgeAdapter.stopMessaging(uint32) (src/contracts/L1OpUSDCBridgeAdapter.sol#148-162):
External calls:
- ICrossDomainMessenger(MESSENGER).sendMessage(LINKED_ADAPTER,abi.encodeCall(IL2OpUSDCBridgeAdapter.receiveStopMessaging,()),_minGasLimit) (src/contracts/L1OpUSDCBridgeAdapter.sol#157-159)
Event emitted after the call(s):
- MessagingStopped(MESSENGER) (src/contracts/L1OpUSDCBridgeAdapter.sol#161)
Reentrancy in L1OpUSDCBridgeAdapter.withdrawLockedFunds(address,address) (src/contracts/L1OpUSDCBridgeAdapter.sol#291-299):
External calls:
- IUSDC(USDC).safeTransfer(_user,_amount) (src/contracts/L1OpUSDCBridgeAdapter.sol#296)
Event emitted after the call(s):
- LockedFundsWithdrawn(_user,_amount) (src/contracts/L1OpUSDCBridgeAdapter.sol#298)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
L1OpUSDCBridgeAdapter.sendMessage(address,address,uint256,bytes,uint256,uint256,uint32) (src/contracts/L1OpUSDCBridgeAdapter.sol#218-250) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp > _deadline (src/contracts/L1OpUSDCBridgeAdapter.sol#239)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
Address._revert(bytes) (node_modules/@openzeppelin/contracts/utils/Address.sol#146-158) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Address.sol#151-154)
StorageSlot.getAddressSlot(bytes32) (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#59-64) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#61-63)
StorageSlot.getBooleanSlot(bytes32) (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#69-74) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#71-73)
StorageSlot.getBytes32Slot(bytes32) (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#79-84) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#81-83)
StorageSlot.getUint256Slot(bytes32) (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#89-94) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#91-93)
StorageSlot.getStringSlot(bytes32) (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#99-104) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#101-103)
StorageSlot.getStringSlot(string) (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#109-114) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#111-113)
StorageSlot.getBytesSlot(bytes32) (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#119-124) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#121-123)
StorageSlot.getBytesSlot(bytes) (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#129-134) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#131-133)
Strings.toString(uint256) (node_modules/@openzeppelin/contracts/utils/Strings.sol#24-44) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Strings.sol#30-32)
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Strings.sol#36-38)
ECDSA.tryRecover(bytes32,bytes) (node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol#56-73) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol#64-68)
MessageHashUtils.toEthSignedMessageHash(bytes32) (node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol#30-37) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol#32-36)
MessageHashUtils.toTypedDataHash(bytes32,bytes32) (node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol#76-85) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol#78-84)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#123-202) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#130-133)
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#154-161)
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#167-176)
OwnableUpgradeable._getOwnableStorage() (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#30-34) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#31-33)
Initializable._getInitializableStorage() (node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#223-227) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#224-226)
EIP712Upgradeable._getEIP712Storage() (node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol#50-54) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol#51-53)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
2 different versions of Solidity are used:
- Version constraint ^0.8.20 is used by:
-^0.8.20 (node_modules/@openzeppelin/contracts/access/Ownable.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/IERC1271.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/utils/Address.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/utils/Context.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#5)
-^0.8.20 (node_modules/@openzeppelin/contracts/utils/Strings.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/utils/math/Math.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol#4)
- Version constraint 0.8.25 is used by:
-0.8.25 (src/contracts/L1OpUSDCBridgeAdapter.sol#2)
-0.8.25 (src/contracts/universal/OpUSDCBridgeAdapter.sol#2)
-0.8.25 (src/contracts/utils/FallbackProxyAdmin.sol#2)
-0.8.25 (src/interfaces/IL1OpUSDCBridgeAdapter.sol#2)
-0.8.25 (src/interfaces/IL2OpUSDCBridgeAdapter.sol#2)
-0.8.25 (src/interfaces/IOpUSDCBridgeAdapter.sol#2)
-0.8.25 (src/interfaces/external/ICrossDomainMessenger.sol#1)
-0.8.25 (src/interfaces/external/IUSDC.sol#2)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used
Version constraint ^0.8.20 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- VerbatimInvalidDeduplication
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess.
It is used by:
- ^0.8.20 (node_modules/@openzeppelin/contracts/access/Ownable.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/IERC1271.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/Address.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/Context.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/StorageSlot.sol#5)
- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/Strings.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/math/Math.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol#4)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity
Low level call in SafeERC20._callOptionalReturnBool(IERC20,bytes) (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#110-117):
- (success,returndata) = address(token).call(data) (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#115)
Low level call in Address.sendValue(address,uint256) (node_modules/@openzeppelin/contracts/utils/Address.sol#41-50):
- (success,None) = recipient.call{value: amount}() (node_modules/@openzeppelin/contracts/utils/Address.sol#46)
Low level call in Address.functionCallWithValue(address,bytes,uint256) (node_modules/@openzeppelin/contracts/utils/Address.sol#83-89):
- (success,returndata) = target.call{value: value}(data) (node_modules/@openzeppelin/contracts/utils/Address.sol#87)
Low level call in Address.functionStaticCall(address,bytes) (node_modules/@openzeppelin/contracts/utils/Address.sol#95-98):
- (success,returndata) = target.staticcall(data) (node_modules/@openzeppelin/contracts/utils/Address.sol#96)
Low level call in Address.functionDelegateCall(address,bytes) (node_modules/@openzeppelin/contracts/utils/Address.sol#104-107):
- (success,returndata) = target.delegatecall(data) (node_modules/@openzeppelin/contracts/utils/Address.sol#105)
Low level call in SignatureChecker.isValidERC1271SignatureNow(address,bytes32,bytes) (node_modules/@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol#36-47):
- (success,result) = signer.staticcall(abi.encodeCall(IERC1271.isValidSignature,(hash,signature))) (node_modules/@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol#41-43)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
Function IERC20Permit.DOMAIN_SEPARATOR() (node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol#89) is not in mixedCase
Function OwnableUpgradeable.__Ownable_init(address) (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#51-53) is not in mixedCase
Function OwnableUpgradeable.__Ownable_init_unchained(address) (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#55-60) is not in mixedCase
Constant OwnableUpgradeable.OwnableStorageLocation (node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol#28) is not in UPPER_CASE_WITH_UNDERSCORES
Function UUPSUpgradeable.__UUPSUpgradeable_init() (node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol#65-66) is not in mixedCase
Function UUPSUpgradeable.__UUPSUpgradeable_init_unchained() (node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol#68-69) is not in mixedCase
Variable UUPSUpgradeable.__self (node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol#22) is not in mixedCase
Function ContextUpgradeable.__Context_init() (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#18-19) is not in mixedCase
Function ContextUpgradeable.__Context_init_unchained() (node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#21-22) is not in mixedCase
Function EIP712Upgradeable.__EIP712_init(string,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol#68-70) is not in mixedCase
Function EIP712Upgradeable.__EIP712_init_unchained(string,string) (node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol#72-80) is not in mixedCase
Function EIP712Upgradeable._EIP712Name() (node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol#151-154) is not in mixedCase
Function EIP712Upgradeable._EIP712Version() (node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol#162-165) is not in mixedCase
Function EIP712Upgradeable._EIP712NameHash() (node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol#172-187) is not in mixedCase
Function EIP712Upgradeable._EIP712VersionHash() (node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol#194-209) is not in mixedCase
Constant EIP712Upgradeable.EIP712StorageLocation (node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol#48) is not in UPPER_CASE_WITH_UNDERSCORES
Parameter L1OpUSDCBridgeAdapter.initialize(address)._owner (src/contracts/L1OpUSDCBridgeAdapter.sol#49) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.migrateToNative(address,address,uint32,uint32)._roleCaller (src/contracts/L1OpUSDCBridgeAdapter.sol#69) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.migrateToNative(address,address,uint32,uint32)._burnCaller (src/contracts/L1OpUSDCBridgeAdapter.sol#70) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.migrateToNative(address,address,uint32,uint32)._minGasLimitReceiveOnL2 (src/contracts/L1OpUSDCBridgeAdapter.sol#71) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.migrateToNative(address,address,uint32,uint32)._minGasLimitSetBurnAmount (src/contracts/L1OpUSDCBridgeAdapter.sol#72) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.setBurnAmount(uint256)._amount (src/contracts/L1OpUSDCBridgeAdapter.sol#100) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.stopMessaging(uint32)._minGasLimit (src/contracts/L1OpUSDCBridgeAdapter.sol#148) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.resumeMessaging(uint32)._minGasLimit (src/contracts/L1OpUSDCBridgeAdapter.sol#170) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.sendMessage(address,uint256,uint32)._to (src/contracts/L1OpUSDCBridgeAdapter.sol#196) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.sendMessage(address,uint256,uint32)._amount (src/contracts/L1OpUSDCBridgeAdapter.sol#196) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.sendMessage(address,uint256,uint32)._minGasLimit (src/contracts/L1OpUSDCBridgeAdapter.sol#196) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.sendMessage(address,address,uint256,bytes,uint256,uint256,uint32)._signer (src/contracts/L1OpUSDCBridgeAdapter.sol#219) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.sendMessage(address,address,uint256,bytes,uint256,uint256,uint32)._to (src/contracts/L1OpUSDCBridgeAdapter.sol#220) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.sendMessage(address,address,uint256,bytes,uint256,uint256,uint32)._amount (src/contracts/L1OpUSDCBridgeAdapter.sol#221) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.sendMessage(address,address,uint256,bytes,uint256,uint256,uint32)._signature (src/contracts/L1OpUSDCBridgeAdapter.sol#222) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.sendMessage(address,address,uint256,bytes,uint256,uint256,uint32)._nonce (src/contracts/L1OpUSDCBridgeAdapter.sol#223) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.sendMessage(address,address,uint256,bytes,uint256,uint256,uint32)._deadline (src/contracts/L1OpUSDCBridgeAdapter.sol#224) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.sendMessage(address,address,uint256,bytes,uint256,uint256,uint32)._minGasLimit (src/contracts/L1OpUSDCBridgeAdapter.sol#225) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.receiveMessage(address,address,uint256)._user (src/contracts/L1OpUSDCBridgeAdapter.sol#260) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.receiveMessage(address,address,uint256)._spender (src/contracts/L1OpUSDCBridgeAdapter.sol#260) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.receiveMessage(address,address,uint256)._amount (src/contracts/L1OpUSDCBridgeAdapter.sol#260) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.receiveWithdrawLockedFundsPostMigration(address,uint256)._spender (src/contracts/L1OpUSDCBridgeAdapter.sol#277) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.receiveWithdrawLockedFundsPostMigration(address,uint256)._amount (src/contracts/L1OpUSDCBridgeAdapter.sol#277) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.withdrawLockedFunds(address,address)._spender (src/contracts/L1OpUSDCBridgeAdapter.sol#291) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.withdrawLockedFunds(address,address)._user (src/contracts/L1OpUSDCBridgeAdapter.sol#291) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.attemptTransfer(address,uint256)._to (src/contracts/L1OpUSDCBridgeAdapter.sol#309) is not in mixedCase
Parameter L1OpUSDCBridgeAdapter.attemptTransfer(address,uint256)._amount (src/contracts/L1OpUSDCBridgeAdapter.sol#309) is not in mixedCase
Variable L1OpUSDCBridgeAdapter.__gap (src/contracts/L1OpUSDCBridgeAdapter.sol#28) is not in mixedCase
Parameter OpUSDCBridgeAdapter.cancelSignature(uint256)._nonce (src/contracts/universal/OpUSDCBridgeAdapter.sol#123) is not in mixedCase
Variable OpUSDCBridgeAdapter.USDC (src/contracts/universal/OpUSDCBridgeAdapter.sol#21) is not in mixedCase
Variable OpUSDCBridgeAdapter.LINKED_ADAPTER (src/contracts/universal/OpUSDCBridgeAdapter.sol#24) is not in mixedCase
Variable OpUSDCBridgeAdapter.MESSENGER (src/contracts/universal/OpUSDCBridgeAdapter.sol#27) is not in mixedCase
Variable OpUSDCBridgeAdapter.__gap (src/contracts/universal/OpUSDCBridgeAdapter.sol#39) is not in mixedCase
Parameter FallbackProxyAdmin.changeAdmin(address)._newAdmin (src/contracts/utils/FallbackProxyAdmin.sol#33) is not in mixedCase
Parameter FallbackProxyAdmin.upgradeTo(address)._newImplementation (src/contracts/utils/FallbackProxyAdmin.sol#41) is not in mixedCase
Parameter FallbackProxyAdmin.upgradeToAndCall(address,bytes)._newImplementation (src/contracts/utils/FallbackProxyAdmin.sol#50) is not in mixedCase
Parameter FallbackProxyAdmin.upgradeToAndCall(address,bytes)._data (src/contracts/utils/FallbackProxyAdmin.sol#50) is not in mixedCase
Variable FallbackProxyAdmin.USDC (src/contracts/utils/FallbackProxyAdmin.sol#17) is not in mixedCase
Function IL2OpUSDCBridgeAdapter.FALLBACK_PROXY_ADMIN() (src/interfaces/IL2OpUSDCBridgeAdapter.sol#90) is not in mixedCase
Function IOpUSDCBridgeAdapter.USDC() (src/interfaces/IOpUSDCBridgeAdapter.sol#257) is not in mixedCase
Function IOpUSDCBridgeAdapter.LINKED_ADAPTER() (src/interfaces/IOpUSDCBridgeAdapter.sol#264) is not in mixedCase
Function IOpUSDCBridgeAdapter.MESSENGER() (src/interfaces/IOpUSDCBridgeAdapter.sol#271) is not in mixedCase
Function ICrossDomainMessenger.PORTAL() (src/interfaces/external/ICrossDomainMessenger.sol#35) is not in mixedCase
Function IUSDC.initializeV2_1(address) (src/interfaces/external/IUSDC.sol#69) is not in mixedCase
Function IUSDC.initializeV2_2(address[],string) (src/interfaces/external/IUSDC.sol#78) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
L1OpUSDCBridgeAdapter.__gap (src/contracts/L1OpUSDCBridgeAdapter.sol#28) is never used in L1OpUSDCBridgeAdapter (src/contracts/L1OpUSDCBridgeAdapter.sol#18-335)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-state-variable
. analyzed (31 contracts with 100 detectors), 111 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.8.25",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.8.25",
"install_stderr": null,
"install_stdout": "Version '0.8.25' is already installed, skipping..."
},
"solc_args": "--base-path /tmp/slither-6kdtvjq8 --include-path /tmp/slither-6kdtvjq8/lib --include-path /tmp/slither-6kdtvjq8/lib/openzeppelin-contracts --include-path /tmp/slither-6kdtvjq8/node_modules --allow-paths /tmp/slither-6kdtvjq8,/tmp/slither-6kdtvjq8/lib,/tmp/slither-6kdtvjq8/lib/openzeppelin-contracts,/tmp/slither-6kdtvjq8/node_modules,/tmp/slither-6kdtvjq8/src",
"remappings": [
"ds-test/=node_modules/ds-test/src/",
"forge-std/=node_modules/forge-std/src/",
"contracts/=src/contracts/",
"interfaces/=src/interfaces/",
"halmos-cheatcodes/=node_modules/halmos-cheatcodes/src/",
"libraries/=src/libraries/",
"@openzeppelin/=node_modules/@openzeppelin/",
"solhint/=node_modules/solhint/",
"src/=src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/"
],
"source_files": [
"src/contracts/L1OpUSDCBridgeAdapter.sol",
"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
"src/contracts/universal/OpUSDCBridgeAdapter.sol",
"src/interfaces/IL1OpUSDCBridgeAdapter.sol",
"src/interfaces/IL2OpUSDCBridgeAdapter.sol",
"src/interfaces/IOpUSDCBridgeAdapter.sol",
"src/interfaces/external/ICrossDomainMessenger.sol",
"src/interfaces/external/IUSDC.sol",
"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
"node_modules/@openzeppelin/contracts/utils/Address.sol",
"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol",
"node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol",
"node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol",
"node_modules/@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol",
"src/contracts/utils/FallbackProxyAdmin.sol",
"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol",
"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol",
"node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol",
"node_modules/@openzeppelin/contracts/utils/Strings.sol",
"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
"node_modules/@openzeppelin/contracts/interfaces/IERC1271.sol",
"node_modules/@openzeppelin/contracts/access/Ownable.sol",
"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol",
"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol",
"node_modules/@openzeppelin/contracts/utils/math/Math.sol",
"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol",
"node_modules/@openzeppelin/contracts/utils/Context.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 111,
"workspace_hash": "13ee5531a07bdb63a3789cbf96719f5d0d937ce3a2d18930197a6efce14eaa99",
"duration_seconds": 1.4502477645874023,
"solc_version_requested": "0.8.25"
}
[codex:1183286] OpenAI Codex v0.77.0 (research preview)
[codex:1183286] --------
[codex:1183286] workdir: /tmp/codex-multi-hsl50v81
[codex:1183286] model: gpt-5.2-codex
[codex:1183286] provider: openai
[codex:1183286] approval: never
[codex:1183286] sandbox: read-only
[codex:1183286] reasoning effort: xhigh
[codex:1183286] reasoning summaries: auto
[codex:1183286] session id: 019b75e1-6687-72a0-b270-f06c59a4e327
[codex:1183286] --------
[codex:1183286] user
[codex:1183286] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:1183286]
[codex:1183286] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:1183286]
[codex:1183286] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:1183286] - Gas inefficiency, code quality, naming, or best practices
[codex:1183286] - Theoretical vulnerabilities without a clear extraction path
[codex:1183286] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:1183286] - Front-running unless it enables theft beyond MEV
[codex:1183286] - DoS, griefing, or issues that don't result in attacker profit
[codex:1183286] - Missing events, view function issues, or informational findings
[codex:1183286]
[codex:1183286] HIGH-VALUE PATTERNS TO HUNT:
[codex:1183286] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:1183286] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:1183286] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:1183286] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:1183286] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:1183286] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:1183286] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:1183286] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:1183286] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:1183286]
[codex:1183286] For each finding, you MUST provide:
[codex:1183286] 1. Exact file and line numbers of vulnerable code
[codex:1183286] 2. Step-by-step exploit transaction sequence
[codex:1183286] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:1183286]
[codex:1183286] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:1183286]
[codex:1183286] Output MUST be valid JSON matching the provided schema.
[codex:1183286] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:1183286] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:1183286] mcp startup: no servers
[codex:1183286]
[codex:1183286] thinking
[codex:1183286] **Auditing via AUDIT_BUNDLE.txt**
[codex:1183286] exec
[codex:1183286] /bin/bash -lc ls in /tmp/codex-multi-hsl50v81 succeeded in 5ms:
[codex:1183286] AUDIT_BUNDLE.txt
[codex:1183286] codex-output-schema.json
[codex:1183286] contracts
[codex:1183286] exec
[codex:1183286] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-hsl50v81 succeeded in 6ms:
[codex:1183286] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:1183286]
[codex:1183286] ================================================================================
[codex:1183286] FILE: contracts/src/contracts/L1OpUSDCBridgeAdapter.sol
[codex:1183286] ================================================================================
[codex:1183286] // SPDX-License-Identifier: MIT
[codex:1183286] pragma solidity 0.8.25;
[codex:1183286]
[codex:1183286] import {SafeERC20} from '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol';
[codex:1183286] import {OpUSDCBridgeAdapter} from 'contracts/universal/OpUSDCBridgeAdapter.sol';
[codex:1183286] import {IL1OpUSDCBridgeAdapter} from 'interfaces/IL1OpUSDCBridgeAdapter.sol';
[codex:1183286] import {IL2OpUSDCBridgeAdapter} from 'interfaces/IL2OpUSDCBridgeAdapter.sol';
[codex:1183286] import {IOpUSDCBridgeAdapter} from 'interfaces/IOpUSDCBridgeAdapter.sol';
[codex:1183286] import {ICrossDomainMessenger} from 'interfaces/external/ICrossDomainMessenger.sol';
[codex:1183286] import {IUSDC} from 'interfaces/external/IUSDC.sol';
[codex:1183286]
[codex:1183286] /**
[codex:1183286] * @title L1OpUSDCBridgeAdapter
[codex:1183286] * @notice L1OpUSDCBridgeAdapter is a contract that bridges Bridged USDC from L1 to L2 and and receives it from L2.
[codex:1183286] * It is also in charge of pausing and resuming messaging between the L1 and L2 adapters, and properly initiating the
[codex:1183286]
[codex:1183286] thinking
[codex:1183286] **Preparing to analyze contracts for vulnerabilities**
[codex:1183286] exec
[codex:1183286] /bin/bash -lc 'rg --files contracts/src/contracts' in /tmp/codex-multi-hsl50v81 succeeded in 9ms:
[codex:1183286] contracts/src/contracts/L1OpUSDCBridgeAdapter.sol
[codex:1183286] contracts/src/contracts/universal/OpUSDCBridgeAdapter.sol
[codex:1183286] contracts/src/contracts/utils/FallbackProxyAdmin.sol
[codex:1183286]
[codex:1183286] thinking
[codex:1183286] **Searching for L2 adapters**
[codex:1183286] exec
[codex:1183286] /bin/bash -lc 'rg --files contracts/src' in /tmp/codex-multi-hsl50v81 succeeded in 8ms:
[codex:1183286] contracts/src/interfaces/IOpUSDCBridgeAdapter.sol
[codex:1183286] contracts/src/interfaces/IL2OpUSDCBridgeAdapter.sol
[codex:1183286] contracts/src/interfaces/IL1OpUSDCBridgeAdapter.sol
[codex:1183286] contracts/src/interfaces/external/ICrossDomainMessenger.sol
[codex:1183286] contracts/src/interfaces/external/IUSDC.sol
[codex:1183286] contracts/src/contracts/universal/OpUSDCBridgeAdapter.sol
[codex:1183286] contracts/src/contracts/L1OpUSDCBridgeAdapter.sol
[codex:1183286] contracts/src/contracts/utils/FallbackProxyAdmin.sol
[codex:1183286]
[codex:1183286] thinking
[codex:1183286] **Investigating L2 adapter contracts**
[codex:1183286] exec
[codex:1183286] /bin/bash -lc "sed -n '1,240p' contracts/src/contracts/utils/FallbackProxyAdmin.sol" in /tmp/codex-multi-hsl50v81 succeeded in 6ms:
[codex:1183286] // SPDX-License-Identifier: MIT
[codex:1183286] pragma solidity 0.8.25;
[codex:1183286]
[codex:1183286] import {Ownable} from '@openzeppelin/contracts/access/Ownable.sol';
[codex:1183286] import {IUSDC} from 'interfaces/external/IUSDC.sol';
[codex:1183286]
[codex:1183286] /**
[codex:1183286] * @title FallbackProxyAdmin
[codex:1183286] * @notice Middleware contract for the L2 Adapter to interact with the USDC proxy.
[codex:1183286] * @dev The admin can't call the fallback function of the USDC proxy, meaning it can't interact with the functions
[codex:1183286] * such as mint and burn between others. Because of this, the FallbackProxyAdmin contract is used as a middleware,
[codex:1183286] * being controlled by the L2OpUSDCBridgeAdapter contract and allowing to call the admin functions through it while
[codex:1183286] * also being able to call the fallback function of the USDC proxy.
[codex:1183286] */
[codex:1183286] contract FallbackProxyAdmin is Ownable {
[codex:1183286] /// @notice USDC address
[codex:1183286] address public immutable USDC;
[codex:1183286]
[codex:1183286] /**
[codex:1183286] * @notice Construct the FallbackProxyAdmin contract
[codex:1183286]
[codex:1183286] thinking
[codex:1183286] **Examining bridge adapter details**
[codex:1183286] exec
[codex:1183286] /bin/bash -lc "sed -n '1,240p' contracts/src/contracts/universal/OpUSDCBridgeAdapter.sol" in /tmp/codex-multi-hsl50v81 succeeded in 6ms:
[codex:1183286] // SPDX-License-Identifier: MIT
[codex:1183286] pragma solidity 0.8.25;
[codex:1183286]
[codex:1183286] import {OwnableUpgradeable} from '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol';
[codex:1183286] import {UUPSUpgradeable} from '@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol';
[codex:1183286] import {EIP712Upgradeable} from '@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol';
[codex:1183286] import {MessageHashUtils} from '@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol';
[codex:1183286] import {SignatureChecker} from '@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol';
[codex:1183286] import {IOpUSDCBridgeAdapter} from 'interfaces/IOpUSDCBridgeAdapter.sol';
[codex:1183286] import {ICrossDomainMessenger} from 'interfaces/external/ICrossDomainMessenger.sol';
[codex:1183286]
[codex:1183286] abstract contract OpUSDCBridgeAdapter is UUPSUpgradeable, OwnableUpgradeable, EIP712Upgradeable, IOpUSDCBridgeAdapter {
[codex:1183286] using MessageHashUtils for bytes32;
[codex:1183286] using SignatureChecker for address;
[codex:1183286]
[codex:1183286] /// @notice The typehash for the bridge message
[codex:1183286] bytes32 public constant BRIDGE_MESSAGE_TYPEHASH =
[codex:1183286] keccak256('BridgeMessage(address to,uint256 amount,uint256 deadline,uint256 nonce,uint32 minGasLimit)');
[codex:1183286]
[codex:1183286] /// @inheritdoc IOpUSDCBridgeAdapter
[codex:1183286]
[codex:1183286] thinking
[codex:1183286] **Analyzing L1 adapter for vulnerabilities**
[codex:1183286] exec
[codex:1183286] /bin/bash -lc "sed -n '1,220p' contracts/src/interfaces/IL2OpUSDCBridgeAdapter.sol" in /tmp/codex-multi-hsl50v81 succeeded in 6ms:
[codex:1183286] // SPDX-License-Identifier: MIT
[codex:1183286] pragma solidity 0.8.25;
[codex:1183286]
[codex:1183286] import {FallbackProxyAdmin} from 'contracts/utils/FallbackProxyAdmin.sol';
[codex:1183286]
[codex:1183286] interface IL2OpUSDCBridgeAdapter {
[codex:1183286] /*///////////////////////////////////////////////////////////////
[codex:1183286] EVENTS
[codex:1183286] ///////////////////////////////////////////////////////////////*/
[codex:1183286]
[codex:1183286] /**
[codex:1183286] * @notice Emitted when the owner message is sent
[codex:1183286] * @param _functionSignature The signature of the function sent
[codex:1183286] */
[codex:1183286] event USDCFunctionSent(bytes4 _functionSignature);
[codex:1183286]
[codex:1183286] /**
[codex:1183286] * @notice Emitted when a `receiveMessage` call message is replayed after the adapter was deprecated
[codex:1183286] * @param _spender The address that provided the tokens
[codex:1183286] * @param _amount The amount of USDC sent back to L1
[codex:1183286]
[codex:1183286] thinking
[codex:1183286] **Confirming no concrete findings**
[codex:1183286] exec
[codex:1183286] /bin/bash -lc 'rg "''^FILE:" -n AUDIT_BUNDLE.txt' in /tmp/codex-multi-hsl50v81 succeeded in 6ms:
[codex:1183286] 4:FILE: contracts/src/contracts/L1OpUSDCBridgeAdapter.sol
[codex:1183286] 343:FILE: contracts/src/contracts/universal/OpUSDCBridgeAdapter.sol
[codex:1183286] 506:FILE: contracts/src/contracts/utils/FallbackProxyAdmin.sol
[codex:1183286] 563:FILE: contracts/src/interfaces/IL1OpUSDCBridgeAdapter.sol
[codex:1183286] 658:FILE: contracts/src/interfaces/IL2OpUSDCBridgeAdapter.sol
[codex:1183286] 753:FILE: contracts/src/interfaces/IOpUSDCBridgeAdapter.sol
[codex:1183286] 1051:FILE: contracts/src/interfaces/external/ICrossDomainMessenger.sol
[codex:1183286] 1091:FILE: contracts/src/interfaces/external/IUSDC.sol
[codex:1183286]
[codex:1183286] thinking
[codex:1183286] **Preparing no findings JSON output**
[codex:1183286] codex
[codex:1183286] {"no_findings":true,"summary":"No concrete, exploitable paths to extract value found in the provided contracts.","findings":[]}
[codex:1183286] tokens used
[codex:1183286] 37,844
[codex:1183286] {"no_findings":true,"summary":"No concrete, exploitable paths to extract value found in the provided contracts.","findings":[]}
{
"codex": {
"ran_at": "2025-12-31T19:29:19.430751+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable paths to extract value found in the provided contracts.",
"raw_final": {
"summary": "No concrete, exploitable paths to extract value found in the provided contracts.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: DUP1 00000003: PUSH1 0x40 00000005: MSTORE 00000006: PUSH1 0x04 00000008: CALLDATASIZE 00000009: LT 0000000a: ISZERO 0000000b: PUSH2 0x0013 0000000e: JUMPI 0000000f: PUSH1 0x00 00000011: DUP1 00000012: REVERT 00000013: JUMPDEST 00000014: PUSH1 0x00 00000016: SWAP1 00000017: DUP2 00000018: CALLDATALOAD 00000019: PUSH1 0xe0 0000001b: SHR 0000001c: SWAP1 0000001d: DUP2 0000001e: PUSH4 0x1902f068 00000023: EQ 00000024: PUSH2 0x1a97 00000027: JUMPI 00000028: POP 00000029: DUP1 0000002a: PUSH4 0x2c8a6ae1 0000002f: EQ 00000030: PUSH2 0x1a52 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0x32b3a987 0000003a: EQ 0000003b: PUSH2 0x1879 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0x3bbcb44b 00000045: EQ 00000046: PUSH2 0x1850 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0x486a7e6b 00000050: EQ 00000051: PUSH2 0x1832 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0x4c598b56 0000005b: EQ 0000005c: PUSH2 0x174c 0000005f: JUMPI 00000060: DUP1 00000061: PUSH4 0x4f1ef286 00000066: EQ 00000067: PUSH2 0x1541 0000006a: JUMPI 0000006b: DUP1 0000006c: PUSH4 0x4f872ec3 00000071: EQ 00000072: PUSH2 0x13e0 00000075: JUMPI 00000076: DUP1 00000077: PUSH4 0x52d1902d 0000007c: EQ 0000007d: PUSH2 0x1363 00000080: JUMPI 00000081: DUP1 00000082: PUSH4 0x5f8f4e9d 00000087: EQ 00000088: PUSH2 0x131a 0000008b: JUMPI 0000008c: DUP1 0000008d: PUSH4 0x5fae6025 00000092: EQ 00000093: PUSH2 0x11c5 00000096: JUMPI 00000097: DUP1 00000098: PUSH4 0x67bd044d 0000009d: EQ 0000009e: PUSH2 0x116d 000000a1: JUMPI 000000a2: DUP1 000000a3: PUSH4 0x715018a6 000000a8: EQ 000000a9: PUSH2 0x1102 000000ac: JUMPI 000000ad: DUP1 000000ae: PUSH4 0x84b0196e 000000b3: EQ 000000b4: PUSH2 0x0fa4 000000b7: JUMPI 000000b8: DUP1 000000b9: PUSH4 0x89a30271 000000be: EQ 000000bf: PUSH2 0x0f5f 000000c2: JUMPI 000000c3: DUP1 000000c4: PUSH4 0x8a5e52bb 000000c9: EQ 000000ca: PUSH2 0x0ddf 000000cd: JUMPI 000000ce: DUP1 000000cf: PUSH4 0x8da5cb5b 000000d4: EQ 000000d5: PUSH2 0x0da9 000000d8: JUMPI 000000d9: DUP1 000000da: PUSH4 0x927ede2d 000000df: EQ 000000e0: PUSH2 0x0d64 000000e3: JUMPI 000000e4: DUP1 000000e5: PUSH4 0xad3cb1cc 000000ea: EQ 000000eb: PUSH2 0x0d1a 000000ee: JUMPI 000000ef: DUP1 000000f0: PUSH4 0xadbcea75 000000f5: EQ 000000f6: PUSH2 0x0cae 000000f9: JUMPI 000000fa: DUP1 000000fb: PUSH4 0xaef26549 00000100: EQ 00000101: PUSH2 0x0c5f 00000104: JUMPI 00000105: DUP1 00000106: PUSH4 0xbb416b35 0000010b: EQ 0000010c: PUSH2 0x0c37 0000010f: JUMPI 00000110: DUP1 00000111: PUSH4 0xc4d66de8 00000116: EQ 00000117: PUSH2 0x0740 0000011a: JUMPI 0000011b: DUP1 0000011c: PUSH4 0xcc43f3d3 00000121: EQ 00000122: PUSH2 0x05e3 00000125: JUMPI 00000126: DUP1 00000127: PUSH4 0xcdb9d2ea 0000012c: EQ 0000012d: PUSH2 0x03ef 00000130: JUMPI 00000131: DUP1 00000132: PUSH4 0xe1ceec34 00000137: EQ 00000138: PUSH2 0x03b4 0000013b: JUMPI 0000013c: DUP1 0000013d: PUSH4 0xf2fde38b 00000142: EQ 00000143: PUSH2 0x0387 00000146: JUMPI 00000147: DUP1 00000148: PUSH4 0xf68d1b9f 0000014d: EQ 0000014e: PUSH2 0x021c 00000151: JUMPI 00000152: PUSH4 0xfbea6022 00000157: EQ 00000158: PUSH2 0x0160 0000015b: JUMPI 0000015c: PUSH1 0x00 0000015e: DUP1 0000015f: REVERT 00000160: JUMPDEST 00000161: CALLVALUE 00000162: PUSH2 0x0219 00000165: JUMPI 00000166: PUSH1 0x40 00000168: CALLDATASIZE 00000169: PUSH1 0x03 0000016b: NOT 0000016c: ADD 0000016d: SLT 0000016e: PUSH2 0x0219 00000171: JUMPI 00000172: PUSH2 0x0179 00000175: PUSH2 0x1edf 00000178: JUMP 00000179: JUMPDEST 0000017a: PUSH32 0xc47b52177930ba2672bfc1f75da55cf82adb3c61c2df74e28bdfefbf52ae9e05 0000019b: PUSH1 0x20 0000019d: PUSH2 0x01a4 000001a0: PUSH2 0x1ef5 000001a3: JUMP 000001a4: JUMPDEST 000001a5: SWAP3 000001a6: PUSH2 0x020f 000001a9: PUSH1 0x01 000001ab: DUP1 000001ac: PUSH1 0xa0 000001ae: SHL 000001af: SUB 000001b0: DUP1 000001b1: SWAP3 000001b2: AND 000001b3: DUP1 000001b4: DUP8 000001b5: MSTORE 000001b6: PUSH1 0x02 000001b8: DUP5 000001b9: MSTORE 000001ba: PUSH1 0x40 000001bc: DUP8 000001bd: KECCAK256 000001be: SWAP6 000001bf: DUP4 000001c0: DUP2 000001c1: AND 000001c2: SWAP7 000001c3: DUP8 000001c4: PUSH1 0x00 000001c6: MSTORE 000001c7: DUP6 000001c8: MSTORE 000001c9: PUSH1 0x40 000001cb: PUSH1 0x00 000001cd: KECCAK256 000001ce: SLOAD 000001cf: SWAP4 000001d0: DUP5 000001d1: SWAP3 000001d2: DUP10 000001d3: MSTORE 000001d4: PUSH1 0x02 000001d6: DUP7 000001d7: MSTORE 000001d8: PUSH1 0x40 000001da: DUP10 000001db: KECCAK256 000001dc: DUP9 000001dd: PUSH1 0x00 000001df: MSTORE 000001e0: DUP7 000001e1: MSTORE 000001e2: DUP9 000001e3: PUSH1 0x40 000001e5: PUSH1 0x00 000001e7: KECCAK256 000001e8: SSTORE 000001e9: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 0000020a: AND 0000020b: PUSH2 0x229a 0000020e: JUMP 0000020f: JUMPDEST 00000210: PUSH1 0x40 00000212: MLOAD 00000213: SWAP1 00000214: DUP2 00000215: MSTORE 00000216: LOG2 00000217: DUP1 00000218: RETURN 00000219: JUMPDEST 0000021a: DUP1 0000021b: REVERT 0000021c: JUMPDEST 0000021d: POP 0000021e: CALLVALUE 0000021f: PUSH2 0x0219 00000222: JUMPI 00000223: PUSH1 0x20 00000225: CALLDATASIZE 00000226: PUSH1 0x03 00000228: NOT 00000229: ADD 0000022a: SLT 0000022b: PUSH2 0x0219 0000022e: JUMPI 0000022f: PUSH2 0x0236 00000232: PUSH2 0x1f1e 00000235: JUMP 00000236: JUMPDEST 00000237: PUSH2 0x023e 0000023a: PUSH2 0x22dd 0000023d: JUMP 0000023e: JUMPDEST 0000023f: DUP2 00000240: SLOAD 00000241: PUSH1 0xff 00000243: DUP2 00000244: AND 00000245: PUSH2 0x024d 00000248: DUP2 00000249: PUSH2 0x2012 0000024c: JUMP 0000024d: JUMPDEST 0000024e: DUP1 0000024f: ISZERO 00000250: ISZERO 00000251: SWAP1 00000252: DUP2 00000253: PUSH2 0x0372 00000256: JUMPI 00000257: JUMPDEST 00000258: POP 00000259: PUSH2 0x0360 0000025c: JUMPI 0000025d: PUSH1 0xff 0000025f: NOT 00000260: AND 00000261: PUSH1 0x01 00000263: OR 00000264: DUP3 00000265: SSTORE 00000266: PUSH1 0x40 00000268: MLOAD 00000269: PUSH4 0x4384a98f 0000026e: PUSH1 0xe0 00000270: SHL 00000271: PUSH1 0x20 00000273: DUP3 00000274: ADD 00000275: MSTORE 00000276: PUSH1 0x04 00000278: DUP2 00000279: MSTORE 0000027a: PUSH32 0x00000000000000000000000031b72d76fb666844c41edf08df0254875dbb7edb 0000029b: PUSH1 0x01 0000029d: PUSH1 0x01 0000029f: PUSH1 0xa0 000002a1: SHL 000002a2: SUB 000002a3: AND 000002a4: SWAP2 000002a5: DUP4 000002a6: SWAP2 000002a7: PUSH2 0x02af 000002aa: DUP2 000002ab: PUSH2 0x1f44 000002ae: JUMP 000002af: JUMPDEST 000002b0: DUP4 000002b1: EXTCODESIZE 000002b2: ISZERO 000002b3: PUSH2 0x035c 000002b6: JUMPI 000002b7: PUSH1 0x40 000002b9: MLOAD 000002ba: PUSH4 0x3dbb202b 000002bf: PUSH1 0xe0 000002c1: SHL 000002c2: DUP2 000002c3: MSTORE 000002c4: SWAP2 000002c5: DUP4 000002c6: SWAP2 000002c7: DUP4 000002c8: SWAP2 000002c9: DUP3 000002ca: SWAP2 000002cb: PUSH2 0x02f9 000002ce: SWAP2 000002cf: SWAP1 000002d0: PUSH32 0x0000000000000000000000003b1ac69368eb6447f5db2d4e1641380fa9e40d29 000002f1: PUSH1 0x04 000002f3: DUP6 000002f4: ADD 000002f5: PUSH2 0x2069 000002f8: JUMP 000002f9: JUMPDEST 000002fa: SUB 000002fb: DUP2 000002fc: DUP4 000002fd: DUP8 000002fe: GAS 000002ff: CALL 00000300: DUP1 00000301: ISZERO 00000302: PUSH2 0x0351 00000305: JUMPI 00000306: PUSH2 0x0339 00000309: JUMPI 0000030a: JUMPDEST 0000030b: POP 0000030c: PUSH32 0xc19ffaed16cc79d2c0c853889a5b1fd248a9208d0478bc07dd2da1cda4e89992 0000032d: PUSH1 0x20 0000032f: DUP4 00000330: PUSH1 0x40 00000332: MLOAD 00000333: SWAP1 00000334: DUP2 00000335: MSTORE 00000336: LOG1 00000337: DUP1 00000338: RETURN 00000339: JUMPDEST 0000033a: PUSH2 0x0342 0000033d: SWAP1 0000033e: PUSH2 0x1f31 00000341: JUMP 00000342: JUMPDEST 00000343: PUSH2 0x034d 00000346: JUMPI 00000347: DUP2 00000348: CODESIZE 00000349: PUSH2 0x030a 0000034c: JUMP 0000034d: JUMPDEST 0000034e: POP 0000034f: DUP1 00000350: REVERT 00000351: JUMPDEST 00000352: PUSH1 0x40 00000354: MLOAD 00000355: RETURNDATASIZE 00000356: DUP5 00000357: DUP3 00000358: RETURNDATACOPY 00000359: RETURNDATASIZE 0000035a: SWAP1 0000035b: REVERT 0000035c: JUMPDEST 0000035d: DUP3 0000035e: DUP1 0000035f: REVERT 00000360: JUMPDEST 00000361: PUSH1 0x40 00000363: MLOAD 00000364: PUSH4 0x6a14cf23 00000369: PUSH1 0xe0 0000036b: SHL 0000036c: DUP2 0000036d: MSTORE 0000036e: PUSH1 0x04 00000370: SWAP1 00000371: REVERT 00000372: JUMPDEST 00000373: PUSH1 0x01 00000375: SWAP2 00000376: POP 00000377: PUSH2 0x037f 0000037a: DUP2 0000037b: PUSH2 0x2012 0000037e: JUMP 0000037f: JUMPDEST 00000380: EQ 00000381: ISZERO 00000382: CODESIZE 00000383: PUSH2 0x0257 00000386: JUMP 00000387: JUMPDEST 00000388: POP 00000389: CALLVALUE 0000038a: PUSH2 0x0219 0000038d: JUMPI 0000038e: PUSH1 0x20 00000390: CALLDATASIZE 00000391: PUSH1 0x03 00000393: NOT 00000394: ADD 00000395: SLT 00000396: PUSH2 0x0219 00000399: JUMPI 0000039a: PUSH2 0x03b1 0000039d: PUSH2 0x03a4 000003a0: PUSH2 0x1edf 000003a3: JUMP 000003a4: JUMPDEST 000003a5: PUSH2 0x03ac 000003a8: PUSH2 0x22dd 000003ab: JUMP 000003ac: JUMPDEST 000003ad: PUSH2 0x209b 000003b0: JUMP 000003b1: JUMPDEST 000003b2: DUP1 000003b3: RETURN 000003b4: JUMPDEST 000003b5: POP 000003b6: CALLVALUE 000003b7: PUSH2 0x0219 000003ba: JUMPI 000003bb: DUP1 000003bc: PUSH1 0x03 000003be: NOT 000003bf: CALLDATASIZE 000003c0: ADD 000003c1: SLT 000003c2: PUSH2 0x0219 000003c5: JUMPI 000003c6: PUSH1 0x20 000003c8: PUSH1 0x40 000003ca: MLOAD 000003cb: PUSH32 0x87e4683aad14f1869b43140e06b846bd1b00c2e08e9825f6719d163b4cfef2a6 000003ec: DUP2 000003ed: MSTORE 000003ee: RETURN 000003ef: JUMPDEST 000003f0: POP 000003f1: CALLVALUE 000003f2: PUSH2 0x0219 000003f5: JUMPI 000003f6: PUSH1 0x80 000003f8: CALLDATASIZE 000003f9: PUSH1 0x03 000003fb: NOT 000003fc: ADD 000003fd: SLT 000003fe: PUSH2 0x0219 00000401: JUMPI 00000402: PUSH2 0x0409 00000405: PUSH2 0x1edf 00000408: JUMP 00000409: JUMPDEST 0000040a: PUSH2 0x0411 0000040d: PUSH2 0x1ef5 00000410: JUMP 00000411: JUMPDEST 00000412: PUSH2 0x0419 00000415: PUSH2 0x1f0b 00000418: JUMP 00000419: JUMPDEST 0000041a: SWAP2 0000041b: PUSH1 0x64 0000041d: CALLDATALOAD 0000041e: SWAP3 0000041f: PUSH4 0xffffffff 00000424: DUP5 00000425: AND 00000426: DUP1 00000427: SWAP5 00000428: SUB 00000429: PUSH2 0x05de 0000042c: JUMPI 0000042d: PUSH2 0x0434 00000430: PUSH2 0x22dd 00000433: JUMP 00000434: JUMPDEST 00000435: PUSH1 0x01 00000437: PUSH1 0x01 00000439: PUSH1 0xa0 0000043b: SHL 0000043c: SUB 0000043d: SWAP2 0000043e: DUP3 0000043f: AND 00000440: SWAP2 00000441: DUP3 00000442: ISZERO 00000443: DUP1 00000444: ISZERO 00000445: PUSH2 0x05d4 00000448: JUMPI 00000449: JUMPDEST 0000044a: PUSH2 0x05c2 0000044d: JUMPI 0000044e: DUP6 0000044f: SLOAD 00000450: SWAP4 00000451: PUSH1 0xff 00000453: DUP6 00000454: AND 00000455: PUSH2 0x045d 00000458: DUP2 00000459: PUSH2 0x2012 0000045c: JUMP 0000045d: JUMPDEST 0000045e: DUP1 0000045f: ISZERO 00000460: ISZERO 00000461: SWAP1 00000462: DUP2 00000463: PUSH2 0x05ad 00000466: JUMPI 00000467: JUMPDEST 00000468: POP 00000469: PUSH2 0x0360 0000046c: JUMPI 0000046d: DUP2 0000046e: PUSH1 0x02 00000470: SWAP2 00000471: AND 00000472: SWAP5 00000473: DUP6 00000474: PUSH12 0xffffffffffffffffffffffff 00000481: PUSH1 0xa0 00000483: SHL 00000484: PUSH1 0x36 00000486: SLOAD 00000487: AND 00000488: OR 00000489: PUSH1 0x36 0000048b: SSTORE 0000048c: PUSH1 0xff 0000048e: NOT 0000048f: AND 00000490: OR 00000491: DUP7 00000492: SSTORE 00000493: PUSH32 0x00000000000000000000000031b72d76fb666844c41edf08df0254875dbb7edb 000004b4: AND 000004b5: SWAP4 000004b6: PUSH1 0x40 000004b8: MLOAD 000004b9: SWAP3 000004ba: PUSH4 0x69c5f5f3 000004bf: PUSH1 0xe0 000004c1: SHL 000004c2: PUSH1 0x20 000004c4: DUP6 000004c5: ADD 000004c6: MSTORE 000004c7: PUSH1 0x24 000004c9: DUP5 000004ca: ADD 000004cb: MSTORE 000004cc: PUSH1 0x44 000004ce: DUP4 000004cf: ADD 000004d0: MSTORE 000004d1: PUSH1 0x44 000004d3: DUP3 000004d4: MSTORE 000004d5: PUSH1 0x80 000004d7: DUP3 000004d8: ADD 000004d9: SWAP1 000004da: DUP3 000004db: DUP3 000004dc: LT 000004dd: PUSH1 0x01 000004df: PUSH1 0x01 000004e1: PUSH1 0x40 000004e3: SHL 000004e4: SUB 000004e5: DUP4 000004e6: GT 000004e7: OR 000004e8: PUSH2 0x0597 000004eb: JUMPI 000004ec: DUP6 000004ed: SWAP3 000004ee: DUP3 000004ef: PUSH1 0x40 000004f1: MSTORE 000004f2: DUP6 000004f3: EXTCODESIZE 000004f4: ISZERO 000004f5: PUSH2 0x0593 000004f8: JUMPI 000004f9: PUSH4 0x3dbb202b 000004fe: PUSH1 0xe0 00000500: SHL 00000501: DUP4 00000502: MSTORE 00000503: DUP4 00000504: SWAP2 00000505: DUP4 00000506: SWAP2 00000507: PUSH1 0x7f 00000509: NOT 0000050a: SWAP2 0000050b: PUSH2 0x0539 0000050e: SWAP1 0000050f: DUP3 00000510: PUSH32 0x0000000000000000000000003b1ac69368eb6447f5db2d4e1641380fa9e40d29 00000531: PUSH1 0x84 00000533: DUP3 00000534: ADD 00000535: PUSH2 0x2069 00000538: JUMP 00000539: JUMPDEST 0000053a: SUB 0000053b: ADD 0000053c: DUP2 0000053d: DUP4 0000053e: DUP9 0000053f: GAS 00000540: CALL 00000541: DUP1 00000542: ISZERO 00000543: PUSH2 0x0351 00000546: JUMPI 00000547: PUSH2 0x057f 0000054a: JUMPI 0000054b: JUMPDEST 0000054c: POP 0000054d: PUSH32 0x06aeee5a19965b1536947b7571a17a681add9aad3efd41c1bec130257eaab6c9 0000056e: PUSH1 0x40 00000570: DUP5 00000571: DUP5 00000572: DUP3 00000573: MLOAD 00000574: SWAP2 00000575: DUP3 00000576: MSTORE 00000577: PUSH1 0x20 00000579: DUP3 0000057a: ADD 0000057b: MSTORE 0000057c: LOG1 0000057d: DUP1 0000057e: RETURN 0000057f: JUMPDEST 00000580: PUSH2 0x0588 00000583: SWAP1 00000584: PUSH2 0x1f31 00000587: JUMP 00000588: JUMPDEST 00000589: PUSH2 0x035c 0000058c: JUMPI 0000058d: DUP3 0000058e: CODESIZE 0000058f: PUSH2 0x054b 00000592: JUMP 00000593: JUMPDEST 00000594: DUP4 00000595: DUP1 00000596: REVERT 00000597: JUMPDEST 00000598: PUSH4 0x4e487b71 0000059d: PUSH1 0xe0 0000059f: SHL 000005a0: PUSH1 0x00 000005a2: MSTORE 000005a3: PUSH1 0x41 000005a5: PUSH1 0x04 000005a7: MSTORE 000005a8: PUSH1 0x24 000005aa: PUSH1 0x00 000005ac: REVERT 000005ad: JUMPDEST 000005ae: PUSH1 0x02 000005b0: SWAP2 000005b1: POP 000005b2: PUSH2 0x05ba 000005b5: DUP2 000005b6: PUSH2 0x2012 000005b9: JUMP 000005ba: JUMPDEST 000005bb: EQ 000005bc: ISZERO 000005bd: CODESIZE 000005be: PUSH2 0x0467 000005c1: JUMP 000005c2: JUMPDEST 000005c3: PUSH1 0x40 000005c5: MLOAD 000005c6: PUSH4 0x5432922d 000005cb: PUSH1 0xe0 000005cd: SHL 000005ce: DUP2 000005cf: MSTORE 000005d0: PUSH1 0x04 000005d2: SWAP1 000005d3: REVERT 000005d4: JUMPDEST 000005d5: POP 000005d6: DUP1 000005d7: DUP5 000005d8: AND 000005d9: ISZERO 000005da: PUSH2 0x0449 000005dd: JUMP 000005de: JUMPDEST 000005df: PUSH1 0x00 000005e1: DUP1 000005e2: REVERT 000005e3: JUMPDEST 000005e4: POP 000005e5: CALLVALUE 000005e6: PUSH2 0x0219 000005e9: JUMPI 000005ea: PUSH1 0x20 000005ec: CALLDATASIZE 000005ed: PUSH1 0x03 000005ef: NOT 000005f0: ADD 000005f1: SLT 000005f2: PUSH2 0x0219 000005f5: JUMPI 000005f6: PUSH1 0x04 000005f8: CALLDATALOAD 000005f9: PUSH1 0x01 000005fb: PUSH1 0x01 000005fd: PUSH1 0xa0 000005ff: SHL 00000600: SUB 00000601: PUSH32 0x00000000000000000000000031b72d76fb666844c41edf08df0254875dbb7edb 00000622: DUP2 00000623: AND 00000624: CALLER 00000625: DUP2 00000626: EQ 00000627: DUP1 00000628: ISZERO 00000629: SWAP3 0000062a: SWAP2 0000062b: SWAP1 0000062c: PUSH2 0x06ac 0000062f: JUMPI 00000630: JUMPDEST 00000631: POP 00000632: POP 00000633: PUSH2 0x069a 00000636: JUMPI 00000637: DUP2 00000638: SLOAD 00000639: PUSH1 0x02 0000063b: PUSH1 0xff 0000063d: DUP3 0000063e: AND 0000063f: PUSH2 0x0647 00000642: DUP2 00000643: PUSH2 0x2012 00000646: JUMP 00000647: JUMPDEST 00000648: SUB 00000649: PUSH2 0x0688 0000064c: JUMPI 0000064d: DUP2 0000064e: PUSH1 0x03 00000650: PUSH1 0x20 00000652: SWAP3 00000653: PUSH32 0x38acaebd0e3affc51737125878fe1e25cb5fdb627b3778416219d82f81ef42f8 00000674: SWAP5 00000675: PUSH1 0x35 00000677: SSTORE 00000678: PUSH1 0xff 0000067a: NOT 0000067b: AND 0000067c: OR 0000067d: DUP5 0000067e: SSTORE 0000067f: PUSH1 0x40 00000681: MLOAD 00000682: SWAP1 00000683: DUP2 00000684: MSTORE 00000685: LOG1 00000686: DUP1 00000687: RETURN 00000688: JUMPDEST 00000689: PUSH1 0x40 0000068b: MLOAD 0000068c: PUSH4 0x14ca5c17 00000691: PUSH1 0xe2 00000693: SHL 00000694: DUP2 00000695: MSTORE 00000696: PUSH1 0x04 00000698: SWAP1 00000699: REVERT 0000069a: JUMPDEST 0000069b: PUSH1 0x40 0000069d: MLOAD 0000069e: PUSH4 0x040e613d 000006a3: PUSH1 0xe2 000006a5: SHL 000006a6: DUP2 000006a7: MSTORE 000006a8: PUSH1 0x04 000006aa: SWAP1 000006ab: REVERT 000006ac: JUMPDEST 000006ad: PUSH1 0x40 000006af: MLOAD 000006b0: PUSH4 0x6e296e45 000006b5: PUSH1 0xe0 000006b7: SHL 000006b8: DUP2 000006b9: MSTORE 000006ba: SWAP3 000006bb: POP 000006bc: PUSH1 0x20 000006be: SWAP1 000006bf: DUP4 000006c0: SWAP1 000006c1: PUSH1 0x04 000006c3: SWAP1 000006c4: DUP3 000006c5: SWAP1 000006c6: GAS 000006c7: STATICCALL 000006c8: SWAP2 000006c9: DUP3 000006ca: ISZERO 000006cb: PUSH2 0x0735 000006ce: JUMPI 000006cf: DUP5 000006d0: SWAP3 000006d1: PUSH2 0x0704 000006d4: JUMPI 000006d5: JUMPDEST 000006d6: POP 000006d7: DUP1 000006d8: PUSH32 0x0000000000000000000000003b1ac69368eb6447f5db2d4e1641380fa9e40d29 000006f9: AND 000006fa: SWAP2 000006fb: AND 000006fc: EQ 000006fd: ISZERO 000006fe: CODESIZE 000006ff: DUP1 00000700: PUSH2 0x0630 00000703: JUMP 00000704: JUMPDEST 00000705: PUSH2 0x0727 00000708: SWAP2 00000709: SWAP3 0000070a: POP 0000070b: PUSH1 0x20 0000070d: RETURNDATASIZE 0000070e: PUSH1 0x20 00000710: GT 00000711: PUSH2 0x072e 00000714: JUMPI 00000715: JUMPDEST 00000716: PUSH2 0x071f 00000719: DUP2 0000071a: DUP4 0000071b: PUSH2 0x1f5f 0000071e: JUMP 0000071f: JUMPDEST 00000720: DUP2 00000721: ADD 00000722: SWAP1 00000723: PUSH2 0x204a 00000726: JUMP 00000727: JUMPDEST 00000728: SWAP1 00000729: CODESIZE 0000072a: PUSH2 0x06d5 0000072d: JUMP 0000072e: JUMPDEST 0000072f: POP 00000730: RETURNDATASIZE 00000731: PUSH2 0x0715 00000734: JUMP 00000735: JUMPDEST 00000736: PUSH1 0x40 00000738: MLOAD 00000739: RETURNDATASIZE 0000073a: DUP7 0000073b: DUP3 0000073c: RETURNDATACOPY 0000073d: RETURNDATASIZE 0000073e: SWAP1 0000073f: REVERT 00000740: JUMPDEST 00000741: POP 00000742: CALLVALUE 00000743: PUSH2 0x0219 00000746: JUMPI 00000747: PUSH1 0x20 00000749: CALLDATASIZE 0000074a: PUSH1 0x03 0000074c: NOT 0000074d: ADD 0000074e: SLT 0000074f: PUSH2 0x0219 00000752: JUMPI 00000753: PUSH2 0x075a 00000756: PUSH2 0x1edf 00000759: JUMP 0000075a: JUMPDEST 0000075b: SWAP1 0000075c: PUSH1 0x00 0000075e: DUP1 0000075f: MLOAD 00000760: PUSH1 0x20 00000762: PUSH2 0x27e5 00000765: DUP4 00000766: CODECOPY 00000767: DUP2 00000768: MLOAD 00000769: SWAP2 0000076a: MSTORE 0000076b: SLOAD 0000076c: SWAP2 0000076d: PUSH1 0x01 0000076f: PUSH1 0x01 00000771: PUSH1 0x40 00000773: SHL 00000774: SUB 00000775: DUP4 00000776: AND 00000777: DUP1 00000778: ISZERO 00000779: SWAP1 0000077a: DUP2 0000077b: PUSH2 0x0c27 0000077e: JUMPI 0000077f: JUMPDEST 00000780: PUSH1 0x01 00000782: EQ 00000783: SWAP1 00000784: DUP2 00000785: PUSH2 0x0c1d 00000788: JUMPI 00000789: JUMPDEST 0000078a: ISZERO 0000078b: SWAP1 0000078c: DUP2 0000078d: PUSH2 0x0c14 00000790: JUMPI 00000791: JUMPDEST 00000792: POP 00000793: PUSH2 0x0c02 00000796: JUMPI 00000797: PUSH2 0x07d5 0000079a: SWAP1 0000079b: PUSH1 0x01 0000079d: PUSH1 0x01 0000079f: PUSH1 0x01 000007a1: PUSH1 0x40 000007a3: SHL 000007a4: SUB 000007a5: NOT 000007a6: DUP6 000007a7: AND 000007a8: OR 000007a9: PUSH1 0x00 000007ab: DUP1 000007ac: MLOAD 000007ad: PUSH1 0x20 000007af: PUSH2 0x27e5 000007b2: DUP4 000007b3: CODECOPY 000007b4: DUP2 000007b5: MLOAD 000007b6: SWAP2 000007b7: MSTORE 000007b8: SSTORE 000007b9: PUSH1 0xff 000007bb: DUP5 000007bc: PUSH1 0x40 000007be: SHR 000007bf: AND 000007c0: ISZERO 000007c1: PUSH2 0x0bd5 000007c4: JUMPI 000007c5: JUMPDEST 000007c6: PUSH2 0x07cd 000007c9: PUSH2 0x2547 000007cc: JUMP 000007cd: JUMPDEST 000007ce: PUSH2 0x03ac 000007d1: PUSH2 0x2547 000007d4: JUMP 000007d5: JUMPDEST 000007d6: PUSH1 0x40 000007d8: MLOAD 000007d9: SWAP2 000007da: PUSH2 0x07e2 000007dd: DUP4 000007de: PUSH2 0x1f44 000007e1: JUMP 000007e2: JUMPDEST 000007e3: PUSH1 0x13 000007e5: DUP4 000007e6: MSTORE 000007e7: PUSH19 0x27b82aa9a221a13934b233b2a0b230b83a32b9 000007fb: PUSH1 0x69 000007fd: SHL 000007fe: PUSH1 0x20 00000800: DUP5 00000801: ADD 00000802: MSTORE 00000803: PUSH1 0x40 00000805: MLOAD 00000806: SWAP3 00000807: PUSH2 0x080f 0000080a: DUP5 0000080b: PUSH2 0x1f44 0000080e: JUMP 0000080f: JUMPDEST 00000810: PUSH1 0x05 00000812: DUP5 00000813: MSTORE 00000814: PUSH5 0x0312e302e3 0000081a: PUSH1 0xdc 0000081c: SHL 0000081d: PUSH1 0x20 0000081f: DUP6 00000820: ADD 00000821: MSTORE 00000822: PUSH2 0x0829 00000825: PUSH2 0x2547 00000828: JUMP 00000829: JUMPDEST 0000082a: PUSH2 0x0831 0000082d: PUSH2 0x2547 00000830: JUMP 00000831: JUMPDEST 00000832: DUP1 00000833: MLOAD 00000834: PUSH1 0x01 00000836: PUSH1 0x01 00000838: PUSH1 0x40 0000083a: SHL 0000083b: SUB 0000083c: DUP2 0000083d: GT 0000083e: PUSH2 0x0aaa 00000841: JUMPI 00000842: DUP1 00000843: PUSH2 0x085a 00000846: PUSH1 0x00 00000848: DUP1 00000849: MLOAD 0000084a: PUSH1 0x20 0000084c: PUSH2 0x2785 0000084f: DUP4 00000850: CODECOPY 00000851: DUP2 00000852: MLOAD 00000853: SWAP2 00000854: MSTORE 00000855: SLOAD 00000856: PUSH2 0x2316 00000859: JUMP 0000085a: JUMPDEST 0000085b: SWAP3 0000085c: PUSH1 0x1f 0000085e: SWAP4 0000085f: DUP5 00000860: DUP2 00000861: GT 00000862: PUSH2 0x0b54 00000865: JUMPI 00000866: JUMPDEST 00000867: POP 00000868: PUSH1 0x20 0000086a: SWAP1 0000086b: DUP5 0000086c: DUP4 0000086d: GT 0000086e: PUSH1 0x01 00000870: EQ 00000871: PUSH2 0x0ac9 00000874: JUMPI 00000875: DUP7 00000876: SWAP3 00000877: PUSH2 0x0abe 0000087a: JUMPI 0000087b: JUMPDEST 0000087c: POP 0000087d: POP 0000087e: DUP2 0000087f: PUSH1 0x01 00000881: SHL 00000882: SWAP2 00000883: PUSH1 0x00 00000885: NOT 00000886: SWAP1 00000887: PUSH1 0x03 00000889: SHL 0000088a: SHR 0000088b: NOT 0000088c: AND 0000088d: OR 0000088e: PUSH1 0x00 00000890: DUP1 00000891: MLOAD 00000892: PUSH1 0x20 00000894: PUSH2 0x2785 00000897: DUP4 00000898: CODECOPY 00000899: DUP2 0000089a: MLOAD 0000089b: SWAP2 0000089c: MSTORE 0000089d: SSTORE 0000089e: JUMPDEST 0000089f: DUP4 000008a0: MLOAD 000008a1: PUSH1 0x01 000008a3: PUSH1 0x01 000008a5: PUSH1 0x40 000008a7: SHL 000008a8: SUB 000008a9: DUP2 000008aa: GT 000008ab: PUSH2 0x0aaa 000008ae: JUMPI 000008af: PUSH32 0xa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103 000008d0: SWAP2 000008d1: PUSH2 0x08da 000008d4: DUP4 000008d5: SLOAD 000008d6: PUSH2 0x2316 000008d9: JUMP 000008da: JUMPDEST 000008db: DUP2 000008dc: DUP2 000008dd: GT 000008de: PUSH2 0x0a4b 000008e1: JUMPI 000008e2: JUMPDEST 000008e3: POP 000008e4: PUSH1 0x20 000008e6: SWAP1 000008e7: DUP3 000008e8: GT 000008e9: PUSH1 0x01 000008eb: EQ 000008ec: PUSH2 0x09c8 000008ef: JUMPI 000008f0: DUP2 000008f1: SWAP1 000008f2: DUP6 000008f3: SWAP7 000008f4: PUSH1 0xff 000008f6: SWAP7 000008f7: SWAP3 000008f8: PUSH2 0x09bd 000008fb: JUMPI 000008fc: JUMPDEST 000008fd: POP 000008fe: POP 000008ff: DUP2 00000900: PUSH1 0x01 00000902: SHL 00000903: SWAP2 00000904: PUSH1 0x00 00000906: NOT 00000907: SWAP1 00000908: PUSH1 0x03 0000090a: SHL 0000090b: SHR 0000090c: NOT 0000090d: AND 0000090e: OR 0000090f: SWAP1 00000910: SSTORE 00000911: JUMPDEST 00000912: DUP3 00000913: PUSH32 0xa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100 00000934: SSTORE 00000935: DUP3 00000936: PUSH32 0xa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101 00000957: SSTORE 00000958: PUSH1 0x40 0000095a: SHR 0000095b: AND 0000095c: ISZERO 0000095d: PUSH2 0x0963 00000960: JUMPI 00000961: DUP1 00000962: RETURN 00000963: JUMPDEST 00000964: PUSH9 0xff0000000000000000 0000096e: NOT 0000096f: PUSH1 0x00 00000971: DUP1 00000972: MLOAD 00000973: PUSH1 0x20 00000975: PUSH2 0x27e5 00000978: DUP4 00000979: CODECOPY 0000097a: DUP2 0000097b: MLOAD 0000097c: SWAP2 0000097d: MSTORE 0000097e: SLOAD 0000097f: AND 00000980: PUSH1 0x00 00000982: DUP1 00000983: MLOAD 00000984: PUSH1 0x20 00000986: PUSH2 0x27e5 00000989: DUP4 0000098a: CODECOPY 0000098b: DUP2 0000098c: MLOAD 0000098d: SWAP2 0000098e: MSTORE 0000098f: SSTORE 00000990: PUSH32 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2 000009b1: PUSH1 0x20 000009b3: PUSH1 0x40 000009b5: MLOAD 000009b6: PUSH1 0x01 000009b8: DUP2 000009b9: MSTORE 000009ba: LOG1 000009bb: DUP1 000009bc: RETURN 000009bd: JUMPDEST 000009be: ADD 000009bf: MLOAD 000009c0: SWAP1 000009c1: POP 000009c2: CODESIZE 000009c3: DUP1 000009c4: PUSH2 0x08fc 000009c7: JUMP 000009c8: JUMPDEST 000009c9: DUP3 000009ca: DUP6 000009cb: MSTORE 000009cc: PUSH32 0x5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75 000009ed: SWAP6 000009ee: PUSH1 0x1f 000009f0: NOT 000009f1: DUP4 000009f2: AND 000009f3: DUP7 000009f4: JUMPDEST 000009f5: DUP2 000009f6: DUP2 000009f7: LT 000009f8: PUSH2 0x0a33 000009fb: JUMPI 000009fc: POP 000009fd: SWAP2 000009fe: PUSH1 0xff 00000a00: SWAP7 00000a01: SWAP8 00000a02: SWAP2 00000a03: DUP5 00000a04: PUSH1 0x01 00000a06: SWAP6 00000a07: SWAP5 00000a08: LT 00000a09: PUSH2 0x0a1a 00000a0c: JUMPI 00000a0d: JUMPDEST 00000a0e: POP 00000a0f: POP 00000a10: POP 00000a11: DUP2 00000a12: SHL 00000a13: ADD 00000a14: SWAP1 00000a15: SSTORE 00000a16: PUSH2 0x0911 00000a19: JUMP 00000a1a: JUMPDEST 00000a1b: ADD 00000a1c: MLOAD 00000a1d: PUSH1 0x00 00000a1f: NOT 00000a20: PUSH1 0xf8 00000a22: DUP5 00000a23: PUSH1 0x03 00000a25: SHL 00000a26: AND 00000a27: SHR 00000a28: NOT 00000a29: AND 00000a2a: SWAP1 00000a2b: SSTORE 00000a2c: CODESIZE 00000a2d: DUP1 00000a2e: DUP1 00000a2f: PUSH2 0x0a0d 00000a32: JUMP 00000a33: JUMPDEST 00000a34: DUP4 00000a35: DUP4 00000a36: ADD 00000a37: MLOAD 00000a38: DUP10 00000a39: SSTORE 00000a3a: PUSH1 0x01 00000a3c: SWAP1 00000a3d: SWAP9 00000a3e: ADD 00000a3f: SWAP8 00000a40: PUSH1 0x20 00000a42: SWAP4 00000a43: DUP5 00000a44: ADD 00000a45: SWAP4 00000a46: ADD 00000a47: PUSH2 0x09f4 00000a4a: JUMP 00000a4b: JUMPDEST 00000a4c: DUP4 00000a4d: DUP7 00000a4e: MSTORE 00000a4f: PUSH32 0x5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75 00000a70: DUP3 00000a71: DUP1 00000a72: DUP6 00000a73: ADD 00000a74: PUSH1 0x05 00000a76: SHR 00000a77: DUP3 00000a78: ADD 00000a79: SWAP3 00000a7a: PUSH1 0x20 00000a7c: DUP7 00000a7d: LT 00000a7e: PUSH2 0x0aa1 00000a81: JUMPI 00000a82: JUMPDEST 00000a83: ADD 00000a84: PUSH1 0x05 00000a86: SHR 00000a87: ADD 00000a88: SWAP1 00000a89: JUMPDEST 00000a8a: DUP2 00000a8b: DUP2 00000a8c: LT 00000a8d: PUSH2 0x0a96 00000a90: JUMPI 00000a91: POP 00000a92: PUSH2 0x08e2 00000a95: JUMP 00000a96: JUMPDEST 00000a97: DUP7 00000a98: DUP2 00000a99: SSTORE 00000a9a: PUSH1 0x01 00000a9c: ADD 00000a9d: PUSH2 0x0a89 00000aa0: JUMP 00000aa1: JUMPDEST 00000aa2: SWAP3 00000aa3: POP 00000aa4: DUP2 00000aa5: SWAP3 00000aa6: PUSH2 0x0a82 00000aa9: JUMP 00000aaa: JUMPDEST 00000aab: PUSH4 0x4e487b71 00000ab0: PUSH1 0xe0 00000ab2: SHL 00000ab3: DUP5 00000ab4: MSTORE 00000ab5: PUSH1 0x41 00000ab7: PUSH1 0x04 00000ab9: MSTORE 00000aba: PUSH1 0x24 00000abc: DUP5 00000abd: REVERT 00000abe: JUMPDEST 00000abf: ADD 00000ac0: MLOAD 00000ac1: SWAP1 00000ac2: POP 00000ac3: CODESIZE 00000ac4: DUP1 00000ac5: PUSH2 0x087b 00000ac8: JUMP 00000ac9: JUMPDEST 00000aca: PUSH1 0x00 00000acc: DUP1 00000acd: MLOAD 00000ace: PUSH1 0x20 00000ad0: PUSH2 0x2785 00000ad3: DUP4 00000ad4: CODECOPY 00000ad5: DUP2 00000ad6: MLOAD 00000ad7: SWAP2 00000ad8: MSTORE 00000ad9: DUP8 00000ada: MSTORE 00000adb: PUSH1 0x00 00000add: DUP1 00000ade: MLOAD 00000adf: PUSH1 0x20 00000ae1: PUSH2 0x27c5 00000ae4: DUP4 00000ae5: CODECOPY 00000ae6: DUP2 00000ae7: MLOAD 00000ae8: SWAP2 00000ae9: MSTORE 00000aea: SWAP3 00000aeb: POP 00000aec: PUSH1 0x1f 00000aee: NOT 00000aef: DUP5 00000af0: AND 00000af1: DUP8 00000af2: JUMPDEST 00000af3: DUP2 00000af4: DUP2 00000af5: LT 00000af6: PUSH2 0x0b3c 00000af9: JUMPI 00000afa: POP 00000afb: SWAP1 00000afc: DUP5 00000afd: PUSH1 0x01 00000aff: SWAP6 00000b00: SWAP5 00000b01: SWAP4 00000b02: SWAP3 00000b03: LT 00000b04: PUSH2 0x0b23 00000b07: JUMPI 00000b08: JUMPDEST 00000b09: POP 00000b0a: POP 00000b0b: POP 00000b0c: DUP2 00000b0d: SHL 00000b0e: ADD 00000b0f: PUSH1 0x00 00000b11: DUP1 00000b12: MLOAD 00000b13: PUSH1 0x20 00000b15: PUSH2 0x2785 00000b18: DUP4 00000b19: CODECOPY 00000b1a: DUP2 00000b1b: MLOAD 00000b1c: SWAP2 00000b1d: MSTORE 00000b1e: SSTORE 00000b1f: PUSH2 0x089e 00000b22: JUMP 00000b23: JUMPDEST 00000b24: ADD 00000b25: MLOAD 00000b26: PUSH1 0x00 00000b28: NOT 00000b29: PUSH1 0xf8 00000b2b: DUP5 00000b2c: PUSH1 0x03 00000b2e: SHL 00000b2f: AND 00000b30: SHR 00000b31: NOT 00000b32: AND 00000b33: SWAP1 00000b34: SSTORE 00000b35: CODESIZE 00000b36: DUP1 00000b37: DUP1 00000b38: PUSH2 0x0b08 00000b3b: JUMP 00000b3c: JUMPDEST 00000b3d: SWAP3 00000b3e: SWAP4 00000b3f: PUSH1 0x20 00000b41: PUSH1 0x01 00000b43: DUP2 00000b44: SWAP3 00000b45: DUP8 00000b46: DUP7 00000b47: ADD 00000b48: MLOAD 00000b49: DUP2 00000b4a: SSTORE 00000b4b: ADD 00000b4c: SWAP6 00000b4d: ADD 00000b4e: SWAP4 00000b4f: ADD 00000b50: PUSH2 0x0af2 00000b53: JUMP 00000b54: JUMPDEST 00000b55: SWAP1 00000b56: SWAP2 00000b57: POP 00000b58: PUSH1 0x00 00000b5a: DUP1 00000b5b: MLOAD 00000b5c: PUSH1 0x20 00000b5e: PUSH2 0x2785 00000b61: DUP4 00000b62: CODECOPY 00000b63: DUP2 00000b64: MLOAD 00000b65: SWAP2 00000b66: MSTORE 00000b67: DUP7 00000b68: MSTORE 00000b69: DUP4 00000b6a: DUP1 00000b6b: DUP5 00000b6c: ADD 00000b6d: PUSH1 0x05 00000b6f: SHR 00000b70: PUSH1 0x00 00000b72: DUP1 00000b73: MLOAD 00000b74: PUSH1 0x20 00000b76: PUSH2 0x27c5 00000b79: DUP4 00000b7a: CODECOPY 00000b7b: DUP2 00000b7c: MLOAD 00000b7d: SWAP2 00000b7e: MSTORE 00000b7f: ADD 00000b80: SWAP2 00000b81: PUSH1 0x20 00000b83: DUP6 00000b84: LT 00000b85: PUSH2 0x0bbf 00000b88: JUMPI 00000b89: JUMPDEST 00000b8a: SWAP1 00000b8b: DUP5 00000b8c: SWAP4 00000b8d: SWAP3 00000b8e: SWAP2 00000b8f: ADD 00000b90: PUSH1 0x05 00000b92: SHR 00000b93: PUSH1 0x00 00000b95: DUP1 00000b96: MLOAD 00000b97: PUSH1 0x20 00000b99: PUSH2 0x27c5 00000b9c: DUP4 00000b9d: CODECOPY 00000b9e: DUP2 00000b9f: MLOAD 00000ba0: SWAP2 00000ba1: MSTORE 00000ba2: ADD 00000ba3: SWAP1 00000ba4: JUMPDEST 00000ba5: DUP2 00000ba6: DUP2 00000ba7: LT 00000ba8: PUSH2 0x0bb1 00000bab: JUMPI 00000bac: POP 00000bad: PUSH2 0x0866 00000bb0: JUMP 00000bb1: JUMPDEST 00000bb2: DUP8 00000bb3: DUP2 00000bb4: SSTORE 00000bb5: DUP5 00000bb6: SWAP4 00000bb7: POP 00000bb8: PUSH1 0x01 00000bba: ADD 00000bbb: PUSH2 0x0ba4 00000bbe: JUMP 00000bbf: JUMPDEST 00000bc0: PUSH1 0x00 00000bc2: DUP1 00000bc3: MLOAD 00000bc4: PUSH1 0x20 00000bc6: PUSH2 0x27c5 00000bc9: DUP4 00000bca: CODECOPY 00000bcb: DUP2 00000bcc: MLOAD 00000bcd: SWAP2 00000bce: MSTORE 00000bcf: SWAP3 00000bd0: POP 00000bd1: PUSH2 0x0b89 00000bd4: JUMP 00000bd5: JUMPDEST 00000bd6: PUSH9 0xffffffffffffffffff 00000be0: NOT 00000be1: DUP5 00000be2: AND 00000be3: PUSH9 0x010000000000000001 00000bed: OR 00000bee: PUSH1 0x00 00000bf0: DUP1 00000bf1: MLOAD 00000bf2: PUSH1 0x20 00000bf4: PUSH2 0x27e5 00000bf7: DUP4 00000bf8: CODECOPY 00000bf9: DUP2 00000bfa: MLOAD 00000bfb: SWAP2 00000bfc: MSTORE 00000bfd: SSTORE 00000bfe: PUSH2 0x07c5 00000c01: JUMP 00000c02: JUMPDEST 00000c03: PUSH1 0x40 00000c05: MLOAD 00000c06: PUSH4 0xf92ee8a9 00000c0b: PUSH1 0xe0 00000c0d: SHL 00000c0e: DUP2 00000c0f: MSTORE 00000c10: PUSH1 0x04 00000c12: SWAP1 00000c13: REVERT 00000c14: JUMPDEST 00000c15: SWAP1 00000c16: POP 00000c17: ISZERO 00000c18: CODESIZE 00000c19: PUSH2 0x0791 00000c1c: JUMP 00000c1d: JUMPDEST 00000c1e: ADDRESS 00000c1f: EXTCODESIZE 00000c20: ISZERO 00000c21: SWAP2 00000c22: POP 00000c23: PUSH2 0x0789 00000c26: JUMP 00000c27: JUMPDEST 00000c28: PUSH1 0x40 00000c2a: DUP6 00000c2b: SWAP1 00000c2c: SHR 00000c2d: PUSH1 0xff 00000c2f: AND 00000c30: ISZERO 00000c31: SWAP2 00000c32: POP 00000c33: PUSH2 0x077f 00000c36: JUMP 00000c37: JUMPDEST 00000c38: POP 00000c39: CALLVALUE 00000c3a: PUSH2 0x0219 00000c3d: JUMPI 00000c3e: DUP1 00000c3f: PUSH1 0x03 00000c41: NOT 00000c42: CALLDATASIZE 00000c43: ADD 00000c44: SLT 00000c45: PUSH2 0x0219 00000c48: JUMPI 00000c49: SLOAD 00000c4a: PUSH1 0x40 00000c4c: MLOAD 00000c4d: PUSH1 0x20 00000c4f: SWAP2 00000c50: PUSH1 0xff 00000c52: AND 00000c53: PUSH2 0x0c5b 00000c56: DUP2 00000c57: PUSH2 0x2012 00000c5a: JUMP 00000c5b: JUMPDEST 00000c5c: DUP2 00000c5d: MSTORE 00000c5e: RETURN 00000c5f: JUMPDEST 00000c60: POP 00000c61: CALLVALUE 00000c62: PUSH2 0x0219 00000c65: JUMPI 00000c66: PUSH1 0x40 00000c68: CALLDATASIZE 00000c69: PUSH1 0x03 00000c6b: NOT 00000c6c: ADD 00000c6d: SLT 00000c6e: PUSH2 0x0219 00000c71: JUMPI 00000c72: PUSH2 0x0c79 00000c75: PUSH2 0x1edf 00000c78: JUMP 00000c79: JUMPDEST 00000c7a: PUSH1 0x40 00000c7c: PUSH2 0x0c83 00000c7f: PUSH2 0x1ef5 00000c82: JUMP 00000c83: JUMPDEST 00000c84: SWAP3 00000c85: PUSH1 0x01 00000c87: DUP1 00000c88: PUSH1 0xa0 00000c8a: SHL 00000c8b: SUB 00000c8c: DUP1 00000c8d: SWAP4 00000c8e: AND 00000c8f: DUP2 00000c90: MSTORE 00000c91: PUSH1 0x02 00000c93: PUSH1 0x20 00000c95: MSTORE 00000c96: KECCAK256 00000c97: SWAP2 00000c98: AND 00000c99: PUSH1 0x00 00000c9b: MSTORE 00000c9c: PUSH1 0x20 00000c9e: MSTORE 00000c9f: PUSH1 0x20 00000ca1: PUSH1 0x40 00000ca3: PUSH1 0x00 00000ca5: KECCAK256 00000ca6: SLOAD 00000ca7: PUSH1 0x40 00000ca9: MLOAD 00000caa: SWAP1 00000cab: DUP2 00000cac: MSTORE 00000cad: RETURN 00000cae: JUMPDEST 00000caf: POP 00000cb0: CALLVALUE 00000cb1: PUSH2 0x0219 00000cb4: JUMPI 00000cb5: PUSH1 0x20 00000cb7: CALLDATASIZE 00000cb8: PUSH1 0x03 00000cba: NOT 00000cbb: ADD 00000cbc: SLT 00000cbd: PUSH2 0x0219 00000cc0: JUMPI 00000cc1: CALLER 00000cc2: DUP1 00000cc3: DUP3 00000cc4: MSTORE 00000cc5: PUSH1 0x01 00000cc7: PUSH1 0x20 00000cc9: DUP2 00000cca: DUP2 00000ccb: MSTORE 00000ccc: PUSH1 0x40 00000cce: DUP1 00000ccf: DUP6 00000cd0: KECCAK256 00000cd1: PUSH1 0x04 00000cd3: CALLDATALOAD 00000cd4: DUP1 00000cd5: DUP8 00000cd6: MSTORE 00000cd7: SWAP1 00000cd8: DUP4 00000cd9: MSTORE 00000cda: DUP2 00000cdb: DUP7 00000cdc: KECCAK256 00000cdd: DUP1 00000cde: SLOAD 00000cdf: PUSH1 0xff 00000ce1: NOT 00000ce2: AND 00000ce3: SWAP1 00000ce4: SWAP5 00000ce5: OR 00000ce6: SWAP1 00000ce7: SWAP4 00000ce8: SSTORE 00000ce9: DUP1 00000cea: MLOAD 00000ceb: SWAP4 00000cec: DUP5 00000ced: MSTORE 00000cee: SWAP1 00000cef: DUP4 00000cf0: ADD 00000cf1: SWAP2 00000cf2: SWAP1 00000cf3: SWAP2 00000cf4: MSTORE 00000cf5: PUSH32 0x0e6a4f4985873f666a9aa21268ce8c462bedf4231c9ed2811360ce956701cb28 00000d16: SWAP2 00000d17: LOG1 00000d18: DUP1 00000d19: RETURN 00000d1a: JUMPDEST 00000d1b: POP 00000d1c: CALLVALUE 00000d1d: PUSH2 0x0219 00000d20: JUMPI 00000d21: DUP1 00000d22: PUSH1 0x03 00000d24: NOT 00000d25: CALLDATASIZE 00000d26: ADD 00000d27: SLT 00000d28: PUSH2 0x0219 00000d2b: JUMPI 00000d2c: PUSH2 0x0d60 00000d2f: PUSH1 0x40 00000d31: MLOAD 00000d32: PUSH2 0x0d3a 00000d35: DUP2 00000d36: PUSH2 0x1f44 00000d39: JUMP 00000d3a: JUMPDEST 00000d3b: PUSH1 0x05 00000d3d: DUP2 00000d3e: MSTORE 00000d3f: PUSH5 0x0352e302e3 00000d45: PUSH1 0xdc 00000d47: SHL 00000d48: PUSH1 0x20 00000d4a: DUP3 00000d4b: ADD 00000d4c: MSTORE 00000d4d: PUSH1 0x40 00000d4f: MLOAD 00000d50: SWAP2 00000d51: DUP3 00000d52: SWAP2 00000d53: PUSH1 0x20 00000d55: DUP4 00000d56: MSTORE 00000d57: PUSH1 0x20 00000d59: DUP4 00000d5a: ADD 00000d5b: SWAP1 00000d5c: PUSH2 0x1fd2 00000d5f: JUMP 00000d60: JUMPDEST 00000d61: SUB 00000d62: SWAP1 00000d63: RETURN 00000d64: JUMPDEST 00000d65: POP 00000d66: CALLVALUE 00000d67: PUSH2 0x0219 00000d6a: JUMPI 00000d6b: DUP1 00000d6c: PUSH1 0x03 00000d6e: NOT 00000d6f: CALLDATASIZE 00000d70: ADD 00000d71: SLT 00000d72: PUSH2 0x0219 00000d75: JUMPI 00000d76: PUSH1 0x40 00000d78: MLOAD 00000d79: PUSH32 0x00000000000000000000000031b72d76fb666844c41edf08df0254875dbb7edb 00000d9a: PUSH1 0x01 00000d9c: PUSH1 0x01 00000d9e: PUSH1 0xa0 00000da0: SHL 00000da1: SUB 00000da2: AND 00000da3: DUP2 00000da4: MSTORE 00000da5: PUSH1 0x20 00000da7: SWAP1 00000da8: RETURN 00000da9: JUMPDEST 00000daa: POP 00000dab: CALLVALUE 00000dac: PUSH2 0x0219 00000daf: JUMPI 00000db0: DUP1 00000db1: PUSH1 0x03 00000db3: NOT 00000db4: CALLDATASIZE 00000db5: ADD 00000db6: SLT 00000db7: PUSH2 0x0219 00000dba: JUMPI 00000dbb: PUSH1 0x00 00000dbd: DUP1 00000dbe: MLOAD 00000dbf: PUSH1 0x20 00000dc1: PUSH2 0x27a5 00000dc4: DUP4 00000dc5: CODECOPY 00000dc6: DUP2 00000dc7: MLOAD 00000dc8: SWAP2 00000dc9: MSTORE 00000dca: SLOAD 00000dcb: PUSH1 0x40 00000dcd: MLOAD 00000dce: PUSH1 0x01 00000dd0: PUSH1 0x01 00000dd2: PUSH1 0xa0 00000dd4: SHL 00000dd5: SUB 00000dd6: SWAP1 00000dd7: SWAP2 00000dd8: AND 00000dd9: DUP2 00000dda: MSTORE 00000ddb: PUSH1 0x20 00000ddd: SWAP1 00000dde: RETURN 00000ddf: JUMPDEST 00000de0: POP 00000de1: CALLVALUE 00000de2: PUSH2 0x0219 00000de5: JUMPI 00000de6: DUP1 00000de7: PUSH1 0x03 00000de9: NOT 00000dea: CALLDATASIZE 00000deb: ADD 00000dec: SLT 00000ded: PUSH2 0x0219 00000df0: JUMPI 00000df1: PUSH1 0x36 00000df3: SLOAD 00000df4: PUSH1 0x01 00000df6: PUSH1 0x01 00000df8: PUSH1 0xa0 00000dfa: SHL 00000dfb: SUB 00000dfc: SWAP1 00000dfd: DUP2 00000dfe: AND 00000dff: CALLER 00000e00: SUB 00000e01: PUSH2 0x069a 00000e04: JUMPI 00000e05: PUSH1 0x03 00000e07: PUSH1 0xff 00000e09: DUP4 00000e0a: SLOAD 00000e0b: AND 00000e0c: PUSH2 0x0e14 00000e0f: DUP2 00000e10: PUSH2 0x2012 00000e13: JUMP 00000e14: JUMPDEST 00000e15: SUB 00000e16: PUSH2 0x0f4d 00000e19: JUMPI 00000e1a: PUSH1 0x35 00000e1c: SLOAD 00000e1d: PUSH1 0x40 00000e1f: MLOAD 00000e20: PUSH4 0x70a08231 00000e25: PUSH1 0xe0 00000e27: SHL 00000e28: DUP2 00000e29: MSTORE 00000e2a: ADDRESS 00000e2b: PUSH1 0x04 00000e2d: DUP3 00000e2e: ADD 00000e2f: MSTORE 00000e30: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00000e51: SWAP1 00000e52: SWAP3 00000e53: AND 00000e54: SWAP2 00000e55: DUP4 00000e56: SWAP2 00000e57: PUSH1 0x20 00000e59: DUP3 00000e5a: PUSH1 0x24 00000e5c: DUP2 00000e5d: DUP8 00000e5e: GAS 00000e5f: STATICCALL 00000e60: SWAP2 00000e61: DUP3 00000e62: ISZERO 00000e63: PUSH2 0x0f42 00000e66: JUMPI 00000e67: DUP4 00000e68: SWAP3 00000e69: PUSH2 0x0f0e 00000e6c: JUMPI 00000e6d: JUMPDEST 00000e6e: POP 00000e6f: DUP2 00000e70: DUP2 00000e71: GT 00000e72: ISZERO 00000e73: PUSH2 0x0f06 00000e76: JUMPI 00000e77: POP 00000e78: SWAP2 00000e79: JUMPDEST 00000e7a: DUP3 00000e7b: PUSH2 0x0ec2 00000e7e: JUMPI 00000e7f: JUMPDEST 00000e80: POP 00000e81: PUSH1 0x35 00000e83: SSTORE 00000e84: PUSH1 0x36 00000e86: DUP1 00000e87: SLOAD 00000e88: PUSH1 0x01 00000e8a: PUSH1 0x01 00000e8c: PUSH1 0xa0 00000e8e: SHL 00000e8f: SUB 00000e90: NOT 00000e91: AND 00000e92: SWAP1 00000e93: SSTORE 00000e94: PUSH1 0x40 00000e96: MLOAD 00000e97: SWAP1 00000e98: DUP2 00000e99: MSTORE 00000e9a: PUSH32 0x82691da855159f603f5aecf930c44c33ed2b5838cbb20d7009074b3853c6a31d 00000ebb: SWAP1 00000ebc: PUSH1 0x20 00000ebe: SWAP1 00000ebf: LOG1 00000ec0: DUP1 00000ec1: RETURN 00000ec2: JUMPDEST 00000ec3: DUP1 00000ec4: EXTCODESIZE 00000ec5: ISZERO 00000ec6: PUSH2 0x034d 00000ec9: JUMPI 00000eca: DUP2 00000ecb: DUP1 00000ecc: SWAP2 00000ecd: PUSH1 0x24 00000ecf: PUSH1 0x40 00000ed1: MLOAD 00000ed2: DUP1 00000ed3: SWAP5 00000ed4: DUP2 00000ed5: SWAP4 00000ed6: PUSH4 0x0852cd8d 00000edb: PUSH1 0xe3 00000edd: SHL 00000ede: DUP4 00000edf: MSTORE 00000ee0: DUP9 00000ee1: PUSH1 0x04 00000ee3: DUP5 00000ee4: ADD 00000ee5: MSTORE 00000ee6: GAS 00000ee7: CALL 00000ee8: DUP1 00000ee9: ISZERO 00000eea: PUSH2 0x0351 00000eed: JUMPI 00000eee: ISZERO 00000eef: PUSH2 0x0e7f 00000ef2: JUMPI 00000ef3: PUSH2 0x0efb 00000ef6: SWAP1 00000ef7: PUSH2 0x1f31 00000efa: JUMP 00000efb: JUMPDEST 00000efc: PUSH2 0x034d 00000eff: JUMPI 00000f00: DUP2 00000f01: CODESIZE 00000f02: PUSH2 0x0e7f 00000f05: JUMP 00000f06: JUMPDEST 00000f07: SWAP1 00000f08: POP 00000f09: SWAP2 00000f0a: PUSH2 0x0e79 00000f0d: JUMP 00000f0e: JUMPDEST 00000f0f: SWAP1 00000f10: SWAP2 00000f11: POP 00000f12: PUSH1 0x20 00000f14: DUP2 00000f15: RETURNDATASIZE 00000f16: PUSH1 0x20 00000f18: GT 00000f19: PUSH2 0x0f3a 00000f1c: JUMPI 00000f1d: JUMPDEST 00000f1e: DUP2 00000f1f: PUSH2 0x0f2a 00000f22: PUSH1 0x20 00000f24: SWAP4 00000f25: DUP4 00000f26: PUSH2 0x1f5f 00000f29: JUMP 00000f2a: JUMPDEST 00000f2b: DUP2 00000f2c: ADD 00000f2d: SUB 00000f2e: SLT 00000f2f: PUSH2 0x035c 00000f32: JUMPI 00000f33: MLOAD 00000f34: SWAP1 00000f35: CODESIZE 00000f36: PUSH2 0x0e6d 00000f39: JUMP 00000f3a: JUMPDEST 00000f3b: RETURNDATASIZE 00000f3c: SWAP2 00000f3d: POP 00000f3e: PUSH2 0x0f1d 00000f41: JUMP 00000f42: JUMPDEST 00000f43: PUSH1 0x40 00000f45: MLOAD 00000f46: RETURNDATASIZE 00000f47: DUP6 00000f48: DUP3 00000f49: RETURNDATACOPY 00000f4a: RETURNDATASIZE 00000f4b: SWAP1 00000f4c: REVERT 00000f4d: JUMPDEST 00000f4e: PUSH1 0x40 00000f50: MLOAD 00000f51: PUSH4 0x622facd5 00000f56: PUSH1 0xe1 00000f58: SHL 00000f59: DUP2 00000f5a: MSTORE 00000f5b: PUSH1 0x04 00000f5d: SWAP1 00000f5e: REVERT 00000f5f: JUMPDEST 00000f60: POP 00000f61: CALLVALUE 00000f62: PUSH2 0x0219 00000f65: JUMPI 00000f66: DUP1 00000f67: PUSH1 0x03 00000f69: NOT 00000f6a: CALLDATASIZE 00000f6b: ADD 00000f6c: SLT 00000f6d: PUSH2 0x0219 00000f70: JUMPI 00000f71: PUSH1 0x40 00000f73: MLOAD 00000f74: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00000f95: PUSH1 0x01 00000f97: PUSH1 0x01 00000f99: PUSH1 0xa0 00000f9b: SHL 00000f9c: SUB 00000f9d: AND 00000f9e: DUP2 00000f9f: MSTORE 00000fa0: PUSH1 0x20 00000fa2: SWAP1 00000fa3: RETURN 00000fa4: JUMPDEST 00000fa5: POP 00000fa6: CALLVALUE 00000fa7: PUSH2 0x0219 00000faa: JUMPI 00000fab: DUP1 00000fac: PUSH1 0x03 00000fae: NOT 00000faf: CALLDATASIZE 00000fb0: ADD 00000fb1: SLT 00000fb2: PUSH2 0x0219 00000fb5: JUMPI 00000fb6: PUSH32 0xa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100 00000fd7: SLOAD 00000fd8: ISZERO 00000fd9: DUP1 00000fda: PUSH2 0x10d9 00000fdd: JUMPI 00000fde: JUMPDEST 00000fdf: ISZERO 00000fe0: PUSH2 0x109c 00000fe3: JUMPI 00000fe4: PUSH2 0x0feb 00000fe7: PUSH2 0x2350 00000fea: JUMP 00000feb: JUMPDEST 00000fec: SWAP1 00000fed: PUSH2 0x0ff4 00000ff0: PUSH2 0x2414 00000ff3: JUMP 00000ff4: JUMPDEST 00000ff5: SWAP1 00000ff6: PUSH1 0x40 00000ff8: MLOAD 00000ff9: SWAP1 00000ffa: PUSH1 0x20 00000ffc: SWAP1 00000ffd: PUSH1 0x20 00000fff: DUP4 00001000: ADD 00001001: SWAP4 00001002: DUP4 00001003: DUP6 00001004: LT 00001005: PUSH1 0x01 00001007: PUSH1 0x01 00001009: PUSH1 0x40 0000100b: SHL 0000100c: SUB 0000100d: DUP7 0000100e: GT 0000100f: OR 00001010: PUSH2 0x0597 00001013: JUMPI 00001014: SWAP3 00001015: DUP5 00001016: SWAP3 00001017: PUSH1 0x20 00001019: PUSH2 0x1052 0000101c: DUP9 0000101d: SWAP7 0000101e: PUSH2 0x1044 00001021: SWAP9 00001022: PUSH1 0x40 00001024: MSTORE 00001025: DUP6 00001026: DUP6 00001027: MSTORE 00001028: PUSH1 0x40 0000102a: MLOAD 0000102b: SWAP9 0000102c: DUP10 0000102d: SWAP9 0000102e: PUSH1 0x0f 00001030: PUSH1 0xf8 00001032: SHL 00001033: DUP11 00001034: MSTORE 00001035: PUSH1 0xe0 00001037: DUP6 00001038: DUP12 00001039: ADD 0000103a: MSTORE 0000103b: PUSH1 0xe0 0000103d: DUP11 0000103e: ADD 0000103f: SWAP1 00001040: PUSH2 0x1fd2 00001043: JUMP 00001044: JUMPDEST 00001045: SWAP1 00001046: DUP9 00001047: DUP3 00001048: SUB 00001049: PUSH1 0x40 0000104b: DUP11 0000104c: ADD 0000104d: MSTORE 0000104e: PUSH2 0x1fd2 00001051: JUMP 00001052: JUMPDEST 00001053: SWAP3 00001054: CHAINID 00001055: PUSH1 0x60 00001057: DUP9 00001058: ADD 00001059: MSTORE 0000105a: ADDRESS 0000105b: PUSH1 0x80 0000105d: DUP9 0000105e: ADD 0000105f: MSTORE 00001060: DUP5 00001061: PUSH1 0xa0 00001063: DUP9 00001064: ADD 00001065: MSTORE 00001066: DUP7 00001067: DUP5 00001068: SUB 00001069: PUSH1 0xc0 0000106b: DUP9 0000106c: ADD 0000106d: MSTORE 0000106e: MLOAD 0000106f: SWAP3 00001070: DUP4 00001071: DUP2 00001072: MSTORE 00001073: ADD 00001074: SWAP4 00001075: SWAP3 00001076: JUMPDEST 00001077: DUP3 00001078: DUP2 00001079: LT 0000107a: PUSH2 0x1085 0000107d: JUMPI 0000107e: POP 0000107f: POP 00001080: POP 00001081: POP 00001082: SUB 00001083: SWAP1 00001084: RETURN 00001085: JUMPDEST 00001086: DUP4 00001087: MLOAD 00001088: DUP6 00001089: MSTORE 0000108a: DUP7 0000108b: SWAP6 0000108c: POP 0000108d: SWAP4 0000108e: DUP2 0000108f: ADD 00001090: SWAP4 00001091: SWAP3 00001092: DUP2 00001093: ADD 00001094: SWAP3 00001095: PUSH1 0x01 00001097: ADD 00001098: PUSH2 0x1076 0000109b: JUMP 0000109c: JUMPDEST 0000109d: PUSH1 0x40 0000109f: MLOAD 000010a0: PUSH3 0x461bcd 000010a4: PUSH1 0xe5 000010a6: SHL 000010a7: DUP2 000010a8: MSTORE 000010a9: PUSH1 0x20 000010ab: PUSH1 0x04 000010ad: DUP3 000010ae: ADD 000010af: MSTORE 000010b0: PUSH1 0x15 000010b2: PUSH1 0x24 000010b4: DUP3 000010b5: ADD 000010b6: MSTORE 000010b7: PUSH21 0x1152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959 000010cd: PUSH1 0x5a 000010cf: SHL 000010d0: PUSH1 0x44 000010d2: DUP3 000010d3: ADD 000010d4: MSTORE 000010d5: PUSH1 0x64 000010d7: SWAP1 000010d8: REVERT 000010d9: JUMPDEST 000010da: POP 000010db: PUSH32 0xa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101 000010fc: SLOAD 000010fd: ISZERO 000010fe: PUSH2 0x0fde 00001101: JUMP 00001102: JUMPDEST 00001103: POP 00001104: CALLVALUE 00001105: PUSH2 0x0219 00001108: JUMPI 00001109: DUP1 0000110a: PUSH1 0x03 0000110c: NOT 0000110d: CALLDATASIZE 0000110e: ADD 0000110f: SLT 00001110: PUSH2 0x0219 00001113: JUMPI 00001114: PUSH2 0x111b 00001117: PUSH2 0x22dd 0000111a: JUMP 0000111b: JUMPDEST 0000111c: PUSH1 0x00 0000111e: DUP1 0000111f: MLOAD 00001120: PUSH1 0x20 00001122: PUSH2 0x27a5 00001125: DUP4 00001126: CODECOPY 00001127: DUP2 00001128: MLOAD 00001129: SWAP2 0000112a: MSTORE 0000112b: DUP1 0000112c: SLOAD 0000112d: PUSH1 0x01 0000112f: PUSH1 0x01 00001131: PUSH1 0xa0 00001133: SHL 00001134: SUB 00001135: NOT 00001136: DUP2 00001137: AND 00001138: SWAP1 00001139: SWAP2 0000113a: SSTORE 0000113b: PUSH1 0x00 0000113d: SWAP1 0000113e: PUSH1 0x01 00001140: PUSH1 0x01 00001142: PUSH1 0xa0 00001144: SHL 00001145: SUB 00001146: AND 00001147: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00001168: DUP3 00001169: DUP1 0000116a: LOG3 0000116b: DUP1 0000116c: RETURN 0000116d: JUMPDEST 0000116e: POP 0000116f: CALLVALUE 00001170: PUSH2 0x0219 00001173: JUMPI 00001174: PUSH1 0x40 00001176: CALLDATASIZE 00001177: PUSH1 0x03 00001179: NOT 0000117a: ADD 0000117b: SLT 0000117c: PUSH2 0x0219 0000117f: JUMPI 00001180: PUSH2 0x1187 00001183: PUSH2 0x1edf 00001186: JUMP 00001187: JUMPDEST 00001188: ADDRESS 00001189: CALLER 0000118a: SUB 0000118b: PUSH2 0x069a 0000118e: JUMPI 0000118f: PUSH2 0x03b1 00001192: SWAP1 00001193: PUSH1 0x24 00001195: CALLDATALOAD 00001196: SWAP1 00001197: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 000011b8: PUSH1 0x01 000011ba: PUSH1 0x01 000011bc: PUSH1 0xa0 000011be: SHL 000011bf: SUB 000011c0: AND 000011c1: PUSH2 0x229a 000011c4: JUMP 000011c5: JUMPDEST 000011c6: POP 000011c7: CALLVALUE 000011c8: PUSH2 0x0219 000011cb: JUMPI 000011cc: PUSH1 0x20 000011ce: CALLDATASIZE 000011cf: PUSH1 0x03 000011d1: NOT 000011d2: ADD 000011d3: SLT 000011d4: PUSH2 0x0219 000011d7: JUMPI 000011d8: PUSH2 0x11df 000011db: PUSH2 0x1f1e 000011de: JUMP 000011df: JUMPDEST 000011e0: PUSH2 0x11e7 000011e3: PUSH2 0x22dd 000011e6: JUMP 000011e7: JUMPDEST 000011e8: DUP2 000011e9: SLOAD 000011ea: PUSH1 0xff 000011ec: DUP2 000011ed: AND 000011ee: PUSH2 0x11f6 000011f1: DUP2 000011f2: PUSH2 0x2012 000011f5: JUMP 000011f6: JUMPDEST 000011f7: PUSH1 0x01 000011f9: DUP2 000011fa: EQ 000011fb: ISZERO 000011fc: SWAP1 000011fd: DUP2 000011fe: PUSH2 0x1307 00001201: JUMPI 00001202: JUMPDEST 00001203: POP 00001204: PUSH2 0x12f5 00001207: JUMPI 00001208: PUSH1 0xff 0000120a: NOT 0000120b: AND 0000120c: DUP3 0000120d: SSTORE 0000120e: PUSH1 0x40 00001210: MLOAD 00001211: PUSH4 0xfc8b55c7 00001216: PUSH1 0xe0 00001218: SHL 00001219: PUSH1 0x20 0000121b: DUP3 0000121c: ADD 0000121d: MSTORE 0000121e: PUSH1 0x04 00001220: DUP2 00001221: MSTORE 00001222: PUSH32 0x00000000000000000000000031b72d76fb666844c41edf08df0254875dbb7edb 00001243: PUSH1 0x01 00001245: PUSH1 0x01 00001247: PUSH1 0xa0 00001249: SHL 0000124a: SUB 0000124b: AND 0000124c: SWAP2 0000124d: DUP4 0000124e: SWAP2 0000124f: PUSH2 0x1257 00001252: DUP2 00001253: PUSH2 0x1f44 00001256: JUMP 00001257: JUMPDEST 00001258: DUP4 00001259: EXTCODESIZE 0000125a: ISZERO 0000125b: PUSH2 0x035c 0000125e: JUMPI 0000125f: PUSH1 0x40 00001261: MLOAD 00001262: PUSH4 0x3dbb202b 00001267: PUSH1 0xe0 00001269: SHL 0000126a: DUP2 0000126b: MSTORE 0000126c: SWAP2 0000126d: DUP4 0000126e: SWAP2 0000126f: DUP4 00001270: SWAP2 00001271: DUP3 00001272: SWAP2 00001273: PUSH2 0x12a1 00001276: SWAP2 00001277: SWAP1 00001278: PUSH32 0x0000000000000000000000003b1ac69368eb6447f5db2d4e1641380fa9e40d29 00001299: PUSH1 0x04 0000129b: DUP6 0000129c: ADD 0000129d: PUSH2 0x2069 000012a0: JUMP 000012a1: JUMPDEST 000012a2: SUB 000012a3: DUP2 000012a4: DUP4 000012a5: DUP8 000012a6: GAS 000012a7: CALL 000012a8: DUP1 000012a9: ISZERO 000012aa: PUSH2 0x0351 000012ad: JUMPI 000012ae: PUSH2 0x12e1 000012b1: JUMPI 000012b2: JUMPDEST 000012b3: POP 000012b4: PUSH32 0xf1e9473f25478fe3af97fb26517a1882c3addc66e942ce3c98a2aeffaec54a58 000012d5: PUSH1 0x20 000012d7: DUP4 000012d8: PUSH1 0x40 000012da: MLOAD 000012db: SWAP1 000012dc: DUP2 000012dd: MSTORE 000012de: LOG1 000012df: DUP1 000012e0: RETURN 000012e1: JUMPDEST 000012e2: PUSH2 0x12ea 000012e5: SWAP1 000012e6: PUSH2 0x1f31 000012e9: JUMP 000012ea: JUMPDEST 000012eb: PUSH2 0x034d 000012ee: JUMPI 000012ef: DUP2 000012f0: CODESIZE 000012f1: PUSH2 0x12b2 000012f4: JUMP 000012f5: JUMPDEST 000012f6: PUSH1 0x40 000012f8: MLOAD 000012f9: PUSH4 0x7812aefb 000012fe: PUSH1 0xe1 00001300: SHL 00001301: DUP2 00001302: MSTORE 00001303: PUSH1 0x04 00001305: SWAP1 00001306: REVERT 00001307: JUMPDEST 00001308: SWAP1 00001309: POP 0000130a: PUSH2 0x1312 0000130d: DUP2 0000130e: PUSH2 0x2012 00001311: JUMP 00001312: JUMPDEST 00001313: ISZERO 00001314: ISZERO 00001315: CODESIZE 00001316: PUSH2 0x1202 00001319: JUMP 0000131a: JUMPDEST 0000131b: POP 0000131c: CALLVALUE 0000131d: PUSH2 0x0219 00001320: JUMPI 00001321: PUSH1 0x40 00001323: CALLDATASIZE 00001324: PUSH1 0x03 00001326: NOT 00001327: ADD 00001328: SLT 00001329: PUSH2 0x0219 0000132c: JUMPI 0000132d: PUSH1 0x20 0000132f: SWAP1 00001330: PUSH1 0xff 00001332: SWAP1 00001333: PUSH1 0x40 00001335: SWAP1 00001336: PUSH1 0x01 00001338: PUSH1 0x01 0000133a: PUSH1 0xa0 0000133c: SHL 0000133d: SUB 0000133e: PUSH2 0x1345 00001341: PUSH2 0x1edf 00001344: JUMP 00001345: JUMPDEST 00001346: AND 00001347: DUP2 00001348: MSTORE 00001349: PUSH1 0x01 0000134b: DUP5 0000134c: MSTORE 0000134d: DUP2 0000134e: DUP2 0000134f: KECCAK256 00001350: PUSH1 0x24 00001352: CALLDATALOAD 00001353: DUP3 00001354: MSTORE 00001355: DUP5 00001356: MSTORE 00001357: KECCAK256 00001358: SLOAD 00001359: AND 0000135a: PUSH1 0x40 0000135c: MLOAD 0000135d: SWAP1 0000135e: ISZERO 0000135f: ISZERO 00001360: DUP2 00001361: MSTORE 00001362: RETURN 00001363: JUMPDEST 00001364: POP 00001365: CALLVALUE 00001366: PUSH2 0x0219 00001369: JUMPI 0000136a: DUP1 0000136b: PUSH1 0x03 0000136d: NOT 0000136e: CALLDATASIZE 0000136f: ADD 00001370: SLT 00001371: PUSH2 0x0219 00001374: JUMPI 00001375: PUSH32 0x00000000000000000000000061488ae9dedca3f29f5e72bbf23ba975862c20ba 00001396: PUSH1 0x01 00001398: PUSH1 0x01 0000139a: PUSH1 0xa0 0000139c: SHL 0000139d: SUB 0000139e: AND 0000139f: ADDRESS 000013a0: SUB 000013a1: PUSH2 0x13ce 000013a4: JUMPI 000013a5: PUSH1 0x20 000013a7: PUSH1 0x40 000013a9: MLOAD 000013aa: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 000013cb: DUP2 000013cc: MSTORE 000013cd: RETURN 000013ce: JUMPDEST 000013cf: PUSH1 0x40 000013d1: MLOAD 000013d2: PUSH4 0x703e46dd 000013d7: PUSH1 0xe1 000013d9: SHL 000013da: DUP2 000013db: MSTORE 000013dc: PUSH1 0x04 000013de: SWAP1 000013df: REVERT 000013e0: JUMPDEST 000013e1: POP 000013e2: CALLVALUE 000013e3: PUSH2 0x0219 000013e6: JUMPI 000013e7: PUSH1 0x40 000013e9: CALLDATASIZE 000013ea: PUSH1 0x03 000013ec: NOT 000013ed: ADD 000013ee: SLT 000013ef: PUSH2 0x0219 000013f2: JUMPI 000013f3: PUSH2 0x13fa 000013f6: PUSH2 0x1edf 000013f9: JUMP 000013fa: JUMPDEST 000013fb: PUSH1 0x24 000013fd: CALLDATALOAD 000013fe: SWAP1 000013ff: PUSH1 0x01 00001401: PUSH1 0x01 00001403: PUSH1 0xa0 00001405: SHL 00001406: SUB 00001407: SWAP1 00001408: PUSH32 0x00000000000000000000000031b72d76fb666844c41edf08df0254875dbb7edb 00001429: DUP3 0000142a: AND 0000142b: CALLER 0000142c: DUP2 0000142d: EQ 0000142e: DUP1 0000142f: ISZERO 00001430: SWAP2 00001431: SWAP1 00001432: PUSH2 0x14c0 00001435: JUMPI 00001436: JUMPDEST 00001437: POP 00001438: PUSH2 0x069a 0000143b: JUMPI 0000143c: PUSH1 0x03 0000143e: PUSH1 0xff 00001440: DUP6 00001441: SLOAD 00001442: AND 00001443: PUSH2 0x144b 00001446: DUP2 00001447: PUSH2 0x2012 0000144a: JUMP 0000144b: JUMPDEST 0000144c: SUB 0000144d: PUSH2 0x14ae 00001450: JUMPI 00001451: DUP2 00001452: DUP2 00001453: PUSH2 0x14a2 00001456: DUP6 00001457: PUSH1 0x20 00001459: SWAP5 0000145a: PUSH32 0xc47b52177930ba2672bfc1f75da55cf82adb3c61c2df74e28bdfefbf52ae9e05 0000147b: SWAP7 0000147c: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 0000149d: AND 0000149e: PUSH2 0x229a 000014a1: JUMP 000014a2: JUMPDEST 000014a3: PUSH1 0x40 000014a5: MLOAD 000014a6: SWAP5 000014a7: DUP6 000014a8: MSTORE 000014a9: AND 000014aa: SWAP3 000014ab: LOG2 000014ac: DUP1 000014ad: RETURN 000014ae: JUMPDEST 000014af: PUSH1 0x40 000014b1: MLOAD 000014b2: PUSH4 0x9e76a5b9 000014b7: PUSH1 0xe0 000014b9: SHL 000014ba: DUP2 000014bb: MSTORE 000014bc: PUSH1 0x04 000014be: SWAP1 000014bf: REVERT 000014c0: JUMPDEST 000014c1: PUSH1 0x40 000014c3: MLOAD 000014c4: PUSH4 0x6e296e45 000014c9: PUSH1 0xe0 000014cb: SHL 000014cc: DUP2 000014cd: MSTORE 000014ce: SWAP2 000014cf: POP 000014d0: PUSH1 0x20 000014d2: SWAP1 000014d3: DUP3 000014d4: SWAP1 000014d5: PUSH1 0x04 000014d7: SWAP1 000014d8: DUP3 000014d9: SWAP1 000014da: GAS 000014db: STATICCALL 000014dc: SWAP1 000014dd: DUP2 000014de: ISZERO 000014df: PUSH2 0x1536 000014e2: JUMPI 000014e3: DUP6 000014e4: SWAP2 000014e5: PUSH2 0x1517 000014e8: JUMPI 000014e9: JUMPDEST 000014ea: POP 000014eb: DUP3 000014ec: AND 000014ed: PUSH32 0x0000000000000000000000003b1ac69368eb6447f5db2d4e1641380fa9e40d29 0000150e: DUP4 0000150f: AND 00001510: EQ 00001511: ISZERO 00001512: CODESIZE 00001513: PUSH2 0x1436 00001516: JUMP 00001517: JUMPDEST 00001518: PUSH2 0x1530 0000151b: SWAP2 0000151c: POP 0000151d: PUSH1 0x20 0000151f: RETURNDATASIZE 00001520: PUSH1 0x20 00001522: GT 00001523: PUSH2 0x072e 00001526: JUMPI 00001527: PUSH2 0x071f 0000152a: DUP2 0000152b: DUP4 0000152c: PUSH2 0x1f5f 0000152f: JUMP 00001530: JUMPDEST 00001531: CODESIZE 00001532: PUSH2 0x14e9 00001535: JUMP 00001536: JUMPDEST 00001537: PUSH1 0x40 00001539: MLOAD 0000153a: RETURNDATASIZE 0000153b: DUP8 0000153c: DUP3 0000153d: RETURNDATACOPY 0000153e: RETURNDATASIZE 0000153f: SWAP1 00001540: REVERT 00001541: JUMPDEST 00001542: POP 00001543: PUSH1 0x40 00001545: CALLDATASIZE 00001546: PUSH1 0x03 00001548: NOT 00001549: ADD 0000154a: SLT 0000154b: PUSH2 0x0219 0000154e: JUMPI 0000154f: PUSH2 0x1556 00001552: PUSH2 0x1edf 00001555: JUMP 00001556: JUMPDEST 00001557: PUSH1 0x24 00001559: CALLDATALOAD 0000155a: PUSH1 0x01 0000155c: PUSH1 0x01 0000155e: PUSH1 0x40 00001560: SHL 00001561: SUB 00001562: DUP2 00001563: GT 00001564: PUSH2 0x035c 00001567: JUMPI 00001568: CALLDATASIZE 00001569: PUSH1 0x23 0000156b: DUP3 0000156c: ADD 0000156d: SLT 0000156e: ISZERO 0000156f: PUSH2 0x035c 00001572: JUMPI 00001573: PUSH2 0x1586 00001576: SWAP1 00001577: CALLDATASIZE 00001578: SWAP1 00001579: PUSH1 0x24 0000157b: DUP2 0000157c: PUSH1 0x04 0000157e: ADD 0000157f: CALLDATALOAD 00001580: SWAP2 00001581: ADD 00001582: PUSH2 0x1f9b 00001585: JUMP 00001586: JUMPDEST 00001587: PUSH1 0x01 00001589: PUSH1 0x01 0000158b: PUSH1 0xa0 0000158d: SHL 0000158e: SUB 0000158f: PUSH32 0x00000000000000000000000061488ae9dedca3f29f5e72bbf23ba975862c20ba 000015b0: DUP2 000015b1: AND 000015b2: ADDRESS 000015b3: DUP2 000015b4: EQ 000015b5: SWAP1 000015b6: DUP2 000015b7: ISZERO 000015b8: PUSH2 0x171e 000015bb: JUMPI 000015bc: JUMPDEST 000015bd: POP 000015be: PUSH2 0x13ce 000015c1: JUMPI 000015c2: PUSH2 0x15c9 000015c5: PUSH2 0x22dd 000015c8: JUMP 000015c9: JUMPDEST 000015ca: DUP3 000015cb: AND 000015cc: SWAP2 000015cd: PUSH1 0x40 000015cf: MLOAD 000015d0: PUSH4 0x52d1902d 000015d5: PUSH1 0xe0 000015d7: SHL 000015d8: DUP2 000015d9: MSTORE 000015da: PUSH1 0x20 000015dc: DUP2 000015dd: PUSH1 0x04 000015df: DUP2 000015e0: DUP8 000015e1: GAS 000015e2: STATICCALL 000015e3: DUP6 000015e4: SWAP2 000015e5: DUP2 000015e6: PUSH2 0x16ea 000015e9: JUMPI 000015ea: JUMPDEST 000015eb: POP 000015ec: PUSH2 0x1608 000015ef: JUMPI 000015f0: PUSH1 0x40 000015f2: MLOAD 000015f3: PUSH4 0x4c9c8ce3 000015f8: PUSH1 0xe0 000015fa: SHL 000015fb: DUP2 000015fc: MSTORE 000015fd: PUSH1 0x04 000015ff: DUP2 00001600: ADD 00001601: DUP6 00001602: SWAP1 00001603: MSTORE 00001604: PUSH1 0x24 00001606: SWAP1 00001607: REVERT 00001608: JUMPDEST 00001609: SWAP3 0000160a: DUP5 0000160b: SWAP4 0000160c: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 0000162d: SWAP1 0000162e: DUP2 0000162f: DUP2 00001630: SUB 00001631: PUSH2 0x16d2 00001634: JUMPI 00001635: POP 00001636: DUP3 00001637: EXTCODESIZE 00001638: ISZERO 00001639: PUSH2 0x16b9 0000163c: JUMPI 0000163d: DUP1 0000163e: SLOAD 0000163f: PUSH1 0x01 00001641: PUSH1 0x01 00001643: PUSH1 0xa0 00001645: SHL 00001646: SUB 00001647: NOT 00001648: AND 00001649: DUP3 0000164a: OR 0000164b: SWAP1 0000164c: SSTORE 0000164d: PUSH1 0x40 0000164f: MLOAD 00001650: DUP5 00001651: SWAP2 00001652: PUSH32 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b 00001673: DUP4 00001674: DUP1 00001675: LOG2 00001676: DUP4 00001677: MLOAD 00001678: ISZERO 00001679: PUSH2 0x169d 0000167c: JUMPI 0000167d: POP 0000167e: DUP1 0000167f: DUP4 00001680: PUSH1 0x20 00001682: PUSH2 0x1699 00001685: SWAP6 00001686: MLOAD 00001687: SWAP2 00001688: ADD 00001689: DUP5 0000168a: GAS 0000168b: DELEGATECALL 0000168c: PUSH2 0x1693 0000168f: PUSH2 0x25b2 00001692: JUMP 00001693: JUMPDEST 00001694: SWAP2 00001695: PUSH2 0x2672 00001698: JUMP 00001699: JUMPDEST 0000169a: POP 0000169b: DUP1 0000169c: RETURN 0000169d: JUMPDEST 0000169e: SWAP3 0000169f: POP 000016a0: POP 000016a1: POP 000016a2: CALLVALUE 000016a3: PUSH2 0x16aa 000016a6: JUMPI 000016a7: POP 000016a8: DUP1 000016a9: RETURN 000016aa: JUMPDEST 000016ab: PUSH4 0xb398979f 000016b0: PUSH1 0xe0 000016b2: SHL 000016b3: DUP2 000016b4: MSTORE 000016b5: PUSH1 0x04 000016b7: SWAP1 000016b8: REVERT 000016b9: JUMPDEST 000016ba: PUSH1 0x40 000016bc: MLOAD 000016bd: PUSH4 0x4c9c8ce3 000016c2: PUSH1 0xe0 000016c4: SHL 000016c5: DUP2 000016c6: MSTORE 000016c7: PUSH1 0x04 000016c9: DUP2 000016ca: ADD 000016cb: DUP4 000016cc: SWAP1 000016cd: MSTORE 000016ce: PUSH1 0x24 000016d0: SWAP1 000016d1: REVERT 000016d2: JUMPDEST 000016d3: PUSH1 0x24 000016d5: SWAP1 000016d6: PUSH1 0x40 000016d8: MLOAD 000016d9: SWAP1 000016da: PUSH4 0x2a875269 000016df: PUSH1 0xe2 000016e1: SHL 000016e2: DUP3 000016e3: MSTORE 000016e4: PUSH1 0x04 000016e6: DUP3 000016e7: ADD 000016e8: MSTORE 000016e9: REVERT 000016ea: JUMPDEST 000016eb: SWAP1 000016ec: SWAP2 000016ed: POP 000016ee: PUSH1 0x20 000016f0: DUP2 000016f1: RETURNDATASIZE 000016f2: PUSH1 0x20 000016f4: GT 000016f5: PUSH2 0x1716 000016f8: JUMPI 000016f9: JUMPDEST 000016fa: DUP2 000016fb: PUSH2 0x1706 000016fe: PUSH1 0x20 00001700: SWAP4 00001701: DUP4 00001702: PUSH2 0x1f5f 00001705: JUMP 00001706: JUMPDEST 00001707: DUP2 00001708: ADD 00001709: SUB 0000170a: SLT 0000170b: PUSH2 0x05de 0000170e: JUMPI 0000170f: MLOAD 00001710: SWAP1 00001711: CODESIZE 00001712: PUSH2 0x15ea 00001715: JUMP 00001716: JUMPDEST 00001717: RETURNDATASIZE 00001718: SWAP2 00001719: POP 0000171a: PUSH2 0x16f9 0000171d: JUMP 0000171e: JUMPDEST 0000171f: SWAP1 00001720: POP 00001721: DUP2 00001722: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 00001743: SLOAD 00001744: AND 00001745: EQ 00001746: ISZERO 00001747: CODESIZE 00001748: PUSH2 0x15bc 0000174b: JUMP 0000174c: JUMPDEST 0000174d: POP 0000174e: CALLVALUE 0000174f: PUSH2 0x0219 00001752: JUMPI 00001753: PUSH1 0x60 00001755: CALLDATASIZE 00001756: PUSH1 0x03 00001758: NOT 00001759: ADD 0000175a: SLT 0000175b: PUSH2 0x0219 0000175e: JUMPI 0000175f: PUSH2 0x1766 00001762: PUSH2 0x1edf 00001765: JUMP 00001766: JUMPDEST 00001767: PUSH2 0x176e 0000176a: PUSH2 0x1f0b 0000176d: JUMP 0000176e: JUMPDEST 0000176f: PUSH1 0x01 00001771: PUSH1 0x01 00001773: PUSH1 0xa0 00001775: SHL 00001776: SUB 00001777: DUP3 00001778: DUP2 00001779: AND 0000177a: DUP1 0000177b: ISZERO 0000177c: PUSH2 0x05c2 0000177f: JUMPI 00001780: PUSH1 0x20 00001782: SWAP1 00001783: PUSH1 0x24 00001785: PUSH1 0x40 00001787: MLOAD 00001788: DUP1 00001789: SWAP5 0000178a: DUP2 0000178b: SWAP4 0000178c: PUSH4 0xfe575a87 00001791: PUSH1 0xe0 00001793: SHL 00001794: DUP4 00001795: MSTORE 00001796: PUSH1 0x04 00001798: DUP4 00001799: ADD 0000179a: MSTORE 0000179b: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 000017bc: AND 000017bd: GAS 000017be: STATICCALL 000017bf: SWAP1 000017c0: DUP2 000017c1: ISZERO 000017c2: PUSH2 0x0735 000017c5: JUMPI 000017c6: DUP5 000017c7: SWAP2 000017c8: PUSH2 0x1803 000017cb: JUMPI 000017cc: JUMPDEST 000017cd: POP 000017ce: PUSH2 0x17f1 000017d1: JUMPI 000017d2: PUSH1 0xff 000017d4: DUP4 000017d5: SLOAD 000017d6: AND 000017d7: PUSH2 0x17df 000017da: DUP2 000017db: PUSH2 0x2012 000017de: JUMP 000017df: JUMPDEST 000017e0: PUSH2 0x0360 000017e3: JUMPI 000017e4: PUSH2 0x03b1 000017e7: SWAP2 000017e8: PUSH1 0x24 000017ea: CALLDATALOAD 000017eb: SWAP1 000017ec: CALLER 000017ed: PUSH2 0x210f 000017f0: JUMP 000017f1: JUMPDEST 000017f2: PUSH1 0x40 000017f4: MLOAD 000017f5: PUSH4 0x6e7fdaf7 000017fa: PUSH1 0xe1 000017fc: SHL 000017fd: DUP2 000017fe: MSTORE 000017ff: PUSH1 0x04 00001801: SWAP1 00001802: REVERT 00001803: JUMPDEST 00001804: PUSH2 0x1825 00001807: SWAP2 00001808: POP 00001809: PUSH1 0x20 0000180b: RETURNDATASIZE 0000180c: PUSH1 0x20 0000180e: GT 0000180f: PUSH2 0x182b 00001812: JUMPI 00001813: JUMPDEST 00001814: PUSH2 0x181d 00001817: DUP2 00001818: DUP4 00001819: PUSH2 0x1f5f 0000181c: JUMP 0000181d: JUMPDEST 0000181e: DUP2 0000181f: ADD 00001820: SWAP1 00001821: PUSH2 0x2032 00001824: JUMP 00001825: JUMPDEST 00001826: CODESIZE 00001827: PUSH2 0x17cc 0000182a: JUMP 0000182b: JUMPDEST 0000182c: POP 0000182d: RETURNDATASIZE 0000182e: PUSH2 0x1813 00001831: JUMP 00001832: JUMPDEST 00001833: POP 00001834: CALLVALUE 00001835: PUSH2 0x0219 00001838: JUMPI 00001839: DUP1 0000183a: PUSH1 0x03 0000183c: NOT 0000183d: CALLDATASIZE 0000183e: ADD 0000183f: SLT 00001840: PUSH2 0x0219 00001843: JUMPI 00001844: PUSH1 0x20 00001846: PUSH1 0x35 00001848: SLOAD 00001849: PUSH1 0x40 0000184b: MLOAD 0000184c: SWAP1 0000184d: DUP2 0000184e: MSTORE 0000184f: RETURN 00001850: JUMPDEST 00001851: POP 00001852: CALLVALUE 00001853: PUSH2 0x0219 00001856: JUMPI 00001857: DUP1 00001858: PUSH1 0x03 0000185a: NOT 0000185b: CALLDATASIZE 0000185c: ADD 0000185d: SLT 0000185e: PUSH2 0x0219 00001861: JUMPI 00001862: PUSH1 0x36 00001864: SLOAD 00001865: PUSH1 0x40 00001867: MLOAD 00001868: PUSH1 0x01 0000186a: PUSH1 0x01 0000186c: PUSH1 0xa0 0000186e: SHL 0000186f: SUB 00001870: SWAP1 00001871: SWAP2 00001872: AND 00001873: DUP2 00001874: MSTORE 00001875: PUSH1 0x20 00001877: SWAP1 00001878: RETURN 00001879: JUMPDEST 0000187a: POP 0000187b: CALLVALUE 0000187c: PUSH2 0x0219 0000187f: JUMPI 00001880: PUSH1 0x60 00001882: CALLDATASIZE 00001883: PUSH1 0x03 00001885: NOT 00001886: ADD 00001887: SLT 00001888: PUSH2 0x0219 0000188b: JUMPI 0000188c: PUSH2 0x1893 0000188f: PUSH2 0x1edf 00001892: JUMP 00001893: JUMPDEST 00001894: PUSH2 0x189b 00001897: PUSH2 0x1ef5 0000189a: JUMP 0000189b: JUMPDEST 0000189c: PUSH1 0x01 0000189e: PUSH1 0x01 000018a0: PUSH1 0xa0 000018a2: SHL 000018a3: SUB 000018a4: PUSH32 0x00000000000000000000000031b72d76fb666844c41edf08df0254875dbb7edb 000018c5: DUP2 000018c6: AND 000018c7: SWAP3 000018c8: SWAP2 000018c9: PUSH1 0x44 000018cb: CALLDATALOAD 000018cc: SWAP1 000018cd: CALLER 000018ce: DUP6 000018cf: EQ 000018d0: DUP1 000018d1: ISZERO 000018d2: SWAP1 000018d3: PUSH2 0x19d6 000018d6: JUMPI 000018d7: JUMPDEST 000018d8: PUSH2 0x069a 000018db: JUMPI 000018dc: ADDRESS 000018dd: EXTCODESIZE 000018de: ISZERO 000018df: PUSH2 0x19d2 000018e2: JUMPI 000018e3: PUSH1 0x40 000018e5: MLOAD 000018e6: PUSH4 0x67bd044d 000018eb: PUSH1 0xe0 000018ed: SHL 000018ee: DUP2 000018ef: MSTORE 000018f0: PUSH1 0x01 000018f2: PUSH1 0x01 000018f4: PUSH1 0xa0 000018f6: SHL 000018f7: SUB 000018f8: DUP6 000018f9: AND 000018fa: PUSH1 0x04 000018fc: DUP3 000018fd: ADD 000018fe: MSTORE 000018ff: PUSH1 0x24 00001901: DUP2 00001902: ADD 00001903: DUP4 00001904: SWAP1 00001905: MSTORE 00001906: DUP7 00001907: DUP2 00001908: PUSH1 0x44 0000190a: DUP2 0000190b: DUP4 0000190c: ADDRESS 0000190d: GAS 0000190e: CALL 0000190f: SWAP1 00001910: DUP2 00001911: PUSH2 0x19bf 00001914: JUMPI 00001915: JUMPDEST 00001916: POP 00001917: PUSH2 0x1989 0000191a: JUMPI 0000191b: DUP3 0000191c: AND 0000191d: SWAP2 0000191e: DUP3 0000191f: DUP7 00001920: MSTORE 00001921: PUSH1 0x02 00001923: PUSH1 0x20 00001925: MSTORE 00001926: PUSH1 0x40 00001928: DUP7 00001929: KECCAK256 0000192a: SWAP4 0000192b: AND 0000192c: SWAP3 0000192d: DUP4 0000192e: PUSH1 0x00 00001930: MSTORE 00001931: PUSH1 0x20 00001933: MSTORE 00001934: PUSH1 0x40 00001936: PUSH1 0x00 00001938: KECCAK256 00001939: DUP1 0000193a: SLOAD 0000193b: SWAP1 0000193c: DUP3 0000193d: DUP3 0000193e: ADD 0000193f: DUP1 00001940: SWAP3 00001941: GT 00001942: PUSH2 0x1975 00001945: JUMPI 00001946: SSTORE 00001947: PUSH1 0x40 00001949: MLOAD 0000194a: SWAP1 0000194b: DUP2 0000194c: MSTORE 0000194d: PUSH32 0x57b0fa6deabbc9b92da071a794e0ee49fda25fca31a9e5a0336632a6731bda84 0000196e: SWAP1 0000196f: PUSH1 0x20 00001971: SWAP1 00001972: LOG4 00001973: DUP1 00001974: RETURN 00001975: JUMPDEST 00001976: PUSH4 0x4e487b71 0000197b: PUSH1 0xe0 0000197d: SHL 0000197e: DUP8 0000197f: MSTORE 00001980: PUSH1 0x11 00001982: PUSH1 0x04 00001984: MSTORE 00001985: PUSH1 0x24 00001987: DUP8 00001988: REVERT 00001989: JUMPDEST 0000198a: SWAP3 0000198b: DUP3 0000198c: PUSH32 0x6bf7034bf4a66e25fc097062a5aad392485138a48987ad77209e332e25359156 000019ad: SWAP3 000019ae: SWAP4 000019af: PUSH1 0x20 000019b1: SWAP3 000019b2: PUSH1 0x40 000019b4: MLOAD 000019b5: SWAP6 000019b6: DUP7 000019b7: MSTORE 000019b8: AND 000019b9: SWAP5 000019ba: AND 000019bb: SWAP3 000019bc: LOG4 000019bd: DUP1 000019be: RETURN 000019bf: JUMPDEST 000019c0: PUSH2 0x19cb 000019c3: SWAP1 000019c4: SWAP8 000019c5: SWAP2 000019c6: SWAP8 000019c7: PUSH2 0x1f31 000019ca: JUMP 000019cb: JUMPDEST 000019cc: SWAP6 000019cd: CODESIZE 000019ce: PUSH2 0x1915 000019d1: JUMP 000019d2: JUMPDEST 000019d3: DUP6 000019d4: DUP1 000019d5: REVERT 000019d6: JUMPDEST 000019d7: POP 000019d8: PUSH1 0x40 000019da: MLOAD 000019db: PUSH4 0x6e296e45 000019e0: PUSH1 0xe0 000019e2: SHL 000019e3: DUP2 000019e4: MSTORE 000019e5: PUSH1 0x20 000019e7: DUP2 000019e8: PUSH1 0x04 000019ea: DUP2 000019eb: DUP10 000019ec: GAS 000019ed: STATICCALL 000019ee: SWAP1 000019ef: DUP2 000019f0: ISZERO 000019f1: PUSH2 0x1a47 000019f4: JUMPI 000019f5: DUP8 000019f6: SWAP2 000019f7: PUSH2 0x1a28 000019fa: JUMPI 000019fb: JUMPDEST 000019fc: POP 000019fd: DUP4 000019fe: AND 000019ff: PUSH32 0x0000000000000000000000003b1ac69368eb6447f5db2d4e1641380fa9e40d29 00001a20: DUP5 00001a21: AND 00001a22: EQ 00001a23: ISZERO 00001a24: PUSH2 0x18d7 00001a27: JUMP 00001a28: JUMPDEST 00001a29: PUSH2 0x1a41 00001a2c: SWAP2 00001a2d: POP 00001a2e: PUSH1 0x20 00001a30: RETURNDATASIZE 00001a31: PUSH1 0x20 00001a33: GT 00001a34: PUSH2 0x072e 00001a37: JUMPI 00001a38: PUSH2 0x071f 00001a3b: DUP2 00001a3c: DUP4 00001a3d: PUSH2 0x1f5f 00001a40: JUMP 00001a41: JUMPDEST 00001a42: CODESIZE 00001a43: PUSH2 0x19fb 00001a46: JUMP 00001a47: JUMPDEST 00001a48: PUSH1 0x40 00001a4a: MLOAD 00001a4b: RETURNDATASIZE 00001a4c: DUP10 00001a4d: DUP3 00001a4e: RETURNDATACOPY 00001a4f: RETURNDATASIZE 00001a50: SWAP1 00001a51: REVERT 00001a52: JUMPDEST 00001a53: POP 00001a54: CALLVALUE 00001a55: PUSH2 0x0219 00001a58: JUMPI 00001a59: DUP1 00001a5a: PUSH1 0x03 00001a5c: NOT 00001a5d: CALLDATASIZE 00001a5e: ADD 00001a5f: SLT 00001a60: PUSH2 0x0219 00001a63: JUMPI 00001a64: PUSH1 0x40 00001a66: MLOAD 00001a67: PUSH32 0x0000000000000000000000003b1ac69368eb6447f5db2d4e1641380fa9e40d29 00001a88: PUSH1 0x01 00001a8a: PUSH1 0x01 00001a8c: PUSH1 0xa0 00001a8e: SHL 00001a8f: SUB 00001a90: AND 00001a91: DUP2 00001a92: MSTORE 00001a93: PUSH1 0x20 00001a95: SWAP1 00001a96: RETURN 00001a97: JUMPDEST 00001a98: SWAP1 00001a99: POP 00001a9a: CALLVALUE 00001a9b: PUSH2 0x034d 00001a9e: JUMPI 00001a9f: PUSH1 0xe0 00001aa1: CALLDATASIZE 00001aa2: PUSH1 0x03 00001aa4: NOT 00001aa5: ADD 00001aa6: SLT 00001aa7: PUSH2 0x034d 00001aaa: JUMPI 00001aab: PUSH2 0x1ab2 00001aae: PUSH2 0x1edf 00001ab1: JUMP 00001ab2: JUMPDEST 00001ab3: SWAP1 00001ab4: PUSH2 0x1abb 00001ab7: PUSH2 0x1ef5 00001aba: JUMP 00001abb: JUMPDEST 00001abc: SWAP1 00001abd: PUSH1 0x01 00001abf: PUSH1 0x01 00001ac1: PUSH1 0x40 00001ac3: SHL 00001ac4: SUB 00001ac5: PUSH1 0x64 00001ac7: CALLDATALOAD 00001ac8: GT 00001ac9: PUSH2 0x0593 00001acc: JUMPI 00001acd: CALLDATASIZE 00001ace: PUSH1 0x23 00001ad0: PUSH1 0x64 00001ad2: CALLDATALOAD 00001ad3: ADD 00001ad4: SLT 00001ad5: ISZERO 00001ad6: PUSH2 0x0593 00001ad9: JUMPI 00001ada: PUSH1 0x01 00001adc: PUSH1 0x01 00001ade: PUSH1 0x40 00001ae0: SHL 00001ae1: SUB 00001ae2: PUSH1 0x64 00001ae4: CALLDATALOAD 00001ae5: PUSH1 0x04 00001ae7: ADD 00001ae8: CALLDATALOAD 00001ae9: GT 00001aea: PUSH2 0x0593 00001aed: JUMPI 00001aee: CALLDATASIZE 00001aef: PUSH1 0x24 00001af1: PUSH1 0x64 00001af3: CALLDATALOAD 00001af4: PUSH1 0x04 00001af6: ADD 00001af7: CALLDATALOAD 00001af8: PUSH1 0x64 00001afa: CALLDATALOAD 00001afb: ADD 00001afc: ADD 00001afd: GT 00001afe: PUSH2 0x0593 00001b01: JUMPI 00001b02: PUSH4 0xffffffff 00001b07: PUSH1 0xc4 00001b09: CALLDATALOAD 00001b0a: AND 00001b0b: PUSH1 0xc4 00001b0d: CALLDATALOAD 00001b0e: SUB 00001b0f: PUSH2 0x0593 00001b12: JUMPI 00001b13: PUSH1 0x01 00001b15: PUSH1 0x01 00001b17: PUSH1 0xa0 00001b19: SHL 00001b1a: SUB 00001b1b: DUP3 00001b1c: AND 00001b1d: ISZERO 00001b1e: PUSH2 0x1ed0 00001b21: JUMPI 00001b22: POP 00001b23: PUSH1 0x40 00001b25: MLOAD 00001b26: PUSH4 0xfe575a87 00001b2b: PUSH1 0xe0 00001b2d: SHL 00001b2e: DUP2 00001b2f: MSTORE 00001b30: PUSH1 0x01 00001b32: PUSH1 0x01 00001b34: PUSH1 0xa0 00001b36: SHL 00001b37: SUB 00001b38: DUP3 00001b39: DUP2 00001b3a: AND 00001b3b: PUSH1 0x04 00001b3d: DUP4 00001b3e: ADD 00001b3f: MSTORE 00001b40: PUSH1 0x20 00001b42: SWAP1 00001b43: DUP3 00001b44: SWAP1 00001b45: PUSH1 0x24 00001b47: SWAP1 00001b48: DUP3 00001b49: SWAP1 00001b4a: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00001b6b: AND 00001b6c: GAS 00001b6d: STATICCALL 00001b6e: SWAP1 00001b6f: DUP2 00001b70: ISZERO 00001b71: PUSH2 0x0735 00001b74: JUMPI 00001b75: DUP5 00001b76: SWAP2 00001b77: PUSH2 0x1eb1 00001b7a: JUMPI 00001b7b: JUMPDEST 00001b7c: POP 00001b7d: PUSH2 0x17f1 00001b80: JUMPI 00001b81: PUSH1 0xff 00001b83: DUP4 00001b84: SLOAD 00001b85: AND 00001b86: PUSH2 0x1b8e 00001b89: DUP2 00001b8a: PUSH2 0x2012 00001b8d: JUMP 00001b8e: JUMPDEST 00001b8f: PUSH2 0x0360 00001b92: JUMPI 00001b93: PUSH1 0x01 00001b95: PUSH1 0x01 00001b97: PUSH1 0xa0 00001b99: SHL 00001b9a: SUB 00001b9b: DUP3 00001b9c: AND 00001b9d: DUP4 00001b9e: MSTORE 00001b9f: PUSH1 0x01 00001ba1: PUSH1 0x20 00001ba3: SWAP1 00001ba4: DUP2 00001ba5: MSTORE 00001ba6: PUSH1 0x40 00001ba8: DUP1 00001ba9: DUP6 00001baa: KECCAK256 00001bab: PUSH1 0x84 00001bad: CALLDATALOAD 00001bae: DUP7 00001baf: MSTORE 00001bb0: SWAP1 00001bb1: SWAP2 00001bb2: MSTORE 00001bb3: DUP4 00001bb4: KECCAK256 00001bb5: SLOAD 00001bb6: PUSH1 0xff 00001bb8: AND 00001bb9: PUSH2 0x1e9f 00001bbc: JUMPI 00001bbd: PUSH1 0xa4 00001bbf: CALLDATALOAD 00001bc0: TIMESTAMP 00001bc1: GT 00001bc2: PUSH2 0x1e8d 00001bc5: JUMPI 00001bc6: PUSH1 0x40 00001bc8: MLOAD 00001bc9: DUP1 00001bca: PUSH1 0xa0 00001bcc: DUP2 00001bcd: ADD 00001bce: LT 00001bcf: PUSH1 0x01 00001bd1: PUSH1 0x01 00001bd3: PUSH1 0x40 00001bd5: SHL 00001bd6: SUB 00001bd7: PUSH1 0xa0 00001bd9: DUP4 00001bda: ADD 00001bdb: GT 00001bdc: OR 00001bdd: PUSH2 0x0aaa 00001be0: JUMPI 00001be1: PUSH1 0xa0 00001be3: DUP2 00001be4: ADD 00001be5: PUSH1 0x40 00001be7: MSTORE 00001be8: PUSH1 0x01 00001bea: DUP1 00001beb: PUSH1 0xa0 00001bed: SHL 00001bee: SUB 00001bef: DUP3 00001bf0: AND 00001bf1: DUP2 00001bf2: MSTORE 00001bf3: PUSH1 0x44 00001bf5: CALLDATALOAD 00001bf6: PUSH1 0x20 00001bf8: DUP3 00001bf9: ADD 00001bfa: MSTORE 00001bfb: PUSH1 0xa4 00001bfd: CALLDATALOAD 00001bfe: PUSH1 0x40 00001c00: DUP3 00001c01: ADD 00001c02: MSTORE 00001c03: PUSH1 0x84 00001c05: CALLDATALOAD 00001c06: PUSH1 0x60 00001c08: DUP3 00001c09: ADD 00001c0a: MSTORE 00001c0b: PUSH1 0x80 00001c0d: PUSH4 0xffffffff 00001c12: PUSH1 0xc4 00001c14: CALLDATALOAD 00001c15: AND 00001c16: SWAP2 00001c17: ADD 00001c18: MSTORE 00001c19: PUSH1 0x40 00001c1b: MLOAD 00001c1c: PUSH1 0x20 00001c1e: DUP2 00001c1f: ADD 00001c20: SWAP1 00001c21: PUSH32 0x87e4683aad14f1869b43140e06b846bd1b00c2e08e9825f6719d163b4cfef2a6 00001c42: DUP3 00001c43: MSTORE 00001c44: PUSH1 0x01 00001c46: DUP1 00001c47: PUSH1 0xa0 00001c49: SHL 00001c4a: SUB 00001c4b: DUP4 00001c4c: AND 00001c4d: PUSH1 0x40 00001c4f: DUP3 00001c50: ADD 00001c51: MSTORE 00001c52: PUSH1 0x44 00001c54: CALLDATALOAD 00001c55: PUSH1 0x60 00001c57: DUP3 00001c58: ADD 00001c59: MSTORE 00001c5a: PUSH1 0xa4 00001c5c: CALLDATALOAD 00001c5d: PUSH1 0x80 00001c5f: DUP3 00001c60: ADD 00001c61: MSTORE 00001c62: PUSH1 0x84 00001c64: CALLDATALOAD 00001c65: PUSH1 0xa0 00001c67: DUP3 00001c68: ADD 00001c69: MSTORE 00001c6a: PUSH4 0xffffffff 00001c6f: PUSH1 0xc4 00001c71: CALLDATALOAD 00001c72: AND 00001c73: PUSH1 0xc0 00001c75: DUP3 00001c76: ADD 00001c77: MSTORE 00001c78: PUSH1 0xc0 00001c7a: DUP2 00001c7b: MSTORE 00001c7c: PUSH1 0xe0 00001c7e: DUP2 00001c7f: ADD 00001c80: DUP2 00001c81: DUP2 00001c82: LT 00001c83: PUSH1 0x01 00001c85: PUSH1 0x01 00001c87: PUSH1 0x40 00001c89: SHL 00001c8a: SUB 00001c8b: DUP3 00001c8c: GT 00001c8d: OR 00001c8e: PUSH2 0x1e79 00001c91: JUMPI 00001c92: PUSH1 0x40 00001c94: MSTORE 00001c95: MLOAD 00001c96: SWAP1 00001c97: KECCAK256 00001c98: PUSH2 0x1cad 00001c9b: CALLDATASIZE 00001c9c: PUSH1 0x64 00001c9e: CALLDATALOAD 00001c9f: PUSH1 0x04 00001ca1: ADD 00001ca2: CALLDATALOAD 00001ca3: PUSH1 0x24 00001ca5: PUSH1 0x64 00001ca7: CALLDATALOAD 00001ca8: ADD 00001ca9: PUSH2 0x1f9b 00001cac: JUMP 00001cad: JUMPDEST 00001cae: SWAP1 00001caf: PUSH2 0x1cb6 00001cb2: PUSH2 0x26d5 00001cb5: JUMP 00001cb6: JUMPDEST 00001cb7: SWAP1 00001cb8: PUSH2 0x1cbf 00001cbb: PUSH2 0x273f 00001cbe: JUMP 00001cbf: JUMPDEST 00001cc0: PUSH1 0x40 00001cc2: MLOAD 00001cc3: SWAP1 00001cc4: PUSH1 0x20 00001cc6: DUP3 00001cc7: ADD 00001cc8: SWAP4 00001cc9: PUSH32 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f 00001cea: DUP6 00001ceb: MSTORE 00001cec: PUSH1 0x40 00001cee: DUP4 00001cef: ADD 00001cf0: MSTORE 00001cf1: PUSH1 0x60 00001cf3: DUP3 00001cf4: ADD 00001cf5: MSTORE 00001cf6: CHAINID 00001cf7: PUSH1 0x80 00001cf9: DUP3 00001cfa: ADD 00001cfb: MSTORE 00001cfc: ADDRESS 00001cfd: PUSH1 0xa0 00001cff: DUP3 00001d00: ADD 00001d01: MSTORE 00001d02: PUSH1 0xa0 00001d04: DUP2 00001d05: MSTORE 00001d06: PUSH1 0xc0 00001d08: DUP2 00001d09: ADD 00001d0a: SWAP3 00001d0b: DUP2 00001d0c: DUP5 00001d0d: LT 00001d0e: PUSH1 0x01 00001d10: PUSH1 0x01 00001d12: PUSH1 0x40 00001d14: SHL 00001d15: SUB 00001d16: DUP6 00001d17: GT 00001d18: OR 00001d19: PUSH2 0x1e65 00001d1c: JUMPI 00001d1d: PUSH1 0x40 00001d1f: DUP5 00001d20: SWAP1 00001d21: MSTORE 00001d22: DUP2 00001d23: MLOAD 00001d24: SWAP1 00001d25: KECCAK256 00001d26: PUSH2 0x1901 00001d29: PUSH1 0xf0 00001d2b: SHL 00001d2c: DUP5 00001d2d: MSTORE 00001d2e: PUSH1 0xc2 00001d30: DUP3 00001d31: ADD 00001d32: MSTORE 00001d33: PUSH1 0xe2 00001d35: ADD 00001d36: MSTORE 00001d37: PUSH1 0x42 00001d39: SWAP1 00001d3a: KECCAK256 00001d3b: DUP5 00001d3c: PUSH2 0x1d45 00001d3f: DUP4 00001d40: DUP4 00001d41: PUSH2 0x2576 00001d44: JUMP 00001d45: JUMPDEST 00001d46: POP 00001d47: PUSH2 0x1d52 00001d4a: DUP2 00001d4b: SWAP6 00001d4c: SWAP3 00001d4d: SWAP6 00001d4e: PUSH2 0x2012 00001d51: JUMP 00001d52: JUMPDEST 00001d53: ISZERO 00001d54: SWAP4 00001d55: DUP5 00001d56: PUSH2 0x1e4f 00001d59: JUMPI 00001d5a: JUMPDEST 00001d5b: POP 00001d5c: DUP4 00001d5d: ISZERO 00001d5e: PUSH2 0x1dba 00001d61: JUMPI 00001d62: JUMPDEST 00001d63: POP 00001d64: POP 00001d65: POP 00001d66: ISZERO 00001d67: PUSH2 0x1da8 00001d6a: JUMPI 00001d6b: PUSH1 0x01 00001d6d: PUSH1 0x01 00001d6f: PUSH1 0xa0 00001d71: SHL 00001d72: SUB 00001d73: DUP3 00001d74: AND 00001d75: DUP4 00001d76: MSTORE 00001d77: PUSH1 0x01 00001d79: PUSH1 0x20 00001d7b: DUP2 00001d7c: DUP2 00001d7d: MSTORE 00001d7e: PUSH1 0x40 00001d80: DUP1 00001d81: DUP7 00001d82: KECCAK256 00001d83: PUSH1 0x84 00001d85: CALLDATALOAD 00001d86: DUP8 00001d87: MSTORE 00001d88: SWAP1 00001d89: SWAP2 00001d8a: MSTORE 00001d8b: DUP5 00001d8c: KECCAK256 00001d8d: DUP1 00001d8e: SLOAD 00001d8f: PUSH1 0xff 00001d91: NOT 00001d92: AND 00001d93: SWAP1 00001d94: SWAP2 00001d95: OR 00001d96: SWAP1 00001d97: SSTORE 00001d98: PUSH2 0x03b1 00001d9b: SWAP2 00001d9c: PUSH1 0xc4 00001d9e: CALLDATALOAD 00001d9f: SWAP2 00001da0: PUSH1 0x44 00001da2: CALLDATALOAD 00001da3: SWAP2 00001da4: PUSH2 0x210f 00001da7: JUMP 00001da8: JUMPDEST 00001da9: PUSH1 0x40 00001dab: MLOAD 00001dac: PUSH4 0x98ceb44f 00001db1: PUSH1 0xe0 00001db3: SHL 00001db4: DUP2 00001db5: MSTORE 00001db6: PUSH1 0x04 00001db8: SWAP1 00001db9: REVERT 00001dba: JUMPDEST 00001dbb: DUP2 00001dbc: SWAP3 00001dbd: SWAP4 00001dbe: POP 00001dbf: PUSH1 0x40 00001dc1: MLOAD 00001dc2: PUSH2 0x1dfd 00001dc5: DUP2 00001dc6: PUSH2 0x1def 00001dc9: PUSH1 0x20 00001dcb: DUP3 00001dcc: ADD 00001dcd: SWAP5 00001dce: PUSH4 0x0b135d3f 00001dd3: PUSH1 0xe1 00001dd5: SHL 00001dd6: SWAP9 00001dd7: DUP10 00001dd8: DUP8 00001dd9: MSTORE 00001dda: PUSH1 0x24 00001ddc: DUP5 00001ddd: ADD 00001dde: MSTORE 00001ddf: PUSH1 0x40 00001de1: PUSH1 0x44 00001de3: DUP5 00001de4: ADD 00001de5: MSTORE 00001de6: PUSH1 0x64 00001de8: DUP4 00001de9: ADD 00001dea: SWAP1 00001deb: PUSH2 0x1fd2 00001dee: JUMP 00001def: JUMPDEST 00001df0: SUB 00001df1: PUSH1 0x1f 00001df3: NOT 00001df4: DUP2 00001df5: ADD 00001df6: DUP4 00001df7: MSTORE 00001df8: DUP3 00001df9: PUSH2 0x1f5f 00001dfc: JUMP 00001dfd: JUMPDEST 00001dfe: MLOAD 00001dff: SWAP1 00001e00: DUP7 00001e01: GAS 00001e02: STATICCALL 00001e03: SWAP1 00001e04: PUSH2 0x1e0b 00001e07: PUSH2 0x25b2 00001e0a: JUMP 00001e0b: JUMPDEST 00001e0c: DUP3 00001e0d: PUSH2 0x1e41 00001e10: JUMPI 00001e11: JUMPDEST 00001e12: DUP3 00001e13: PUSH2 0x1e21 00001e16: JUMPI 00001e17: JUMPDEST 00001e18: POP 00001e19: POP 00001e1a: CODESIZE 00001e1b: DUP5 00001e1c: DUP2 00001e1d: PUSH2 0x1d62 00001e20: JUMP 00001e21: JUMPDEST 00001e22: SWAP1 00001e23: SWAP2 00001e24: POP 00001e25: PUSH1 0x20 00001e27: DUP2 00001e28: DUP1 00001e29: MLOAD 00001e2a: DUP2 00001e2b: ADD 00001e2c: SUB 00001e2d: SLT 00001e2e: PUSH2 0x1e3d 00001e31: JUMPI 00001e32: PUSH1 0x20 00001e34: ADD 00001e35: MLOAD 00001e36: EQ 00001e37: CODESIZE 00001e38: DUP1 00001e39: PUSH2 0x1e17 00001e3c: JUMP 00001e3d: JUMPDEST 00001e3e: DUP5 00001e3f: DUP1 00001e40: REVERT 00001e41: JUMPDEST 00001e42: SWAP2 00001e43: POP 00001e44: PUSH1 0x20 00001e46: DUP3 00001e47: MLOAD 00001e48: LT 00001e49: ISZERO 00001e4a: SWAP2 00001e4b: PUSH2 0x1e11 00001e4e: JUMP 00001e4f: JUMPDEST 00001e50: PUSH1 0x01 00001e52: PUSH1 0x01 00001e54: PUSH1 0xa0 00001e56: SHL 00001e57: SUB 00001e58: DUP8 00001e59: DUP2 00001e5a: AND 00001e5b: SWAP2 00001e5c: AND 00001e5d: EQ 00001e5e: SWAP4 00001e5f: POP 00001e60: CODESIZE 00001e61: PUSH2 0x1d5a 00001e64: JUMP 00001e65: JUMPDEST 00001e66: PUSH4 0x4e487b71 00001e6b: PUSH1 0xe0 00001e6d: SHL 00001e6e: DUP9 00001e6f: MSTORE 00001e70: PUSH1 0x41 00001e72: PUSH1 0x04 00001e74: MSTORE 00001e75: PUSH1 0x24 00001e77: DUP9 00001e78: REVERT 00001e79: JUMPDEST 00001e7a: PUSH4 0x4e487b71 00001e7f: PUSH1 0xe0 00001e81: SHL 00001e82: DUP7 00001e83: MSTORE 00001e84: PUSH1 0x41 00001e86: PUSH1 0x04 00001e88: MSTORE 00001e89: PUSH1 0x24 00001e8b: DUP7 00001e8c: REVERT 00001e8d: JUMPDEST 00001e8e: PUSH1 0x40 00001e90: MLOAD 00001e91: PUSH4 0x3c3c6677 00001e96: PUSH1 0xe0 00001e98: SHL 00001e99: DUP2 00001e9a: MSTORE 00001e9b: PUSH1 0x04 00001e9d: SWAP1 00001e9e: REVERT 00001e9f: JUMPDEST 00001ea0: PUSH1 0x40 00001ea2: MLOAD 00001ea3: PUSH4 0x08be5f9d 00001ea8: PUSH1 0xe3 00001eaa: SHL 00001eab: DUP2 00001eac: MSTORE 00001ead: PUSH1 0x04 00001eaf: SWAP1 00001eb0: REVERT 00001eb1: JUMPDEST 00001eb2: PUSH2 0x1eca 00001eb5: SWAP2 00001eb6: POP 00001eb7: PUSH1 0x20 00001eb9: RETURNDATASIZE 00001eba: PUSH1 0x20 00001ebc: GT 00001ebd: PUSH2 0x182b 00001ec0: JUMPI 00001ec1: PUSH2 0x181d 00001ec4: DUP2 00001ec5: DUP4 00001ec6: PUSH2 0x1f5f 00001ec9: JUMP 00001eca: JUMPDEST 00001ecb: CODESIZE 00001ecc: PUSH2 0x1b7b 00001ecf: JUMP 00001ed0: JUMPDEST 00001ed1: PUSH4 0x5432922d 00001ed6: PUSH1 0xe0 00001ed8: SHL 00001ed9: DUP2 00001eda: MSTORE 00001edb: PUSH1 0x04 00001edd: SWAP1 00001ede: REVERT 00001edf: JUMPDEST 00001ee0: PUSH1 0x04 00001ee2: CALLDATALOAD 00001ee3: SWAP1 00001ee4: PUSH1 0x01 00001ee6: PUSH1 0x01 00001ee8: PUSH1 0xa0 00001eea: SHL 00001eeb: SUB 00001eec: DUP3 00001eed: AND 00001eee: DUP3 00001eef: SUB 00001ef0: PUSH2 0x05de 00001ef3: JUMPI 00001ef4: JUMP 00001ef5: JUMPDEST 00001ef6: PUSH1 0x24 00001ef8: CALLDATALOAD 00001ef9: SWAP1 00001efa: PUSH1 0x01 00001efc: PUSH1 0x01 00001efe: PUSH1 0xa0 00001f00: SHL 00001f01: SUB 00001f02: DUP3 00001f03: AND 00001f04: DUP3 00001f05: SUB 00001f06: PUSH2 0x05de 00001f09: JUMPI 00001f0a: JUMP 00001f0b: JUMPDEST 00001f0c: PUSH1 0x44 00001f0e: CALLDATALOAD 00001f0f: SWAP1 00001f10: PUSH4 0xffffffff 00001f15: DUP3 00001f16: AND 00001f17: DUP3 00001f18: SUB 00001f19: PUSH2 0x05de 00001f1c: JUMPI 00001f1d: JUMP 00001f1e: JUMPDEST 00001f1f: PUSH1 0x04 00001f21: CALLDATALOAD 00001f22: SWAP1 00001f23: PUSH4 0xffffffff 00001f28: DUP3 00001f29: AND 00001f2a: DUP3 00001f2b: SUB 00001f2c: PUSH2 0x05de 00001f2f: JUMPI 00001f30: JUMP 00001f31: JUMPDEST 00001f32: PUSH1 0x01 00001f34: PUSH1 0x01 00001f36: PUSH1 0x40 00001f38: SHL 00001f39: SUB 00001f3a: DUP2 00001f3b: GT 00001f3c: PUSH2 0x0597 00001f3f: JUMPI 00001f40: PUSH1 0x40 00001f42: MSTORE 00001f43: JUMP 00001f44: JUMPDEST 00001f45: PUSH1 0x40 00001f47: DUP2 00001f48: ADD 00001f49: SWAP1 00001f4a: DUP2 00001f4b: LT 00001f4c: PUSH1 0x01 00001f4e: PUSH1 0x01 00001f50: PUSH1 0x40 00001f52: SHL 00001f53: SUB 00001f54: DUP3 00001f55: GT 00001f56: OR 00001f57: PUSH2 0x0597 00001f5a: JUMPI 00001f5b: PUSH1 0x40 00001f5d: MSTORE 00001f5e: JUMP 00001f5f: JUMPDEST 00001f60: SWAP1 00001f61: PUSH1 0x1f 00001f63: DUP1 00001f64: NOT 00001f65: SWAP2 00001f66: ADD 00001f67: AND 00001f68: DUP2 00001f69: ADD 00001f6a: SWAP1 00001f6b: DUP2 00001f6c: LT 00001f6d: PUSH1 0x01 00001f6f: PUSH1 0x01 00001f71: PUSH1 0x40 00001f73: SHL 00001f74: SUB 00001f75: DUP3 00001f76: GT 00001f77: OR 00001f78: PUSH2 0x0597 00001f7b: JUMPI 00001f7c: PUSH1 0x40 00001f7e: MSTORE 00001f7f: JUMP 00001f80: JUMPDEST 00001f81: PUSH1 0x01 00001f83: PUSH1 0x01 00001f85: PUSH1 0x40 00001f87: SHL 00001f88: SUB 00001f89: DUP2 00001f8a: GT 00001f8b: PUSH2 0x0597 00001f8e: JUMPI 00001f8f: PUSH1 0x1f 00001f91: ADD 00001f92: PUSH1 0x1f 00001f94: NOT 00001f95: AND 00001f96: PUSH1 0x20 00001f98: ADD 00001f99: SWAP1 00001f9a: JUMP 00001f9b: JUMPDEST 00001f9c: SWAP3 00001f9d: SWAP2 00001f9e: SWAP3 00001f9f: PUSH2 0x1fa7 00001fa2: DUP3 00001fa3: PUSH2 0x1f80 00001fa6: JUMP 00001fa7: JUMPDEST 00001fa8: SWAP2 00001fa9: PUSH2 0x1fb5 00001fac: PUSH1 0x40 00001fae: MLOAD 00001faf: SWAP4 00001fb0: DUP5 00001fb1: PUSH2 0x1f5f 00001fb4: JUMP 00001fb5: JUMPDEST 00001fb6: DUP3 00001fb7: SWAP5 00001fb8: DUP2 00001fb9: DUP5 00001fba: MSTORE 00001fbb: DUP2 00001fbc: DUP4 00001fbd: ADD 00001fbe: GT 00001fbf: PUSH2 0x05de 00001fc2: JUMPI 00001fc3: DUP3 00001fc4: DUP2 00001fc5: PUSH1 0x20 00001fc7: SWAP4 00001fc8: DUP5 00001fc9: PUSH1 0x00 00001fcb: SWAP7 00001fcc: ADD 00001fcd: CALLDATACOPY 00001fce: ADD 00001fcf: ADD 00001fd0: MSTORE 00001fd1: JUMP 00001fd2: JUMPDEST 00001fd3: SWAP2 00001fd4: SWAP1 00001fd5: DUP3 00001fd6: MLOAD 00001fd7: SWAP3 00001fd8: DUP4 00001fd9: DUP3 00001fda: MSTORE 00001fdb: PUSH1 0x00 00001fdd: JUMPDEST 00001fde: DUP5 00001fdf: DUP2 00001fe0: LT 00001fe1: PUSH2 0x1ffe 00001fe4: JUMPI 00001fe5: POP 00001fe6: POP 00001fe7: DUP3 00001fe8: PUSH1 0x00 00001fea: PUSH1 0x20 00001fec: DUP1 00001fed: SWAP5 00001fee: SWAP6 00001fef: DUP5 00001ff0: ADD 00001ff1: ADD 00001ff2: MSTORE 00001ff3: PUSH1 0x1f 00001ff5: DUP1 00001ff6: NOT 00001ff7: SWAP2 00001ff8: ADD 00001ff9: AND 00001ffa: ADD 00001ffb: ADD 00001ffc: SWAP1 00001ffd: JUMP 00001ffe: JUMPDEST 00001fff: PUSH1 0x20 00002001: DUP2 00002002: DUP4 00002003: ADD 00002004: DUP2 00002005: ADD 00002006: MLOAD 00002007: DUP5 00002008: DUP4 00002009: ADD 0000200a: DUP3 0000200b: ADD 0000200c: MSTORE 0000200d: ADD 0000200e: PUSH2 0x1fdd 00002011: JUMP 00002012: JUMPDEST 00002013: PUSH1 0x04 00002015: GT 00002016: ISZERO 00002017: PUSH2 0x201c 0000201a: JUMPI 0000201b: JUMP 0000201c: JUMPDEST 0000201d: PUSH4 0x4e487b71 00002022: PUSH1 0xe0 00002024: SHL 00002025: PUSH1 0x00 00002027: MSTORE 00002028: PUSH1 0x21 0000202a: PUSH1 0x04 0000202c: MSTORE 0000202d: PUSH1 0x24 0000202f: PUSH1 0x00 00002031: REVERT 00002032: JUMPDEST 00002033: SWAP1 00002034: DUP2 00002035: PUSH1 0x20 00002037: SWAP2 00002038: SUB 00002039: SLT 0000203a: PUSH2 0x05de 0000203d: JUMPI 0000203e: MLOAD 0000203f: DUP1 00002040: ISZERO 00002041: ISZERO 00002042: DUP2 00002043: SUB 00002044: PUSH2 0x05de 00002047: JUMPI 00002048: SWAP1 00002049: JUMP 0000204a: JUMPDEST 0000204b: SWAP1 0000204c: DUP2 0000204d: PUSH1 0x20 0000204f: SWAP2 00002050: SUB 00002051: SLT 00002052: PUSH2 0x05de 00002055: JUMPI 00002056: MLOAD 00002057: PUSH1 0x01 00002059: PUSH1 0x01 0000205b: PUSH1 0xa0 0000205d: SHL 0000205e: SUB 0000205f: DUP2 00002060: AND 00002061: DUP2 00002062: SUB 00002063: PUSH2 0x05de 00002066: JUMPI 00002067: SWAP1 00002068: JUMP 00002069: JUMPDEST 0000206a: SWAP2 0000206b: PUSH2 0x2094 0000206e: PUSH4 0xffffffff 00002073: SWAP2 00002074: PUSH1 0x40 00002076: SWAP4 00002077: SWAP7 00002078: SWAP6 00002079: SWAP7 0000207a: PUSH1 0x01 0000207c: DUP1 0000207d: PUSH1 0xa0 0000207f: SHL 00002080: SUB 00002081: AND 00002082: DUP6 00002083: MSTORE 00002084: PUSH1 0x60 00002086: PUSH1 0x20 00002088: DUP7 00002089: ADD 0000208a: MSTORE 0000208b: PUSH1 0x60 0000208d: DUP6 0000208e: ADD 0000208f: SWAP1 00002090: PUSH2 0x1fd2 00002093: JUMP 00002094: JUMPDEST 00002095: SWAP5 00002096: AND 00002097: SWAP2 00002098: ADD 00002099: MSTORE 0000209a: JUMP 0000209b: JUMPDEST 0000209c: PUSH1 0x01 0000209e: PUSH1 0x01 000020a0: PUSH1 0xa0 000020a2: SHL 000020a3: SUB 000020a4: SWAP1 000020a5: DUP2 000020a6: AND 000020a7: SWAP1 000020a8: DUP2 000020a9: ISZERO 000020aa: PUSH2 0x20f6 000020ad: JUMPI 000020ae: PUSH1 0x00 000020b0: DUP1 000020b1: MLOAD 000020b2: PUSH1 0x20 000020b4: PUSH2 0x27a5 000020b7: DUP4 000020b8: CODECOPY 000020b9: DUP2 000020ba: MLOAD 000020bb: SWAP2 000020bc: MSTORE 000020bd: DUP1 000020be: SLOAD 000020bf: PUSH1 0x01 000020c1: PUSH1 0x01 000020c3: PUSH1 0xa0 000020c5: SHL 000020c6: SUB 000020c7: NOT 000020c8: DUP2 000020c9: AND 000020ca: DUP5 000020cb: OR 000020cc: SWAP1 000020cd: SWAP2 000020ce: SSTORE 000020cf: AND 000020d0: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 000020f1: PUSH1 0x00 000020f3: DUP1 000020f4: LOG3 000020f5: JUMP 000020f6: JUMPDEST 000020f7: PUSH1 0x40 000020f9: MLOAD 000020fa: PUSH4 0x1e4fbdf7 000020ff: PUSH1 0xe0 00002101: SHL 00002102: DUP2 00002103: MSTORE 00002104: PUSH1 0x00 00002106: PUSH1 0x04 00002108: DUP3 00002109: ADD 0000210a: MSTORE 0000210b: PUSH1 0x24 0000210d: SWAP1 0000210e: REVERT 0000210f: JUMPDEST 00002110: PUSH1 0x40 00002112: DUP1 00002113: MLOAD 00002114: PUSH4 0x23b872dd 00002119: PUSH1 0xe0 0000211b: SHL 0000211c: PUSH1 0x20 0000211e: DUP3 0000211f: ADD 00002120: MSTORE 00002121: PUSH1 0x01 00002123: PUSH1 0x01 00002125: PUSH1 0xa0 00002127: SHL 00002128: SUB 00002129: DUP4 0000212a: DUP2 0000212b: AND 0000212c: PUSH1 0x24 0000212e: DUP4 0000212f: ADD 00002130: MSTORE 00002131: ADDRESS 00002132: PUSH1 0x44 00002134: DUP4 00002135: ADD 00002136: MSTORE 00002137: PUSH1 0x64 00002139: DUP1 0000213a: DUP4 0000213b: ADD 0000213c: DUP8 0000213d: SWAP1 0000213e: MSTORE 0000213f: DUP3 00002140: MSTORE 00002141: PUSH1 0x1f 00002143: NOT 00002144: SWAP7 00002145: SWAP4 00002146: SWAP6 00002147: SWAP5 00002148: SWAP3 00002149: SWAP4 0000214a: SWAP1 0000214b: SWAP3 0000214c: SWAP2 0000214d: PUSH2 0x2183 00002150: SWAP1 00002151: PUSH2 0x215b 00002154: PUSH1 0x84 00002156: DUP3 00002157: PUSH2 0x1f5f 0000215a: JUMP 0000215b: JUMPDEST 0000215c: DUP5 0000215d: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 0000217e: AND 0000217f: PUSH2 0x24d5 00002182: JUMP 00002183: JUMPDEST 00002184: DUP4 00002185: MLOAD 00002186: PUSH4 0x32b3a987 0000218b: PUSH1 0xe0 0000218d: SHL 0000218e: PUSH1 0x20 00002190: DUP3 00002191: ADD 00002192: MSTORE 00002193: PUSH1 0x01 00002195: PUSH1 0x01 00002197: PUSH1 0xa0 00002199: SHL 0000219a: SUB 0000219b: DUP4 0000219c: DUP2 0000219d: AND 0000219e: PUSH1 0x24 000021a0: DUP4 000021a1: ADD 000021a2: MSTORE 000021a3: DUP8 000021a4: AND 000021a5: PUSH1 0x44 000021a7: DUP3 000021a8: ADD 000021a9: MSTORE 000021aa: PUSH1 0x64 000021ac: DUP2 000021ad: ADD 000021ae: DUP7 000021af: SWAP1 000021b0: MSTORE 000021b1: PUSH1 0x84 000021b3: SWAP8 000021b4: DUP9 000021b5: ADD 000021b6: DUP2 000021b7: MSTORE 000021b8: PUSH32 0x00000000000000000000000031b72d76fb666844c41edf08df0254875dbb7edb 000021d9: DUP5 000021da: AND 000021db: SWAP8 000021dc: PUSH2 0x21e5 000021df: SWAP1 000021e0: DUP3 000021e1: PUSH2 0x1f5f 000021e4: JUMP 000021e5: JUMPDEST 000021e6: DUP8 000021e7: EXTCODESIZE 000021e8: ISZERO 000021e9: PUSH2 0x05de 000021ec: JUMPI 000021ed: PUSH1 0x00 000021ef: DUP3 000021f0: PUSH2 0x222e 000021f3: SWAP3 000021f4: DUP8 000021f5: MLOAD 000021f6: SWAP4 000021f7: DUP5 000021f8: SWAP3 000021f9: DUP4 000021fa: SWAP3 000021fb: PUSH4 0x3dbb202b 00002200: PUSH1 0xe0 00002202: SHL 00002203: DUP5 00002204: MSTORE 00002205: PUSH32 0x0000000000000000000000003b1ac69368eb6447f5db2d4e1641380fa9e40d29 00002226: PUSH1 0x04 00002228: DUP6 00002229: ADD 0000222a: PUSH2 0x2069 0000222d: JUMP 0000222e: JUMPDEST 0000222f: SUB 00002230: DUP2 00002231: DUP4 00002232: DUP13 00002233: GAS 00002234: CALL 00002235: DUP1 00002236: ISZERO 00002237: PUSH2 0x228f 0000223a: JUMPI 0000223b: DUP5 0000223c: SWAP4 0000223d: SWAP2 0000223e: SWAP3 0000223f: PUSH32 0xb8fa5fd165287d2cb897cb3ee53488b768ead242c87070b349394d2639824d4c 00002260: SWAP7 00002261: SWAP6 00002262: SWAP4 00002263: PUSH4 0xffffffff 00002268: SWAP3 00002269: PUSH2 0x2280 0000226c: JUMPI 0000226d: JUMPDEST 0000226e: POP 0000226f: DUP6 00002270: MLOAD 00002271: SWAP8 00002272: DUP9 00002273: MSTORE 00002274: AND 00002275: PUSH1 0x20 00002277: DUP8 00002278: ADD 00002279: MSTORE 0000227a: AND 0000227b: SWAP5 0000227c: AND 0000227d: SWAP3 0000227e: LOG4 0000227f: JUMP 00002280: JUMPDEST 00002281: PUSH2 0x2289 00002284: SWAP1 00002285: PUSH2 0x1f31 00002288: JUMP 00002289: JUMPDEST 0000228a: CODESIZE 0000228b: PUSH2 0x226d 0000228e: JUMP 0000228f: JUMPDEST 00002290: DUP6 00002291: MLOAD 00002292: RETURNDATASIZE 00002293: PUSH1 0x00 00002295: DUP3 00002296: RETURNDATACOPY 00002297: RETURNDATASIZE 00002298: SWAP1 00002299: REVERT 0000229a: JUMPDEST 0000229b: PUSH1 0x40 0000229d: MLOAD 0000229e: PUSH4 0xa9059cbb 000022a3: PUSH1 0xe0 000022a5: SHL 000022a6: PUSH1 0x20 000022a8: DUP3 000022a9: ADD 000022aa: MSTORE 000022ab: PUSH1 0x01 000022ad: PUSH1 0x01 000022af: PUSH1 0xa0 000022b1: SHL 000022b2: SUB 000022b3: SWAP3 000022b4: SWAP1 000022b5: SWAP3 000022b6: AND 000022b7: PUSH1 0x24 000022b9: DUP4 000022ba: ADD 000022bb: MSTORE 000022bc: PUSH1 0x44 000022be: DUP1 000022bf: DUP4 000022c0: ADD 000022c1: SWAP4 000022c2: SWAP1 000022c3: SWAP4 000022c4: MSTORE 000022c5: SWAP2 000022c6: DUP2 000022c7: MSTORE 000022c8: PUSH2 0x22db 000022cb: SWAP2 000022cc: PUSH2 0x22d6 000022cf: PUSH1 0x64 000022d1: DUP4 000022d2: PUSH2 0x1f5f 000022d5: JUMP 000022d6: JUMPDEST 000022d7: PUSH2 0x24d5 000022da: JUMP 000022db: JUMPDEST 000022dc: JUMP 000022dd: JUMPDEST 000022de: PUSH1 0x00 000022e0: DUP1 000022e1: MLOAD 000022e2: PUSH1 0x20 000022e4: PUSH2 0x27a5 000022e7: DUP4 000022e8: CODECOPY 000022e9: DUP2 000022ea: MLOAD 000022eb: SWAP2 000022ec: MSTORE 000022ed: SLOAD 000022ee: PUSH1 0x01 000022f0: PUSH1 0x01 000022f2: PUSH1 0xa0 000022f4: SHL 000022f5: SUB 000022f6: AND 000022f7: CALLER 000022f8: SUB 000022f9: PUSH2 0x22fe 000022fc: JUMPI 000022fd: JUMP 000022fe: JUMPDEST 000022ff: PUSH1 0x40 00002301: MLOAD 00002302: PUSH4 0x118cdaa7 00002307: PUSH1 0xe0 00002309: SHL 0000230a: DUP2 0000230b: MSTORE 0000230c: CALLER 0000230d: PUSH1 0x04 0000230f: DUP3 00002310: ADD 00002311: MSTORE 00002312: PUSH1 0x24 00002314: SWAP1 00002315: REVERT 00002316: JUMPDEST 00002317: SWAP1 00002318: PUSH1 0x01 0000231a: DUP3 0000231b: DUP2 0000231c: SHR 0000231d: SWAP3 0000231e: AND 0000231f: DUP1 00002320: ISZERO 00002321: PUSH2 0x2346 00002324: JUMPI 00002325: JUMPDEST 00002326: PUSH1 0x20 00002328: DUP4 00002329: LT 0000232a: EQ 0000232b: PUSH2 0x2330 0000232e: JUMPI 0000232f: JUMP 00002330: JUMPDEST 00002331: PUSH4 0x4e487b71 00002336: PUSH1 0xe0 00002338: SHL 00002339: PUSH1 0x00 0000233b: MSTORE 0000233c: PUSH1 0x22 0000233e: PUSH1 0x04 00002340: MSTORE 00002341: PUSH1 0x24 00002343: PUSH1 0x00 00002345: REVERT 00002346: JUMPDEST 00002347: SWAP2 00002348: PUSH1 0x7f 0000234a: AND 0000234b: SWAP2 0000234c: PUSH2 0x2325 0000234f: JUMP 00002350: JUMPDEST 00002351: PUSH1 0x40 00002353: MLOAD 00002354: SWAP1 00002355: PUSH1 0x00 00002357: DUP3 00002358: PUSH1 0x00 0000235a: DUP1 0000235b: MLOAD 0000235c: PUSH1 0x20 0000235e: PUSH2 0x2785 00002361: DUP4 00002362: CODECOPY 00002363: DUP2 00002364: MLOAD 00002365: SWAP2 00002366: MSTORE 00002367: SWAP2 00002368: DUP3 00002369: SLOAD 0000236a: SWAP3 0000236b: PUSH2 0x2373 0000236e: DUP5 0000236f: PUSH2 0x2316 00002372: JUMP 00002373: JUMPDEST 00002374: DUP1 00002375: DUP5 00002376: MSTORE 00002377: SWAP4 00002378: PUSH1 0x20 0000237a: SWAP2 0000237b: PUSH1 0x01 0000237d: SWAP2 0000237e: DUP3 0000237f: DUP2 00002380: AND 00002381: SWAP1 00002382: DUP2 00002383: ISZERO 00002384: PUSH2 0x23ee 00002387: JUMPI 00002388: POP 00002389: PUSH1 0x01 0000238b: EQ 0000238c: PUSH2 0x239f 0000238f: JUMPI 00002390: JUMPDEST 00002391: POP 00002392: POP 00002393: POP 00002394: PUSH2 0x22db 00002397: SWAP3 00002398: POP 00002399: SUB 0000239a: DUP4 0000239b: PUSH2 0x1f5f 0000239e: JUMP 0000239f: JUMPDEST 000023a0: PUSH1 0x00 000023a2: SWAP1 000023a3: DUP2 000023a4: MSTORE 000023a5: PUSH1 0x00 000023a7: DUP1 000023a8: MLOAD 000023a9: PUSH1 0x20 000023ab: PUSH2 0x27c5 000023ae: DUP4 000023af: CODECOPY 000023b0: DUP2 000023b1: MLOAD 000023b2: SWAP2 000023b3: MSTORE 000023b4: SWAP6 000023b5: SWAP1 000023b6: SWAP4 000023b7: POP 000023b8: SWAP2 000023b9: SWAP1 000023ba: JUMPDEST 000023bb: DUP3 000023bc: DUP5 000023bd: LT 000023be: PUSH2 0x23d6 000023c1: JUMPI 000023c2: POP 000023c3: PUSH2 0x22db 000023c6: SWAP5 000023c7: POP 000023c8: POP 000023c9: POP 000023ca: DUP2 000023cb: ADD 000023cc: PUSH1 0x20 000023ce: ADD 000023cf: CODESIZE 000023d0: DUP1 000023d1: DUP1 000023d2: PUSH2 0x2390 000023d5: JUMP 000023d6: JUMPDEST 000023d7: DUP6 000023d8: SLOAD 000023d9: DUP9 000023da: DUP6 000023db: ADD 000023dc: DUP4 000023dd: ADD 000023de: MSTORE 000023df: SWAP5 000023e0: DUP6 000023e1: ADD 000023e2: SWAP5 000023e3: DUP8 000023e4: SWAP5 000023e5: POP 000023e6: SWAP3 000023e7: DUP2 000023e8: ADD 000023e9: SWAP3 000023ea: PUSH2 0x23ba 000023ed: JUMP 000023ee: JUMPDEST 000023ef: SWAP3 000023f0: POP 000023f1: POP 000023f2: POP 000023f3: PUSH1 0x20 000023f5: SWAP3 000023f6: POP 000023f7: PUSH2 0x22db 000023fa: SWAP5 000023fb: SWAP2 000023fc: POP 000023fd: PUSH1 0xff 000023ff: NOT 00002400: AND 00002401: DUP3 00002402: DUP5 00002403: ADD 00002404: MSTORE 00002405: ISZERO 00002406: ISZERO 00002407: PUSH1 0x05 00002409: SHL 0000240a: DUP3 0000240b: ADD 0000240c: ADD 0000240d: CODESIZE 0000240e: DUP1 0000240f: DUP1 00002410: PUSH2 0x2390 00002413: JUMP 00002414: JUMPDEST 00002415: PUSH1 0x40 00002417: MLOAD 00002418: SWAP1 00002419: PUSH1 0x00 0000241b: DUP3 0000241c: PUSH32 0xa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103 0000243d: SWAP2 0000243e: DUP3 0000243f: SLOAD 00002440: SWAP3 00002441: PUSH2 0x2449 00002444: DUP5 00002445: PUSH2 0x2316 00002448: JUMP 00002449: JUMPDEST 0000244a: DUP1 0000244b: DUP5 0000244c: MSTORE 0000244d: SWAP4 0000244e: PUSH1 0x20 00002450: SWAP2 00002451: PUSH1 0x01 00002453: SWAP2 00002454: DUP3 00002455: DUP2 00002456: AND 00002457: SWAP1 00002458: DUP2 00002459: ISZERO 0000245a: PUSH2 0x23ee 0000245d: JUMPI 0000245e: POP 0000245f: PUSH1 0x01 00002461: EQ 00002462: PUSH2 0x2474 00002465: JUMPI 00002466: POP 00002467: POP 00002468: POP 00002469: PUSH2 0x22db 0000246c: SWAP3 0000246d: POP 0000246e: SUB 0000246f: DUP4 00002470: PUSH2 0x1f5f 00002473: JUMP 00002474: JUMPDEST 00002475: PUSH1 0x00 00002477: SWAP1 00002478: DUP2 00002479: MSTORE 0000247a: PUSH32 0x5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75 0000249b: SWAP6 0000249c: SWAP1 0000249d: SWAP4 0000249e: POP 0000249f: SWAP2 000024a0: SWAP1 000024a1: JUMPDEST 000024a2: DUP3 000024a3: DUP5 000024a4: LT 000024a5: PUSH2 0x24bd 000024a8: JUMPI 000024a9: POP 000024aa: PUSH2 0x22db 000024ad: SWAP5 000024ae: POP 000024af: POP 000024b0: POP 000024b1: DUP2 000024b2: ADD 000024b3: PUSH1 0x20 000024b5: ADD 000024b6: CODESIZE 000024b7: DUP1 000024b8: DUP1 000024b9: PUSH2 0x2390 000024bc: JUMP 000024bd: JUMPDEST 000024be: DUP6 000024bf: SLOAD 000024c0: DUP9 000024c1: DUP6 000024c2: ADD 000024c3: DUP4 000024c4: ADD 000024c5: MSTORE 000024c6: SWAP5 000024c7: DUP6 000024c8: ADD 000024c9: SWAP5 000024ca: DUP8 000024cb: SWAP5 000024cc: POP 000024cd: SWAP3 000024ce: DUP2 000024cf: ADD 000024d0: SWAP3 000024d1: PUSH2 0x24a1 000024d4: JUMP 000024d5: JUMPDEST 000024d6: PUSH1 0x00 000024d8: DUP1 000024d9: PUSH2 0x24fe 000024dc: SWAP3 000024dd: PUSH1 0x01 000024df: DUP1 000024e0: PUSH1 0xa0 000024e2: SHL 000024e3: SUB 000024e4: AND 000024e5: SWAP4 000024e6: PUSH1 0x20 000024e8: DUP2 000024e9: MLOAD 000024ea: SWAP2 000024eb: ADD 000024ec: DUP3 000024ed: DUP7 000024ee: GAS 000024ef: CALL 000024f0: PUSH2 0x24f7 000024f3: PUSH2 0x25b2 000024f6: JUMP 000024f7: JUMPDEST 000024f8: SWAP1 000024f9: DUP4 000024fa: PUSH2 0x2672 000024fd: JUMP 000024fe: JUMPDEST 000024ff: DUP1 00002500: MLOAD 00002501: SWAP1 00002502: DUP2 00002503: ISZERO 00002504: ISZERO 00002505: SWAP2 00002506: DUP3 00002507: PUSH2 0x252c 0000250a: JUMPI 0000250b: JUMPDEST 0000250c: POP 0000250d: POP 0000250e: PUSH2 0x2514 00002511: JUMPI 00002512: POP 00002513: JUMP 00002514: JUMPDEST 00002515: PUSH1 0x24 00002517: SWAP1 00002518: PUSH1 0x40 0000251a: MLOAD 0000251b: SWAP1 0000251c: PUSH4 0x5274afe7 00002521: PUSH1 0xe0 00002523: SHL 00002524: DUP3 00002525: MSTORE 00002526: PUSH1 0x04 00002528: DUP3 00002529: ADD 0000252a: MSTORE 0000252b: REVERT 0000252c: JUMPDEST 0000252d: PUSH2 0x253f 00002530: SWAP3 00002531: POP 00002532: PUSH1 0x20 00002534: DUP1 00002535: SWAP2 00002536: DUP4 00002537: ADD 00002538: ADD 00002539: SWAP2 0000253a: ADD 0000253b: PUSH2 0x2032 0000253e: JUMP 0000253f: JUMPDEST 00002540: ISZERO 00002541: CODESIZE 00002542: DUP1 00002543: PUSH2 0x250b 00002546: JUMP 00002547: JUMPDEST 00002548: PUSH1 0xff 0000254a: PUSH1 0x00 0000254c: DUP1 0000254d: MLOAD 0000254e: PUSH1 0x20 00002550: PUSH2 0x27e5 00002553: DUP4 00002554: CODECOPY 00002555: DUP2 00002556: MLOAD 00002557: SWAP2 00002558: MSTORE 00002559: SLOAD 0000255a: PUSH1 0x40 0000255c: SHR 0000255d: AND 0000255e: ISZERO 0000255f: PUSH2 0x2564 00002562: JUMPI 00002563: JUMP 00002564: JUMPDEST 00002565: PUSH1 0x40 00002567: MLOAD 00002568: PUSH4 0x1afcd79f 0000256d: PUSH1 0xe3 0000256f: SHL 00002570: DUP2 00002571: MSTORE 00002572: PUSH1 0x04 00002574: SWAP1 00002575: REVERT 00002576: JUMPDEST 00002577: DUP2 00002578: MLOAD 00002579: SWAP2 0000257a: SWAP1 0000257b: PUSH1 0x41 0000257d: DUP4 0000257e: SUB 0000257f: PUSH2 0x25a7 00002582: JUMPI 00002583: PUSH2 0x25a0 00002586: SWAP3 00002587: POP 00002588: PUSH1 0x20 0000258a: DUP3 0000258b: ADD 0000258c: MLOAD 0000258d: SWAP1 0000258e: PUSH1 0x60 00002590: PUSH1 0x40 00002592: DUP5 00002593: ADD 00002594: MLOAD 00002595: SWAP4 00002596: ADD 00002597: MLOAD 00002598: PUSH1 0x00 0000259a: BYTE 0000259b: SWAP1 0000259c: PUSH2 0x25e2 0000259f: JUMP 000025a0: JUMPDEST 000025a1: SWAP2 000025a2: SWAP3 000025a3: SWAP1 000025a4: SWAP2 000025a5: SWAP1 000025a6: JUMP 000025a7: JUMPDEST 000025a8: POP 000025a9: POP 000025aa: PUSH1 0x00 000025ac: SWAP2 000025ad: PUSH1 0x02 000025af: SWAP2 000025b0: SWAP1 000025b1: JUMP 000025b2: JUMPDEST 000025b3: RETURNDATASIZE 000025b4: ISZERO 000025b5: PUSH2 0x25dd 000025b8: JUMPI 000025b9: RETURNDATASIZE 000025ba: SWAP1 000025bb: PUSH2 0x25c3 000025be: DUP3 000025bf: PUSH2 0x1f80 000025c2: JUMP 000025c3: JUMPDEST 000025c4: SWAP2 000025c5: PUSH2 0x25d1 000025c8: PUSH1 0x40 000025ca: MLOAD 000025cb: SWAP4 000025cc: DUP5 000025cd: PUSH2 0x1f5f 000025d0: JUMP 000025d1: JUMPDEST 000025d2: DUP3 000025d3: MSTORE 000025d4: RETURNDATASIZE 000025d5: PUSH1 0x00 000025d7: PUSH1 0x20 000025d9: DUP5 000025da: ADD 000025db: RETURNDATACOPY 000025dc: JUMP 000025dd: JUMPDEST 000025de: PUSH1 0x60 000025e0: SWAP1 000025e1: JUMP 000025e2: JUMPDEST 000025e3: SWAP2 000025e4: SWAP1 000025e5: PUSH32 0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0 00002606: DUP5 00002607: GT 00002608: PUSH2 0x2666 0000260b: JUMPI 0000260c: SWAP3 0000260d: PUSH1 0x20 0000260f: SWAP3 00002610: SWAP2 00002611: PUSH1 0xff 00002613: PUSH1 0x80 00002615: SWAP6 00002616: PUSH1 0x40 00002618: MLOAD 00002619: SWAP5 0000261a: DUP6 0000261b: MSTORE 0000261c: AND 0000261d: DUP5 0000261e: DUP5 0000261f: ADD 00002620: MSTORE 00002621: PUSH1 0x40 00002623: DUP4 00002624: ADD 00002625: MSTORE 00002626: PUSH1 0x60 00002628: DUP3 00002629: ADD 0000262a: MSTORE 0000262b: PUSH1 0x00 0000262d: SWAP3 0000262e: DUP4 0000262f: SWAP2 00002630: DUP3 00002631: DUP1 00002632: MSTORE 00002633: PUSH1 0x01 00002635: GAS 00002636: STATICCALL 00002637: ISZERO 00002638: PUSH2 0x265a 0000263b: JUMPI 0000263c: DUP1 0000263d: MLOAD 0000263e: PUSH1 0x01 00002640: PUSH1 0x01 00002642: PUSH1 0xa0 00002644: SHL 00002645: SUB 00002646: DUP2 00002647: AND 00002648: ISZERO 00002649: PUSH2 0x2651 0000264c: JUMPI 0000264d: SWAP2 0000264e: DUP2 0000264f: SWAP1 00002650: JUMP 00002651: JUMPDEST 00002652: POP 00002653: DUP1 00002654: SWAP2 00002655: PUSH1 0x01 00002657: SWAP2 00002658: SWAP1 00002659: JUMP 0000265a: JUMPDEST 0000265b: PUSH1 0x40 0000265d: MLOAD 0000265e: SWAP1 0000265f: RETURNDATASIZE 00002660: SWAP1 00002661: DUP3 00002662: RETURNDATACOPY 00002663: RETURNDATASIZE 00002664: SWAP1 00002665: REVERT 00002666: JUMPDEST 00002667: POP 00002668: POP 00002669: POP 0000266a: PUSH1 0x00 0000266c: SWAP2 0000266d: PUSH1 0x03 0000266f: SWAP2 00002670: SWAP1 00002671: JUMP 00002672: JUMPDEST 00002673: SWAP1 00002674: PUSH2 0x2699 00002677: JUMPI 00002678: POP 00002679: DUP1 0000267a: MLOAD 0000267b: ISZERO 0000267c: PUSH2 0x2687 0000267f: JUMPI 00002680: DUP1 00002681: MLOAD 00002682: SWAP1 00002683: PUSH1 0x20 00002685: ADD 00002686: REVERT 00002687: JUMPDEST 00002688: PUSH1 0x40 0000268a: MLOAD 0000268b: PUSH4 0x0a12f521 00002690: PUSH1 0xe1 00002692: SHL 00002693: DUP2 00002694: MSTORE 00002695: PUSH1 0x04 00002697: SWAP1 00002698: REVERT 00002699: JUMPDEST 0000269a: DUP2 0000269b: MLOAD 0000269c: ISZERO 0000269d: DUP1 0000269e: PUSH2 0x26cc 000026a1: JUMPI 000026a2: JUMPDEST 000026a3: PUSH2 0x26aa 000026a6: JUMPI 000026a7: POP 000026a8: SWAP1 000026a9: JUMP 000026aa: JUMPDEST 000026ab: PUSH1 0x40 000026ad: MLOAD 000026ae: PUSH4 0x9996b315 000026b3: PUSH1 0xe0 000026b5: SHL 000026b6: DUP2 000026b7: MSTORE 000026b8: PUSH1 0x01 000026ba: PUSH1 0x01 000026bc: PUSH1 0xa0 000026be: SHL 000026bf: SUB 000026c0: SWAP1 000026c1: SWAP2 000026c2: AND 000026c3: PUSH1 0x04 000026c5: DUP3 000026c6: ADD 000026c7: MSTORE 000026c8: PUSH1 0x24 000026ca: SWAP1 000026cb: REVERT 000026cc: JUMPDEST 000026cd: POP 000026ce: DUP1 000026cf: EXTCODESIZE 000026d0: ISZERO 000026d1: PUSH2 0x26a2 000026d4: JUMP 000026d5: JUMPDEST 000026d6: PUSH2 0x26dd 000026d9: PUSH2 0x2350 000026dc: JUMP 000026dd: JUMPDEST 000026de: DUP1 000026df: MLOAD 000026e0: SWAP1 000026e1: DUP2 000026e2: ISZERO 000026e3: PUSH2 0x26ed 000026e6: JUMPI 000026e7: PUSH1 0x20 000026e9: ADD 000026ea: KECCAK256 000026eb: SWAP1 000026ec: JUMP 000026ed: JUMPDEST 000026ee: POP 000026ef: POP 000026f0: PUSH32 0xa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100 00002711: SLOAD 00002712: DUP1 00002713: ISZERO 00002714: PUSH2 0x271a 00002717: JUMPI 00002718: SWAP1 00002719: JUMP 0000271a: JUMPDEST 0000271b: POP 0000271c: PUSH32 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 0000273d: SWAP1 0000273e: JUMP 0000273f: JUMPDEST 00002740: PUSH2 0x2747 00002743: PUSH2 0x2414 00002746: JUMP 00002747: JUMPDEST 00002748: DUP1 00002749: MLOAD 0000274a: SWAP1 0000274b: DUP2 0000274c: ISZERO 0000274d: PUSH2 0x2757 00002750: JUMPI 00002751: PUSH1 0x20 00002753: ADD 00002754: KECCAK256 00002755: SWAP1 00002756: JUMP 00002757: JUMPDEST 00002758: POP 00002759: POP 0000275a: PUSH32 0xa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101 0000277b: SLOAD 0000277c: DUP1 0000277d: ISZERO 0000277e: PUSH2 0x271a 00002781: JUMPI 00002782: SWAP1 00002783: JUMP 00002784: INVALID 00002785: LOG1 00002786: PUSH11 0x46d94261c7517cc8ff89f6 00002792: SHR 00002793: UNKNOWN(0x0C) 00002794: UNKNOWN(0xE9) 00002795: CALLDATALOAD 00002796: SWAP9 00002797: UNKNOWN(0xE3) 00002798: UNKNOWN(0xC8) 00002799: BLOBHASH 0000279a: DUP1 0000279b: LT 0000279c: GT 0000279d: UNKNOWN(0xDE) 0000279e: UNKNOWN(0xE6) 0000279f: BLOBHASH 000027a0: UNKNOWN(0xA6) 000027a1: UNKNOWN(0xA5) 000027a2: JUMPI 000027a3: UNKNOWN(0xD1) 000027a4: MUL 000027a5: SWAP1 000027a6: AND 000027a7: UNKNOWN(0xD0) 000027a8: SWAP14 000027a9: PUSH19 0xd40fdae2fd8ceac6b6234c7706214fd39c1cd1 000027bd: UNKNOWN(0xE6) 000027be: MULMOD 000027bf: LOG0 000027c0: MSTORE 000027c1: DUP13 000027c2: NOT 000027c3: SWAP4 000027c4: STOP 000027c5: TIMESTAMP 000027c6: UNKNOWN(0xAD) 000027c7: TSTORE 000027c8: RETURNDATACOPY 000027c9: UNKNOWN(0x1F) 000027ca: UNKNOWN(0x2E) 000027cb: PUSH15 0x70edcf6d991b8a3023d3fca8047a13 000027db: ISZERO 000027dc: SWAP3 000027dd: UNKNOWN(0xF9) 000027de: UNKNOWN(0xED) 000027df: UNKNOWN(0xB9) 000027e0: REVERT 000027e1: SWAP12 000027e2: DUP10 000027e3: UNKNOWN(0xD5) 000027e4: PUSH30 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c 00002803: PUSH11 0x00a2646970667358221220 0000280f: UNKNOWN(0x0E) 00002810: CALLDATACOPY 00002811: UNKNOWN(0xDF) 00002812: MCOPY 00002813: UNKNOWN(0xEA) 00002814: DUP9 00002815: UNKNOWN(0xD5) 00002816: PUSH29 0x32006e2252777f176a3809f74f9c1296a299673340c836f464736f6c63 00002834: NUMBER 00002835: STOP 00002836: ADDMOD 00002837: NOT 00002838: STOP 00002839: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | upgradeability | detector | Untrusted DELEGATECALL target reachable | 70 | yes | yes |
viewtrace_id: 0xef823536c47151a364b6e82132af76521f90dbbaad68ad0f76262dd6cf171f68
call_targets:
0x43506849d7c04f9138d1a2050bbf3a0c054402dd, 0xab9d6cb7a427c0765163a7f45bb91cafe5f2d375, 0xd3494713a5cfad3f5359379dfa074e2ac8c6fd65, 0xe2f826324b2faf99e513d16d266c3f80ae87832b
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "confirmed",
"attempts": 63,
"trace_id": "0xef823536c47151a364b6e82132af76521f90dbbaad68ad0f76262dd6cf171f68",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x43506849d7c04f9138d1a2050bbf3a0c054402dd",
"0xab9d6cb7a427c0765163a7f45bb91cafe5f2d375",
"0xd3494713a5cfad3f5359379dfa074e2ac8c6fd65",
"0xe2f826324b2faf99e513d16d266c3f80ae87832b"
],
"matched_probe": null,
"target_varies": true,
"classification": "target_varies"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x1902f068",
"selector": "0x1902f068",
"calldata_variants": [
"0x1902f068",
"0x1902f0680000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2c8a6ae1",
"selector": "0x2c8a6ae1",
"calldata_variants": [
"0x2c8a6ae1",
"0x2c8a6ae10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x32b3a987",
"selector": "0x32b3a987",
"calldata_variants": [
"0x32b3a987",
"0x32b3a9870000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3bbcb44b",
"selector": "0x3bbcb44b",
"calldata_variants": [
"0x3bbcb44b",
"0x3bbcb44b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x486a7e6b",
"selector": "0x486a7e6b",
"calldata_variants": [
"0x486a7e6b",
"0x486a7e6b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4c598b56",
"selector": "0x4c598b56",
"calldata_variants": [
"0x4c598b56",
"0x4c598b560000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4f1ef286",
"selector": "0x4f1ef286",
"calldata_variants": [
"0x4f1ef286",
"0x4f1ef2860000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4f872ec3",
"selector": "0x4f872ec3",
"calldata_variants": [
"0x4f872ec3",
"0x4f872ec30000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5771,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [],
"delegatecall_count": 1,
"untrusted_delegatecall_count": 1
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x44ed21f73107d4734ac572f48e890ef0ea3f9675947c57226e3512db4e330d3b
call_targets:
0x61488ae9dedca3f29f5e72bbf23ba975862c20ba
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x44ed21f73107d4734ac572f48e890ef0ea3f9675947c57226e3512db4e330d3b",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x61488ae9dedca3f29f5e72bbf23ba975862c20ba"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x1902f068",
"selector": "0x1902f068",
"calldata_variants": [
"0x1902f068",
"0x1902f0680000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2c8a6ae1",
"selector": "0x2c8a6ae1",
"calldata_variants": [
"0x2c8a6ae1",
"0x2c8a6ae10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x32b3a987",
"selector": "0x32b3a987",
"calldata_variants": [
"0x32b3a987",
"0x32b3a9870000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3bbcb44b",
"selector": "0x3bbcb44b",
"calldata_variants": [
"0x3bbcb44b",
"0x3bbcb44b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x486a7e6b",
"selector": "0x486a7e6b",
"calldata_variants": [
"0x486a7e6b",
"0x486a7e6b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4c598b56",
"selector": "0x4c598b56",
"calldata_variants": [
"0x4c598b56",
"0x4c598b560000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4f1ef286",
"selector": "0x4f1ef286",
"calldata_variants": [
"0x4f1ef286",
"0x4f1ef2860000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4f872ec3",
"selector": "0x4f872ec3",
"calldata_variants": [
"0x4f872ec3",
"0x4f872ec30000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 767,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1344,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3815,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 7,
"guards_detected": []
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x44ed21f73107d4734ac572f48e890ef0ea3f9675947c57226e3512db4e330d3b
call_targets:
0x61488ae9dedca3f29f5e72bbf23ba975862c20ba
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x44ed21f73107d4734ac572f48e890ef0ea3f9675947c57226e3512db4e330d3b",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x61488ae9dedca3f29f5e72bbf23ba975862c20ba"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x1902f068",
"selector": "0x1902f068",
"calldata_variants": [
"0x1902f068",
"0x1902f0680000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2c8a6ae1",
"selector": "0x2c8a6ae1",
"calldata_variants": [
"0x2c8a6ae1",
"0x2c8a6ae10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x32b3a987",
"selector": "0x32b3a987",
"calldata_variants": [
"0x32b3a987",
"0x32b3a9870000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3bbcb44b",
"selector": "0x3bbcb44b",
"calldata_variants": [
"0x3bbcb44b",
"0x3bbcb44b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x486a7e6b",
"selector": "0x486a7e6b",
"calldata_variants": [
"0x486a7e6b",
"0x486a7e6b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4c598b56",
"selector": "0x4c598b56",
"calldata_variants": [
"0x4c598b56",
"0x4c598b560000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4f1ef286",
"selector": "0x4f1ef286",
"calldata_variants": [
"0x4f1ef286",
"0x4f1ef2860000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4f872ec3",
"selector": "0x4f872ec3",
"calldata_variants": [
"0x4f872ec3",
"0x4f872ec30000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 767,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1344,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3815,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 7,
"guards_detected": [],
"untrusted_call_count": 7
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 1
}
|
| medium | reentrancy | slither | Reentrancy in L1OpUSDCBridgeAdapter.burnLockedUSDC() (src/contracts/L1OpUSDCBridgeAdapter.sol#113-137): | 75 | no | — |
viewevidence_json{
"impact": "Medium",
"detector": "reentrancy-no-eth",
"elements": [
{
"name": "burnLockedUSDC",
"type": "function",
"source_mapping": {
"lines": [
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137
],
"start": 4694,
"length": 1141,
"ending_column": 4,
"is_dependency": false,
"filename_short": "src/contracts/L1OpUSDCBridgeAdapter.sol",
"starting_column": 3,
"filename_absolute": "/tmp/slither-6kdtvjq8/src/contracts/L1OpUSDCBridgeAdapter.sol",
"filename_relative": "src/contracts/L1OpUSDCBridgeAdapter.sol"
},
"type_specific_fields": {
"parent": {
"name": "L1OpUSDCBridgeAdapter",
"type": "contract",
"source_mapping": {
"lines": [
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335
],
"start": 920,
"length": 13162,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/contracts/L1OpUSDCBridgeAdapter.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-6kdtvjq8/src/contracts/L1OpUSDCBridgeAdapter.sol",
"filename_relative": "src/contracts/L1OpUSDCBridgeAdapter.sol"
}
},
"signature": "burnLockedUSDC()"
}
},
{
"name": "IUSDC(USDC).burn(_burnAmount)",
"type": "node",
"source_mapping": {
"lines": [
130
],
"start": 5672,
"length": 29,
"ending_column": 36,
"is_dependency": false,
"filename_short": "src/contracts/L1OpUSDCBridgeAdapter.sol",
"starting_column": 7,
"filename_absolute": "/tmp/slither-6kdtvjq8/src/contracts/L1OpUSDCBridgeAdapter.sol",
"filename_relative": "src/contracts/L1OpUSDCBridgeAdapter.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "burnLockedUSDC",
"type": "function",
"source_mapping": {
"lines": [
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137
],
"start": 4694,
"length": 1141,
"ending_column": 4,
"is_dependency": false,
"filename_short": "src/contracts/L1OpUSDCBridgeAdapter.sol",
"starting_column": 3,
"filename_absolute": "/tmp/slither-6kdtvjq8/src/contracts/L1OpUSDCBridgeAdapter.sol",
"filename_relative": "src/contracts/L1OpUSDCBridgeAdapter.sol"
},
"type_specific_fields": {
"parent": {
"name": "L1OpUSDCBridgeAdapter",
"type": "contract",
"source_mapping": {
"lines": [
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335
],
"start": 920,
"length": 13162,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/contracts/L1OpUSDCBridgeAdapter.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-6kdtvjq8/src/contracts/L1OpUSDCBridgeAdapter.sol",
"filename_relative": "src/contracts/L1OpUSDCBridgeAdapter.sol"
}
},
"signature": "burnLockedUSDC()"
}
}
}
},
{
"name": "burnAmount = 0",
"type": "node",
"source_mapping": {
"lines": [
134
],
"start": 5746,
"length": 14,
"ending_column": 19,
"is_dependency": false,
"filename_short": "src/contracts/L1OpUSDCBridgeAdapter.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-6kdtvjq8/src/contracts/L1OpUSDCBridgeAdapter.sol",
"filename_relative": "src/contracts/L1OpUSDCBridgeAdapter.sol"
},
"additional_fields": {
"variable_name": "burnAmount",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "burnLockedUSDC",
"type": "function",
"source_mapping": {
"lines": [
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137
],
"start": 4694,
"length": 1141,
"ending_column": 4,
"is_dependency": false,
"filename_short": "src/contracts/L1OpUSDCBridgeAdapter.sol",
"starting_column": 3,
"filename_absolute": "/tmp/slither-6kdtvjq8/src/contracts/L1OpUSDCBridgeAdapter.sol",
"filename_relative": "src/contracts/L1OpUSDCBridgeAdapter.sol"
},
"type_specific_fields": {
"parent": {
"name": "L1OpUSDCBridgeAdapter",
"type": "contract",
"source_mapping": {
"lines": [
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335
],
"start": 920,
"length": 13162,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/contracts/L1OpUSDCBridgeAdapter.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-6kdtvjq8/src/contracts/L1OpUSDCBridgeAdapter.sol",
"filename_relative": "src/contracts/L1OpUSDCBridgeAdapter.sol"
}
},
"signature": "burnLockedUSDC()"
}
}
}
},
{
"name": "burnCaller = address(0)",
"type": "node",
"source_mapping": {
"lines": [
135
],
"start": 5766,
"length": 23,
"ending_column": 28,
"is_dependency": false,
"filename_short": "src/contracts/L1OpUSDCBridgeAdapter.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-6kdtvjq8/src/contracts/L1OpUSDCBridgeAdapter.sol",
"filename_relative": "src/contracts/L1OpUSDCBridgeAdapter.sol"
},
"additional_fields": {
"variable_name": "burnCaller",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "burnLockedUSDC",
"type": "function",
"source_mapping": {
"lines": [
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137
],
"start": 4694,
"length": 1141,
"ending_column": 4,
"is_dependency": false,
"filename_short": "src/contracts/L1OpUSDCBridgeAdapter.sol",
"starting_column": 3,
"filename_absolute": "/tmp/slither-6kdtvjq8/src/contracts/L1OpUSDCBridgeAdapter.sol",
"filename_relative": "src/contracts/L1OpUSDCBridgeAdapter.sol"
},
"type_specific_fields": {
"parent": {
"name": "L1OpUSDCBridgeAdapter",
"type": "contract",
"source_mapping": {
"lines": [
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335
],
"start": 920,
"length": 13162,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/contracts/L1OpUSDCBridgeAdapter.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-6kdtvjq8/src/contracts/L1OpUSDCBridgeAdapter.sol",
"filename_relative": "src/contracts/L1OpUSDCBridgeAdapter.sol"
}
},
"signature": "burnLockedUSDC()"
}
}
}
}
],
"locations": [
{
"file": "src/contracts/L1OpUSDCBridgeAdapter.sol",
"name": "burnLockedUSDC",
"type": "function",
"lines": [
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137
]
},
{
"file": "src/contracts/L1OpUSDCBridgeAdapter.sol",
"name": "IUSDC(USDC).burn(_burnAmount)",
"type": "node",
"lines": [
130
]
},
{
"file": "src/contracts/L1OpUSDCBridgeAdapter.sol",
"name": "burnAmount = 0",
"type": "node",
"lines": [
134
]
},
{
"file": "src/contracts/L1OpUSDCBridgeAdapter.sol",
"name": "burnCaller = address(0)",
"type": "node",
"lines": [
135
]
}
],
"description": "Reentrancy in L1OpUSDCBridgeAdapter.burnLockedUSDC() (src/contracts/L1OpUSDCBridgeAdapter.sol#113-137):\n\tExternal calls:\n\t- IUSDC(USDC).burn(_burnAmount) (src/contracts/L1OpUSDCBridgeAdapter.sol#130)\n\tState variables written after the call(s):\n\t- burnAmount = 0 (src/contracts/L1OpUSDCBridgeAdapter.sol#134)\n\tL1OpUSDCBridgeAdapter.burnAmount (src/contracts/L1OpUSDCBridgeAdapter.sol#22) can be used in cross function reentrancies:\n\t- L1OpUSDCBridgeAdapter.burnAmount (src/contracts/L1OpUSDCBridgeAdapter.sol#22)\n\t- L1OpUSDCBridgeAdapter.burnLockedUSDC() (src/contracts/L1OpUSDCBridgeAdapter.sol#113-137)\n\t- L1OpUSDCBridgeAdapter.setBurnAmount(uint256) (src/contracts/L1OpUSDCBridgeAdapter.sol#100-107)\n\t- burnCaller = address(0) (src/contracts/L1OpUSDCBridgeAdapter.sol#135)\n\tL1OpUSDCBridgeAdapter.burnCaller (src/contracts/L1OpUSDCBridgeAdapter.sol#25) can be used in cross function reentrancies:\n\t- L1OpUSDCBridgeAdapter.burnCaller (src/contracts/L1OpUSDCBridgeAdapter.sol#25)\n\t- L1OpUSDCBridgeAdapter.burnLockedUSDC() (src/contracts/L1OpUSDCBridgeAdapter.sol#113-137)\n\t- L1OpUSDCBridgeAdapter.migrateToNative(address,address,uint32,uint32) (src/contracts/L1OpUSDCBridgeAdapter.sol#68-93)"
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 9
}
|
| info | other | cast | Heavy CALL-family usage | 55 | no | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 16
}
|