019be3d6-8451-73ae-9304-bf01aa16f7fb
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 |
|---|---|---|---|---|
| 41037 | artifact.fetch | complete | 1 / 3 | 2 months ago |
| 41038 | proxy.resolve | complete | 1 / 3 | 2 months ago |
| 41039 | tool.cast_disasm | complete | 1 / 3 | 2 months ago |
| 41040 | analysis.bundle | complete | 1 / 3 | 2 months ago |
| 41041 | capability.graph | complete | 1 / 3 | 2 months ago |
| 41042 | detector.run | complete | 1 / 3 | 2 months ago |
| 41043 | validation.fork | complete | 1 / 3 | 2 months ago |
| 41409 | report.consolidate | complete | 1 / 6 | 2 months ago |
| 41410 | tool.slither | complete | 1 / 2 | 2 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-xhisbld2)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-xhisbld2)
Impossible to generate IR for SablierFlow.depletionTimeOf (src/SablierFlow.sol#88-135):
'NoneType' object has no attribute 'parameters'
Impossible to generate IR for SablierFlow.adjustRatePerSecond (src/SablierFlow.sol#231-261):
'NoneType' object has no attribute 'parameters'
Impossible to generate IR for SablierFlow.recover (src/SablierFlow.sol#364-376):
'NoneType' object has no attribute 'parameters'
Impossible to generate IR for SablierFlow.setNativeToken (src/SablierFlow.sol#474-490):
'NoneType' object has no attribute 'parameters'
Impossible to generate IR for SablierFlow._update (src/SablierFlow.sol#591-608):
'NoneType' object has no attribute 'parameters'
Impossible to generate IR for SablierFlow._verifyStreamSenderRecipient (src/SablierFlow.sol#695-703):
'NoneType' object has no attribute 'parameters'
Impossible to generate IR for SablierFlow._adjustRatePerSecond (src/SablierFlow.sol#710-734):
'NoneType' object has no attribute 'parameters'
Impossible to generate IR for SablierFlow._create (src/SablierFlow.sol#737-819):
'NoneType' object has no attribute 'parameters'
Impossible to generate IR for SablierFlow._deposit (src/SablierFlow.sol#822-843):
'NoneType' object has no attribute 'parameters'
Impossible to generate IR for SablierFlow._pause (src/SablierFlow.sol#846-862):
'NoneType' object has no attribute 'parameters'
Impossible to generate IR for SablierFlow._refund (src/SablierFlow.sol#865-902):
'NoneType' object has no attribute 'parameters'
Impossible to generate IR for SablierFlow._restart (src/SablierFlow.sol#905-916):
'NoneType' object has no attribute 'parameters'
Impossible to generate IR for SablierFlow._void (src/SablierFlow.sol#919-963):
'NoneType' object has no attribute 'parameters'
Impossible to generate IR for SablierFlow._withdraw (src/SablierFlow.sol#966-1066):
'NoneType' object has no attribute 'parameters'
Comptrollerable.transferFeesToComptroller() (node_modules/@sablier/evm-utils/src/Comptrollerable.sol#62-74) sends eth to arbitrary user
Dangerous calls:
- (success,None) = address(comptroller).call{value: feeAmount}() (node_modules/@sablier/evm-utils/src/Comptrollerable.sol#66)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations
Batch.batch(bytes[]) (node_modules/@sablier/evm-utils/src/Batch.sol#13-34) has delegatecall inside a loop in a payable function: (success,result) = address(this).delegatecall(calls[i]) (node_modules/@sablier/evm-utils/src/Batch.sol#18)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#payable-functions-using-delegatecall-inside-a-loop
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#204-275) has bitwise-xor operator ^ instead of the exponentiation operator **:
- inverse = (3 * denominator) ^ 2 (node_modules/@openzeppelin/contracts/utils/math/Math.sol#257)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-exponentiation
SablierFlowState.aggregateAmount (src/abstracts/SablierFlowState.sol#20) is never initialized. It is used in:
- SablierFlow.recover(IERC20,address) (src/SablierFlow.sol#364-376)
SablierFlowState._streams (src/abstracts/SablierFlowState.sol#32) is never initialized. It is used in:
- SablierFlowState.getBalance(uint256) (src/abstracts/SablierFlowState.sol#84-86)
- SablierFlowState.getRatePerSecond(uint256) (src/abstracts/SablierFlowState.sol#89-97)
- SablierFlowState.getSender(uint256) (src/abstracts/SablierFlowState.sol#100-102)
- SablierFlowState.getSnapshotDebtScaled(uint256) (src/abstracts/SablierFlowState.sol#105-113)
- SablierFlowState.getSnapshotTime(uint256) (src/abstracts/SablierFlowState.sol#116-118)
- SablierFlowState.getStream(uint256) (src/abstracts/SablierFlowState.sol#121-123)
- SablierFlowState.getToken(uint256) (src/abstracts/SablierFlowState.sol#126-128)
- SablierFlowState.getTokenDecimals(uint256) (src/abstracts/SablierFlowState.sol#131-139)
- SablierFlowState.isStream(uint256) (src/abstracts/SablierFlowState.sol#142-144)
- SablierFlowState.isTransferable(uint256) (src/abstracts/SablierFlowState.sol#147-149)
- SablierFlowState.isVoided(uint256) (src/abstracts/SablierFlowState.sol#152-154)
- SablierFlowState._notNull(uint256) (src/abstracts/SablierFlowState.sol#162-166)
- SablierFlow.calculateMinFeeWei(uint256) (src/SablierFlow.sol#68-80)
- SablierFlow.depletionTimeOf(uint256) (src/SablierFlow.sol#88-135)
- SablierFlow.statusOf(uint256) (src/SablierFlow.sol#166-197)
- SablierFlow._update(address,uint256,address) (src/SablierFlow.sol#591-608)
- SablierFlow._coveredDebtOf(uint256) (src/SablierFlow.sol#615-632)
- SablierFlow._ongoingDebtScaledOf(uint256) (src/SablierFlow.sol#642-667)
- SablierFlow._refundableAmountOf(uint256) (src/SablierFlow.sol#670-672)
- SablierFlow._totalDebtOf(uint256) (src/SablierFlow.sol#676-679)
- SablierFlow._uncoveredDebtOf(uint256) (src/SablierFlow.sol#682-692)
- SablierFlow._verifyStreamSenderRecipient(uint256,address,address) (src/SablierFlow.sol#695-703)
- SablierFlow._adjustRatePerSecond(uint256,UD21x18) (src/SablierFlow.sol#710-734)
- SablierFlow._pause(uint256) (src/SablierFlow.sol#846-862)
- SablierFlow._restart(uint256,UD21x18) (src/SablierFlow.sol#905-916)
- SablierFlow._void(uint256) (src/SablierFlow.sol#919-963)
- SablierFlow._withdraw(uint256,address,uint128) (src/SablierFlow.sol#966-1066)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-state-variables
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#204-275) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#242)
- inverse = (3 * denominator) ^ 2 (node_modules/@openzeppelin/contracts/utils/math/Math.sol#257)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#204-275) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#242)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#261)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#204-275) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#242)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#262)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#204-275) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#242)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#263)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#204-275) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#242)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#264)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#204-275) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#242)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#265)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#204-275) performs a multiplication on the result of a division:
- denominator = denominator / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#242)
- inverse *= 2 - denominator * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#266)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#204-275) performs a multiplication on the result of a division:
- low = low / twos (node_modules/@openzeppelin/contracts/utils/math/Math.sol#245)
- result = low * inverse (node_modules/@openzeppelin/contracts/utils/math/Math.sol#272)
Math.invMod(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#315-361) performs a multiplication on the result of a division:
- quotient = gcd / remainder (node_modules/@openzeppelin/contracts/utils/math/Math.sol#337)
- (gcd,remainder) = (remainder,gcd - remainder * quotient) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#339-346)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply
Batch.batch(bytes[]) (node_modules/@sablier/evm-utils/src/Batch.sol#13-34) has external calls inside a loop: (success,result) = address(this).delegatecall(calls[i]) (node_modules/@sablier/evm-utils/src/Batch.sol#18)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop
Reentrancy in Comptrollerable.transferFeesToComptroller() (node_modules/@sablier/evm-utils/src/Comptrollerable.sol#62-74):
External calls:
- (success,None) = address(comptroller).call{value: feeAmount}() (node_modules/@sablier/evm-utils/src/Comptrollerable.sol#66)
Event emitted after the call(s):
- IComptrollerable.TransferFeesToComptroller(comptroller,feeAmount) (node_modules/@sablier/evm-utils/src/Comptrollerable.sol#73)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
SablierFlow.statusOf(uint256) (src/SablierFlow.sol#166-197) uses timestamp for comparisons
Dangerous comparisons:
- _streams[streamId].snapshotTime > block.timestamp (src/SablierFlow.sol#168)
SablierFlow._pause(uint256) (src/SablierFlow.sol#846-862) uses timestamp for comparisons
Dangerous comparisons:
- _streams[streamId].snapshotTime > block.timestamp (src/SablierFlow.sol#848)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
SafeERC20._callOptionalReturn(IERC20,bytes) (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#173-191) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#176-186)
SafeERC20._callOptionalReturnBool(IERC20,bytes) (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#201-211) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#205-209)
ERC721Utils.checkOnERC721Received(address,address,address,uint256,bytes) (node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol#25-49) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol#43-45)
Panic.panic(uint256) (node_modules/@openzeppelin/contracts/utils/Panic.sol#50-56) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Panic.sol#51-55)
Strings.toString(uint256) (node_modules/@openzeppelin/contracts/utils/Strings.sol#45-63) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Strings.sol#50-52)
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Strings.sol#55-57)
Strings.toChecksumHexString(address) (node_modules/@openzeppelin/contracts/utils/Strings.sol#111-129) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Strings.sol#116-118)
Strings.escapeJSON(string) (node_modules/@openzeppelin/contracts/utils/Strings.sol#446-476) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Strings.sol#470-473)
Strings._unsafeReadBytesOffset(bytes,uint256) (node_modules/@openzeppelin/contracts/utils/Strings.sol#484-489) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/Strings.sol#486-488)
Math.add512(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#25-30) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#26-29)
Math.mul512(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#37-46) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#41-45)
Math.tryMul(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#73-84) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#76-80)
Math.tryDiv(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#89-97) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#92-95)
Math.tryMod(uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#102-110) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#105-108)
Math.mulDiv(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#204-275) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#227-234)
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#240-249)
Math.tryModExp(uint256,uint256,uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#409-433) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#411-432)
Math.tryModExp(bytes,bytes,bytes) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#449-471) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#461-470)
Math.log2(uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#612-651) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/Math.sol#648-650)
SafeCast.toUint(bool) (node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol#1157-1161) uses assembly
- INLINE ASM (node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol#1158-1160)
Batch.batch(bytes[]) (node_modules/@sablier/evm-utils/src/Batch.sol#13-34) uses assembly
- INLINE ASM (node_modules/@sablier/evm-utils/src/Batch.sol#22-28)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
3 different versions of Solidity are used:
- Version constraint ^0.8.20 is used by:
-^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/IERC165.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/IERC20.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/IERC4906.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/IERC721.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol#3)
-^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/utils/Context.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/utils/Panic.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/utils/Strings.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/utils/math/Math.sol#4)
-^0.8.20 (node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol#5)
-^0.8.20 (node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol#4)
- Version constraint >=0.8.19 is used by:
->=0.8.19 (node_modules/@prb/math/src/Common.sol#2)
->=0.8.19 (node_modules/@prb/math/src/UD21x18.sol#2)
->=0.8.19 (node_modules/@prb/math/src/sd1x18/Casting.sol#2)
->=0.8.19 (node_modules/@prb/math/src/sd1x18/Constants.sol#2)
->=0.8.19 (node_modules/@prb/math/src/sd1x18/Errors.sol#2)
->=0.8.19 (node_modules/@prb/math/src/sd1x18/ValueType.sol#2)
->=0.8.19 (node_modules/@prb/math/src/sd21x18/Casting.sol#2)
->=0.8.19 (node_modules/@prb/math/src/sd21x18/Constants.sol#2)
->=0.8.19 (node_modules/@prb/math/src/sd21x18/Errors.sol#2)
->=0.8.19 (node_modules/@prb/math/src/sd21x18/ValueType.sol#2)
->=0.8.19 (node_modules/@prb/math/src/sd59x18/Casting.sol#2)
->=0.8.19 (node_modules/@prb/math/src/sd59x18/Constants.sol#2)
->=0.8.19 (node_modules/@prb/math/src/sd59x18/Errors.sol#2)
->=0.8.19 (node_modules/@prb/math/src/sd59x18/Helpers.sol#2)
->=0.8.19 (node_modules/@prb/math/src/sd59x18/Math.sol#2)
->=0.8.19 (node_modules/@prb/math/src/sd59x18/ValueType.sol#2)
->=0.8.19 (node_modules/@prb/math/src/ud21x18/Casting.sol#2)
->=0.8.19 (node_modules/@prb/math/src/ud21x18/Constants.sol#2)
->=0.8.19 (node_modules/@prb/math/src/ud21x18/Errors.sol#2)
->=0.8.19 (node_modules/@prb/math/src/ud21x18/ValueType.sol#2)
->=0.8.19 (node_modules/@prb/math/src/ud2x18/Casting.sol#2)
->=0.8.19 (node_modules/@prb/math/src/ud2x18/Constants.sol#2)
->=0.8.19 (node_modules/@prb/math/src/ud2x18/Errors.sol#2)
->=0.8.19 (node_modules/@prb/math/src/ud2x18/ValueType.sol#2)
->=0.8.19 (node_modules/@prb/math/src/ud60x18/Casting.sol#2)
->=0.8.19 (node_modules/@prb/math/src/ud60x18/Constants.sol#2)
->=0.8.19 (node_modules/@prb/math/src/ud60x18/Errors.sol#2)
->=0.8.19 (node_modules/@prb/math/src/ud60x18/Helpers.sol#2)
->=0.8.19 (node_modules/@prb/math/src/ud60x18/Math.sol#2)
->=0.8.19 (node_modules/@prb/math/src/ud60x18/ValueType.sol#2)
- Version constraint >=0.8.22 is used by:
->=0.8.22 (node_modules/@sablier/evm-utils/src/Batch.sol#3)
->=0.8.22 (node_modules/@sablier/evm-utils/src/Comptrollerable.sol#2)
->=0.8.22 (node_modules/@sablier/evm-utils/src/NoDelegateCall.sol#2)
->=0.8.22 (node_modules/@sablier/evm-utils/src/interfaces/IAdminable.sol#2)
->=0.8.22 (node_modules/@sablier/evm-utils/src/interfaces/IBatch.sol#2)
->=0.8.22 (node_modules/@sablier/evm-utils/src/interfaces/IComptrollerable.sol#2)
->=0.8.22 (node_modules/@sablier/evm-utils/src/interfaces/IRoleAdminable.sol#2)
->=0.8.22 (node_modules/@sablier/evm-utils/src/interfaces/ISablierComptroller.sol#2)
->=0.8.22 (node_modules/@sablier/evm-utils/src/libraries/Errors.sol#2)
->=0.8.22 (src/SablierFlow.sol#2)
->=0.8.22 (src/abstracts/SablierFlowState.sol#2)
->=0.8.22 (src/interfaces/IFlowNFTDescriptor.sol#2)
->=0.8.22 (src/interfaces/ISablierFlow.sol#2)
->=0.8.22 (src/interfaces/ISablierFlowState.sol#2)
->=0.8.22 (src/libraries/Errors.sol#2)
->=0.8.22 (src/libraries/Helpers.sol#2)
->=0.8.22 (src/types/DataTypes.sol#2)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used
exp2(uint256) (node_modules/@prb/math/src/Common.sol#57-295) has a high cyclomatic complexity (73).
log10(SD59x18) (node_modules/@prb/math/src/sd59x18/Math.sol#371-467) has a high cyclomatic complexity (80).
log10(UD60x18) (node_modules/@prb/math/src/ud60x18/Math.sol#270-367) has a high cyclomatic complexity (81).
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#cyclomatic-complexity
SablierFlow._adjustRatePerSecond(uint256,UD21x18) (src/SablierFlow.sol#710-734) is never used and should be removed
SablierFlow._isCallerStreamRecipientOrApproved(uint256,address) (src/SablierFlow.sol#636-638) is never used and should be removed
abs(SD59x18) (node_modules/@prb/math/src/sd59x18/Math.sol#34-40) is never used and should be removed
add(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#8-10) is never used and should be removed
add(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Helpers.sol#8-10) is never used and should be removed
and(SD59x18,int256) (node_modules/@prb/math/src/sd59x18/Helpers.sol#13-15) is never used and should be removed
and(UD60x18,uint256) (node_modules/@prb/math/src/ud60x18/Helpers.sol#13-15) is never used and should be removed
and2(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#18-20) is never used and should be removed
and2(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Helpers.sol#18-20) is never used and should be removed
avg(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Math.sol#51-70) is never used and should be removed
avg(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Math.sol#48-54) is never used and should be removed
ceil(SD59x18) (node_modules/@prb/math/src/sd59x18/Math.sol#83-102) is never used and should be removed
ceil(UD60x18) (node_modules/@prb/math/src/ud60x18/Math.sol#67-83) is never used and should be removed
div(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Math.sol#123-152) is never used and should be removed
div(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Math.sol#99-101) is never used and should be removed
eq(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#23-25) is never used and should be removed
eq(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Helpers.sol#23-25) is never used and should be removed
exp(SD59x18) (node_modules/@prb/math/src/sd59x18/Math.sol#170-189) is never used and should be removed
exp(UD60x18) (node_modules/@prb/math/src/ud60x18/Math.sol#115-128) is never used and should be removed
exp2(SD59x18) (node_modules/@prb/math/src/sd59x18/Math.sol#209-235) is never used and should be removed
exp2(UD60x18) (node_modules/@prb/math/src/ud60x18/Math.sol#141-154) is never used and should be removed
exp2(uint256) (node_modules/@prb/math/src/Common.sol#57-295) is never used and should be removed
floor(SD59x18) (node_modules/@prb/math/src/sd59x18/Math.sol#248-267) is never used and should be removed
floor(UD60x18) (node_modules/@prb/math/src/ud60x18/Math.sol#162-170) is never used and should be removed
frac(SD59x18) (node_modules/@prb/math/src/sd59x18/Math.sol#274-276) is never used and should be removed
frac(UD60x18) (node_modules/@prb/math/src/ud60x18/Math.sol#177-181) is never used and should be removed
gm(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Math.sol#291-315) is never used and should be removed
gm(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Math.sol#192-210) is never used and should be removed
gt(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#28-30) is never used and should be removed
gt(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Helpers.sol#28-30) is never used and should be removed
gte(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#33-35) is never used and should be removed
gte(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Helpers.sol#33-35) is never used and should be removed
intoInt256(SD59x18) (node_modules/@prb/math/src/sd59x18/Casting.sol#19-21) is never used and should be removed
intoSD1x18(SD59x18) (node_modules/@prb/math/src/sd59x18/Casting.sol#27-36) is never used and should be removed
intoSD1x18(UD60x18) (node_modules/@prb/math/src/ud60x18/Casting.sol#21-27) is never used and should be removed
intoSD21x18(SD59x18) (node_modules/@prb/math/src/sd59x18/Casting.sol#42-51) is never used and should be removed
intoSD21x18(UD60x18) (node_modules/@prb/math/src/ud60x18/Casting.sol#32-38) is never used and should be removed
intoSD59x18(SD1x18) (node_modules/@prb/math/src/sd1x18/Casting.sol#12-14) is never used and should be removed
intoSD59x18(SD21x18) (node_modules/@prb/math/src/sd21x18/Casting.sol#12-14) is never used and should be removed
intoSD59x18(UD21x18) (node_modules/@prb/math/src/ud21x18/Casting.sol#12-14) is never used and should be removed
intoSD59x18(UD2x18) (node_modules/@prb/math/src/ud2x18/Casting.sol#12-14) is never used and should be removed
intoSD59x18(UD60x18) (node_modules/@prb/math/src/ud60x18/Casting.sol#65-71) is never used and should be removed
intoUD21x18(SD59x18) (node_modules/@prb/math/src/sd59x18/Casting.sol#72-81) is never used and should be removed
intoUD21x18(UD60x18) (node_modules/@prb/math/src/ud60x18/Casting.sol#54-60) is never used and should be removed
intoUD2x18(SD59x18) (node_modules/@prb/math/src/sd59x18/Casting.sol#57-66) is never used and should be removed
intoUD2x18(UD60x18) (node_modules/@prb/math/src/ud60x18/Casting.sol#43-49) is never used and should be removed
intoUD60x18(SD1x18) (node_modules/@prb/math/src/sd1x18/Casting.sol#19-25) is never used and should be removed
intoUD60x18(SD21x18) (node_modules/@prb/math/src/sd21x18/Casting.sol#19-25) is never used and should be removed
intoUD60x18(SD59x18) (node_modules/@prb/math/src/sd59x18/Casting.sol#86-92) is never used and should be removed
intoUD60x18(UD21x18) (node_modules/@prb/math/src/ud21x18/Casting.sol#18-20) is never used and should be removed
intoUD60x18(UD2x18) (node_modules/@prb/math/src/ud2x18/Casting.sol#18-20) is never used and should be removed
intoUint128(SD1x18) (node_modules/@prb/math/src/sd1x18/Casting.sol#30-36) is never used and should be removed
intoUint128(SD21x18) (node_modules/@prb/math/src/sd21x18/Casting.sol#30-36) is never used and should be removed
intoUint128(SD59x18) (node_modules/@prb/math/src/sd59x18/Casting.sol#109-118) is never used and should be removed
intoUint128(UD21x18) (node_modules/@prb/math/src/ud21x18/Casting.sol#24-26) is never used and should be removed
intoUint128(UD2x18) (node_modules/@prb/math/src/ud2x18/Casting.sol#24-26) is never used and should be removed
intoUint128(UD60x18) (node_modules/@prb/math/src/ud60x18/Casting.sol#82-88) is never used and should be removed
intoUint256(SD1x18) (node_modules/@prb/math/src/sd1x18/Casting.sol#41-47) is never used and should be removed
intoUint256(SD21x18) (node_modules/@prb/math/src/sd21x18/Casting.sol#41-47) is never used and should be removed
intoUint256(SD59x18) (node_modules/@prb/math/src/sd59x18/Casting.sol#97-103) is never used and should be removed
intoUint256(UD21x18) (node_modules/@prb/math/src/ud21x18/Casting.sol#30-32) is never used and should be removed
intoUint256(UD2x18) (node_modules/@prb/math/src/ud2x18/Casting.sol#30-32) is never used and should be removed
intoUint256(UD60x18) (node_modules/@prb/math/src/ud60x18/Casting.sol#75-77) is never used and should be removed
intoUint40(SD1x18) (node_modules/@prb/math/src/sd1x18/Casting.sol#53-62) is never used and should be removed
intoUint40(SD21x18) (node_modules/@prb/math/src/sd21x18/Casting.sol#53-62) is never used and should be removed
intoUint40(SD59x18) (node_modules/@prb/math/src/sd59x18/Casting.sol#124-133) is never used and should be removed
intoUint40(UD21x18) (node_modules/@prb/math/src/ud21x18/Casting.sol#37-43) is never used and should be removed
intoUint40(UD2x18) (node_modules/@prb/math/src/ud2x18/Casting.sol#37-43) is never used and should be removed
intoUint40(UD60x18) (node_modules/@prb/math/src/ud60x18/Casting.sol#93-99) is never used and should be removed
inv(SD59x18) (node_modules/@prb/math/src/sd59x18/Math.sol#328-330) is never used and should be removed
inv(UD60x18) (node_modules/@prb/math/src/ud60x18/Math.sol#223-227) is never used and should be removed
isZero(SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#38-40) is never used and should be removed
isZero(UD60x18) (node_modules/@prb/math/src/ud60x18/Helpers.sol#38-41) is never used and should be removed
ln(SD59x18) (node_modules/@prb/math/src/sd59x18/Math.sol#348-352) is never used and should be removed
ln(UD60x18) (node_modules/@prb/math/src/ud60x18/Math.sol#245-251) is never used and should be removed
log10(SD59x18) (node_modules/@prb/math/src/sd59x18/Math.sol#371-467) is never used and should be removed
log10(UD60x18) (node_modules/@prb/math/src/ud60x18/Math.sol#270-367) is never used and should be removed
log2(SD59x18) (node_modules/@prb/math/src/sd59x18/Math.sol#492-541) is never used and should be removed
log2(UD60x18) (node_modules/@prb/math/src/ud60x18/Math.sol#392-432) is never used and should be removed
lshift(SD59x18,uint256) (node_modules/@prb/math/src/sd59x18/Helpers.sol#43-45) is never used and should be removed
lshift(UD60x18,uint256) (node_modules/@prb/math/src/ud60x18/Helpers.sol#44-46) is never used and should be removed
lt(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#48-50) is never used and should be removed
lt(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Helpers.sol#49-51) is never used and should be removed
lte(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#53-55) is never used and should be removed
lte(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Helpers.sol#54-56) is never used and should be removed
mod(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#58-60) is never used and should be removed
mod(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Helpers.sol#59-61) is never used and should be removed
msb(uint256) (node_modules/@prb/math/src/Common.sol#323-372) is never used and should be removed
mul(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Math.sol#557-586) is never used and should be removed
mul(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Math.sol#449-451) is never used and should be removed
mulDiv(uint256,uint256,uint256) (node_modules/@prb/math/src/Common.sol#390-472) is never used and should be removed
mulDiv18(uint256,uint256) (node_modules/@prb/math/src/Common.sol#498-529) is never used and should be removed
mulDivSigned(int256,int256,int256) (node_modules/@prb/math/src/Common.sol#548-585) is never used and should be removed
neq(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#63-65) is never used and should be removed
neq(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Helpers.sol#64-66) is never used and should be removed
not(SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#68-70) is never used and should be removed
not(UD60x18) (node_modules/@prb/math/src/ud60x18/Helpers.sol#69-71) is never used and should be removed
or(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#73-75) is never used and should be removed
or(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Helpers.sol#74-76) is never used and should be removed
pow(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Math.sol#605-629) is never used and should be removed
pow(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Math.sol#481-513) is never used and should be removed
powu(SD59x18,uint256) (node_modules/@prb/math/src/sd59x18/Math.sol#648-679) is never used and should be removed
powu(UD60x18,uint256) (node_modules/@prb/math/src/ud60x18/Math.sol#531-546) is never used and should be removed
rshift(SD59x18,uint256) (node_modules/@prb/math/src/sd59x18/Helpers.sol#78-80) is never used and should be removed
rshift(UD60x18,uint256) (node_modules/@prb/math/src/ud60x18/Helpers.sol#79-81) is never used and should be removed
sd(int256) (node_modules/@prb/math/src/sd59x18/Casting.sol#136-138) is never used and should be removed
sd1x18(int64) (node_modules/@prb/math/src/sd1x18/Casting.sol#65-67) is never used and should be removed
sd21x18(int128) (node_modules/@prb/math/src/sd21x18/Casting.sol#65-67) is never used and should be removed
sd59x18(int256) (node_modules/@prb/math/src/sd59x18/Casting.sol#141-143) is never used and should be removed
sqrt(SD59x18) (node_modules/@prb/math/src/sd59x18/Math.sol#696-711) is never used and should be removed
sqrt(UD60x18) (node_modules/@prb/math/src/ud60x18/Math.sol#561-572) is never used and should be removed
sqrt(uint256) (node_modules/@prb/math/src/Common.sol#598-675) is never used and should be removed
sub(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#83-85) is never used and should be removed
sub(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Helpers.sol#84-86) is never used and should be removed
ud(uint256) (node_modules/@prb/math/src/ud60x18/Casting.sol#102-104) is never used and should be removed
ud21x18(uint128) (node_modules/@prb/math/src/ud21x18/Casting.sol#46-48) is never used and should be removed
ud2x18(uint64) (node_modules/@prb/math/src/ud2x18/Casting.sol#46-48) is never used and should be removed
ud60x18(uint256) (node_modules/@prb/math/src/ud60x18/Casting.sol#107-109) is never used and should be removed
unary(SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#88-90) is never used and should be removed
uncheckedAdd(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#93-97) is never used and should be removed
uncheckedAdd(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Helpers.sol#89-93) is never used and should be removed
uncheckedSub(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#100-104) is never used and should be removed
uncheckedSub(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Helpers.sol#96-100) is never used and should be removed
uncheckedUnary(SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#107-111) is never used and should be removed
unwrap(SD1x18) (node_modules/@prb/math/src/sd1x18/Casting.sol#70-72) is never used and should be removed
unwrap(SD21x18) (node_modules/@prb/math/src/sd21x18/Casting.sol#70-72) is never used and should be removed
unwrap(SD59x18) (node_modules/@prb/math/src/sd59x18/Casting.sol#146-148) is never used and should be removed
unwrap(UD2x18) (node_modules/@prb/math/src/ud2x18/Casting.sol#51-53) is never used and should be removed
unwrap(UD60x18) (node_modules/@prb/math/src/ud60x18/Casting.sol#112-114) is never used and should be removed
wrap(int128) (node_modules/@prb/math/src/sd21x18/Casting.sol#75-77) is never used and should be removed
wrap(int256) (node_modules/@prb/math/src/sd59x18/Casting.sol#151-153) is never used and should be removed
wrap(int64) (node_modules/@prb/math/src/sd1x18/Casting.sol#75-77) is never used and should be removed
wrap(uint128) (node_modules/@prb/math/src/ud21x18/Casting.sol#56-58) is never used and should be removed
wrap(uint256) (node_modules/@prb/math/src/ud60x18/Casting.sol#117-119) is never used and should be removed
wrap(uint64) (node_modules/@prb/math/src/ud2x18/Casting.sol#56-58) is never used and should be removed
xor(SD59x18,SD59x18) (node_modules/@prb/math/src/sd59x18/Helpers.sol#114-116) is never used and should be removed
xor(UD60x18,UD60x18) (node_modules/@prb/math/src/ud60x18/Helpers.sol#103-105) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
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/interfaces/IERC1363.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/IERC165.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/IERC20.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/IERC4906.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/IERC721.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol#3)
- ^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/Context.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/Panic.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/Strings.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/math/Math.sol#4)
- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol#5)
- ^0.8.20 (node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol#4)
Version constraint >=0.8.19 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- VerbatimInvalidDeduplication
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess.
It is used by:
- >=0.8.19 (node_modules/@prb/math/src/Common.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/UD21x18.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/sd1x18/Casting.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/sd1x18/Constants.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/sd1x18/Errors.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/sd1x18/ValueType.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/sd21x18/Casting.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/sd21x18/Constants.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/sd21x18/Errors.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/sd21x18/ValueType.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/sd59x18/Casting.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/sd59x18/Constants.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/sd59x18/Errors.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/sd59x18/Helpers.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/sd59x18/Math.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/sd59x18/ValueType.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/ud21x18/Casting.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/ud21x18/Constants.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/ud21x18/Errors.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/ud21x18/ValueType.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/ud2x18/Casting.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/ud2x18/Constants.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/ud2x18/Errors.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/ud2x18/ValueType.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/ud60x18/Casting.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/ud60x18/Constants.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/ud60x18/Errors.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/ud60x18/Helpers.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/ud60x18/Math.sol#2)
- >=0.8.19 (node_modules/@prb/math/src/ud60x18/ValueType.sol#2)
Version constraint >=0.8.22 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- VerbatimInvalidDeduplication.
It is used by:
- >=0.8.22 (node_modules/@sablier/evm-utils/src/Batch.sol#3)
- >=0.8.22 (node_modules/@sablier/evm-utils/src/Comptrollerable.sol#2)
- >=0.8.22 (node_modules/@sablier/evm-utils/src/NoDelegateCall.sol#2)
- >=0.8.22 (node_modules/@sablier/evm-utils/src/interfaces/IAdminable.sol#2)
- >=0.8.22 (node_modules/@sablier/evm-utils/src/interfaces/IBatch.sol#2)
- >=0.8.22 (node_modules/@sablier/evm-utils/src/interfaces/IComptrollerable.sol#2)
- >=0.8.22 (node_modules/@sablier/evm-utils/src/interfaces/IRoleAdminable.sol#2)
- >=0.8.22 (node_modules/@sablier/evm-utils/src/interfaces/ISablierComptroller.sol#2)
- >=0.8.22 (node_modules/@sablier/evm-utils/src/libraries/Errors.sol#2)
- >=0.8.22 (src/SablierFlow.sol#2)
- >=0.8.22 (src/abstracts/SablierFlowState.sol#2)
- >=0.8.22 (src/interfaces/IFlowNFTDescriptor.sol#2)
- >=0.8.22 (src/interfaces/ISablierFlow.sol#2)
- >=0.8.22 (src/interfaces/ISablierFlowState.sol#2)
- >=0.8.22 (src/libraries/Errors.sol#2)
- >=0.8.22 (src/libraries/Helpers.sol#2)
- >=0.8.22 (src/types/DataTypes.sol#2)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity
Low level call in Batch.batch(bytes[]) (node_modules/@sablier/evm-utils/src/Batch.sol#13-34):
- (success,result) = address(this).delegatecall(calls[i]) (node_modules/@sablier/evm-utils/src/Batch.sol#18)
Low level call in Comptrollerable.transferFeesToComptroller() (node_modules/@sablier/evm-utils/src/Comptrollerable.sol#62-74):
- (success,None) = address(comptroller).call{value: feeAmount}() (node_modules/@sablier/evm-utils/src/Comptrollerable.sol#66)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
Variable NoDelegateCall.ORIGINAL (node_modules/@sablier/evm-utils/src/NoDelegateCall.sol#14) is not in mixedCase
Function IRoleAdminable.FEE_COLLECTOR_ROLE() (node_modules/@sablier/evm-utils/src/interfaces/IRoleAdminable.sol#31) is not in mixedCase
Function IRoleAdminable.FEE_MANAGEMENT_ROLE() (node_modules/@sablier/evm-utils/src/interfaces/IRoleAdminable.sol#34) is not in mixedCase
Function ISablierComptroller.MAX_FEE_USD() (node_modules/@sablier/evm-utils/src/interfaces/ISablierComptroller.sol#73) is not in mixedCase
Function ISablierComptroller.MINIMAL_INTERFACE_ID() (node_modules/@sablier/evm-utils/src/interfaces/ISablierComptroller.sol#81) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
Redundant expression "success (node_modules/@sablier/evm-utils/src/Comptrollerable.sol#70)" inComptrollerable (node_modules/@sablier/evm-utils/src/Comptrollerable.sol#10-114)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements
Math.log2(uint256) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#612-651) uses literals with too many digits:
- r = r | byte(uint256,uint256)(x >> r,0x0000010102020202030303030303030300000000000000000000000000000000) (node_modules/@openzeppelin/contracts/utils/math/Math.sol#649)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#too-many-digits
SablierFlow (src/SablierFlow.sol#27-1067) does not implement functions:
- ISablierFlowState.aggregateAmount(IERC20) (src/interfaces/ISablierFlowState.sol#22)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unimplemented-functions
SablierFlowState.nativeToken (src/abstracts/SablierFlowState.sol#23) should be constant
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-constant
SablierFlowState.nextStreamId (src/abstracts/SablierFlowState.sol#26) should be immutable
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-immutable
. analyzed (39 contracts with 100 detectors), 193 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.8.22",
"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.22",
"install_stderr": null,
"install_stdout": "Version '0.8.22' is already installed, skipping..."
},
"solc_args": "--base-path /tmp/slither-xhisbld2 --include-path /tmp/slither-xhisbld2/lib --include-path /tmp/slither-xhisbld2/lib/openzeppelin-contracts --include-path /tmp/slither-xhisbld2/node_modules --allow-paths /tmp/slither-xhisbld2,/tmp/slither-xhisbld2/lib,/tmp/slither-xhisbld2/lib/openzeppelin-contracts,/tmp/slither-xhisbld2/node_modules,/tmp/slither-xhisbld2/src",
"remappings": [
"@arbitrum/=node_modules/@arbitrum/",
"@chainlink/=node_modules/@chainlink/",
"@eth-optimism/=node_modules/@eth-optimism/",
"@offchainlabs/=node_modules/@offchainlabs/",
"@openzeppelin/=node_modules/@openzeppelin/",
"@prb/=node_modules/@prb/",
"@sablier/=node_modules/@sablier/",
"@scroll-tech/=node_modules/@scroll-tech/",
"@zksync/=node_modules/@zksync/",
"forge-std/=node_modules/forge-std/",
"solady/=node_modules/solady/",
"src/=src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/"
],
"source_files": [
"src/SablierFlow.sol",
"node_modules/@openzeppelin/contracts/interfaces/IERC4906.sol",
"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol",
"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol",
"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol",
"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol",
"node_modules/@prb/math/src/UD21x18.sol",
"node_modules/@sablier/evm-utils/src/Batch.sol",
"node_modules/@sablier/evm-utils/src/Comptrollerable.sol",
"node_modules/@sablier/evm-utils/src/interfaces/ISablierComptroller.sol",
"node_modules/@sablier/evm-utils/src/NoDelegateCall.sol",
"src/abstracts/SablierFlowState.sol",
"src/interfaces/IFlowNFTDescriptor.sol",
"src/interfaces/ISablierFlow.sol",
"src/libraries/Errors.sol",
"src/libraries/Helpers.sol",
"src/types/DataTypes.sol",
"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol",
"node_modules/@openzeppelin/contracts/interfaces/IERC721.sol",
"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol",
"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol",
"node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol",
"node_modules/@openzeppelin/contracts/utils/Context.sol",
"node_modules/@openzeppelin/contracts/utils/Strings.sol",
"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol",
"node_modules/@prb/math/src/ud21x18/Casting.sol",
"node_modules/@prb/math/src/ud21x18/Constants.sol",
"node_modules/@prb/math/src/ud21x18/Errors.sol",
"node_modules/@prb/math/src/ud21x18/ValueType.sol",
"node_modules/@sablier/evm-utils/src/interfaces/IBatch.sol",
"node_modules/@sablier/evm-utils/src/interfaces/IComptrollerable.sol",
"node_modules/@sablier/evm-utils/src/libraries/Errors.sol",
"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol",
"node_modules/@sablier/evm-utils/src/interfaces/IRoleAdminable.sol",
"src/interfaces/ISablierFlowState.sol",
"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol",
"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol",
"node_modules/@openzeppelin/contracts/utils/math/Math.sol",
"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol",
"node_modules/@prb/math/src/Common.sol",
"node_modules/@prb/math/src/sd59x18/ValueType.sol",
"node_modules/@prb/math/src/ud60x18/ValueType.sol",
"node_modules/@sablier/evm-utils/src/interfaces/IAdminable.sol",
"node_modules/@openzeppelin/contracts/utils/Panic.sol",
"node_modules/@prb/math/src/sd59x18/Casting.sol",
"node_modules/@prb/math/src/sd59x18/Helpers.sol",
"node_modules/@prb/math/src/sd59x18/Math.sol",
"node_modules/@prb/math/src/ud60x18/Casting.sol",
"node_modules/@prb/math/src/ud60x18/Helpers.sol",
"node_modules/@prb/math/src/ud60x18/Math.sol",
"node_modules/@prb/math/src/sd59x18/Errors.sol",
"node_modules/@prb/math/src/sd1x18/Constants.sol",
"node_modules/@prb/math/src/sd1x18/ValueType.sol",
"node_modules/@prb/math/src/sd21x18/Constants.sol",
"node_modules/@prb/math/src/sd21x18/ValueType.sol",
"node_modules/@prb/math/src/ud2x18/Constants.sol",
"node_modules/@prb/math/src/ud2x18/ValueType.sol",
"node_modules/@prb/math/src/sd59x18/Constants.sol",
"node_modules/@prb/math/src/ud60x18/Errors.sol",
"node_modules/@prb/math/src/ud60x18/Constants.sol",
"node_modules/@prb/math/src/sd1x18/Casting.sol",
"node_modules/@prb/math/src/sd21x18/Casting.sol",
"node_modules/@prb/math/src/ud2x18/Casting.sol",
"node_modules/@prb/math/src/sd1x18/Errors.sol",
"node_modules/@prb/math/src/sd21x18/Errors.sol",
"node_modules/@prb/math/src/ud2x18/Errors.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 193,
"workspace_hash": "5b9d19514600267865380366f4f01f7af3ee5d4db4d492e3e4c8aa54857c9a53",
"duration_seconds": 4.617359161376953,
"solc_version_requested": "0.8.29"
}
{"no_findings":true,"summary":"No exploitable vulnerabilities found in the first‑party SablierFlow contracts within scope; assessment assumes standard ERC‑20 behavior and a trusted comptroller implementation.","findings":[]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-dyk2dcm3
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019be477-80dc-7d61-8686-27399e53ac47
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
thinking
**Reading bundle file**
exec
/bin/bash -lc ls in /tmp/codex-dyk2dcm3 succeeded in 6ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
node_modules
src
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-dyk2dcm3 succeeded in 16ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: src/SablierFlow.sol
================================================================================
// SPDX-License-Identifier: BUSL-1.1
pragma solidity >=0.8.22;
import { IERC4906 } from "@openzeppelin/contracts/interfaces/IERC4906.sol";
import { IERC20Metadata } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import { ERC721 } from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import { IERC721Metadata } from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";
import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol";
import { ud21x18, UD21x18 } from "@prb/math/src/UD21x18.sol";
import { Batch } from "@sablier/evm-utils/src/Batch.sol";
import { Comptrollerable } from "@sablier/evm-utils/src/Comptrollerable.sol";
thinking
**Noticing audit bundle output is truncated**
The audit bundle output cuts off after 2097 lines, stopping midway through a large file with an internal truncation note indicating token limits; this means the full content isn't loaded yet and requires accessing the complete file another way.
thinking
**Noting suspicious truncation marker in file**
The unexpected truncation string appears inside the file content, likely inserted by the tool or dataset rather than original code, so the full audit bundle file still needs to be fully read or parsed to confirm completeness before moving on to workspace searches.
exec
/bin/bash -lc 'rg --files src' in /tmp/codex-dyk2dcm3 succeeded in 9ms:
src/interfaces/ISablierFlow.sol
src/interfaces/IFlowNFTDescriptor.sol
src/interfaces/ISablierFlowState.sol
src/SablierFlow.sol
src/abstracts/SablierFlowState.sol
src/libraries/Helpers.sol
src/libraries/Errors.sol
src/types/DataTypes.sol
thinking
**Inspecting core flow-related interfaces**
I'm opening the files defining SablierFlowState, IFlowNFTDescriptor, and ISablierFlow to understand their structure and interactions, focusing on these interfaces will clarify the flow logic and NFT descriptor relationships.
exec
/bin/bash -lc "sed -n '1,220p' src/abstracts/SablierFlowState.sol" in /tmp/codex-dyk2dcm3 succeeded in 12ms:
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity >=0.8.22;
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import { UD21x18 } from "@prb/math/src/UD21x18.sol";
import { IFlowNFTDescriptor } from "./../interfaces/IFlowNFTDescriptor.sol";
import { ISablierFlowState } from "./../interfaces/ISablierFlowState.sol";
import { Errors } from "./../libraries/Errors.sol";
import { Flow } from "./../types/DataTypes.sol";
/// @title SablierFlowState
/// @notice See the documentation in {ISablierFlowState}.
abstract contract SablierFlowState is ISablierFlowState {
/*//////////////////////////////////////////////////////////////////////////
STATE VARIABLES
//////////////////////////////////////////////////////////////////////////*/
/// @inheritdoc ISablierFlowState
mapping(IERC20 token => uint256 amount) public override aggregateAmount;
thinking
**Preparing to review full SablierFlow.sol**
I'll gather the entire SablierFlow.sol code to enable thorough inspection of its functions for vulnerabilities.
exec
/bin/bash -lc "sed -n '1,260p' src/SablierFlow.sol" in /tmp/codex-dyk2dcm3 succeeded in 7ms:
// SPDX-License-Identifier: BUSL-1.1
pragma solidity >=0.8.22;
import { IERC4906 } from "@openzeppelin/contracts/interfaces/IERC4906.sol";
import { IERC20Metadata } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import { ERC721 } from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import { IERC721Metadata } from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";
import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol";
import { ud21x18, UD21x18 } from "@prb/math/src/UD21x18.sol";
import { Batch } from "@sablier/evm-utils/src/Batch.sol";
import { Comptrollerable } from "@sablier/evm-utils/src/Comptrollerable.sol";
import { ISablierComptroller } from "@sablier/evm-utils/src/interfaces/ISablierComptroller.sol";
import { NoDelegateCall } from "@sablier/evm-utils/src/NoDelegateCall.sol";
import { SablierFlowState } from "./abstracts/SablierFlowState.sol";
import { IFlowNFTDescriptor } from "./interfaces/IFlowNFTDescriptor.sol";
import { ISablierFlow } from "./interfaces/ISablierFlow.sol";
thinking
**Continuing examination of SablierFlow internals**
exec
/bin/bash -lc "sed -n '260,520p' src/SablierFlow.sol" in /tmp/codex-dyk2dcm3 succeeded in 7ms:
});
}
/// @inheritdoc ISablierFlow
function create(
address sender,
address recipient,
UD21x18 ratePerSecond,
uint40 startTime,
IERC20 token,
bool transferable
)
external
payable
override
noDelegateCall
returns (uint256 streamId)
{
// Checks, Effects, and Interactions: create the stream.
streamId = _create(sender, recipient, ratePerSecond, startTime, token, transferable);
exec
/bin/bash -lc "sed -n '520,1040p' src/SablierFlow.sol" in /tmp/codex-dyk2dcm3 succeeded in 6ms:
/// @inheritdoc ISablierFlow
function transferTokens(IERC20 token, address to, uint128 amount) external payable {
// Interaction: transfer the amount.
token.safeTransferFrom({ from: msg.sender, to: to, value: amount });
}
/// @inheritdoc ISablierFlow
function void(uint256 streamId)
external
payable
override
noDelegateCall
notNull(streamId)
notVoided(streamId)
updateMetadata(streamId)
{
// Checks, Effects, and Interactions: void the stream.
_void(streamId);
}
exec
/bin/bash -lc "sed -n '1040,1560p' src/SablierFlow.sol" in /tmp/codex-dyk2dcm3 succeeded in 6ms:
// Effect: update the stream balance.
_streams[streamId].balance -= amount;
}
// Load the variables in memory.
IERC20 token = _streams[streamId].token;
unchecked {
// Effect: update the aggregate amount.
aggregateAmount[token] -= amount;
}
// Interaction: perform the ERC-20 transfer.
token.safeTransfer({ to: to, value: amount });
// Protocol Invariant: the difference in total debt should be equal to the difference in the stream balance.
assert(totalDebt - _totalDebtOf(streamId) == balance - _streams[streamId].balance);
// Log the withdrawal.
emit ISablierFlow.WithdrawFromFlowStream({
thinking
**Finishing core flow and opening interface files**
exec
/bin/bash -lc "sed -n '1,260p' src/interfaces/ISablierFlow.sol" in /tmp/codex-dyk2dcm3 succeeded in 5ms:
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity >=0.8.22;
import { IERC4906 } from "@openzeppelin/contracts/interfaces/IERC4906.sol";
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import { IERC721Metadata } from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";
import { UD21x18 } from "@prb/math/src/UD21x18.sol";
import { IBatch } from "@sablier/evm-utils/src/interfaces/IBatch.sol";
import { IComptrollerable } from "@sablier/evm-utils/src/interfaces/IComptrollerable.sol";
import { ISablierComptroller } from "@sablier/evm-utils/src/interfaces/ISablierComptroller.sol";
import { Flow } from "../types/DataTypes.sol";
import { IFlowNFTDescriptor } from "./IFlowNFTDescriptor.sol";
import { ISablierFlowState } from "./ISablierFlowState.sol";
/// @title ISablierFlow
/// @notice Creates and manages Flow streams with linear streaming functions.
interface ISablierFlow is
IBatch, // 0 inherited components
IComptrollerable, // 0 inherited components
thinking
**Inspecting NFT descriptor interface**
exec
/bin/bash -lc "sed -n '1,200p' src/interfaces/IFlowNFTDescriptor.sol" in /tmp/codex-dyk2dcm3 succeeded in 12ms:
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity >=0.8.22;
import { IERC721Metadata } from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";
/// @title IFlowNFTDescriptor
/// @notice This contract generates the URI describing the Sablier Flow stream NFTs.
interface IFlowNFTDescriptor {
/// @notice Produces the URI describing a particular stream NFT.
///
/// @dev Currently it returns the Sablier logo as an SVG. In the future, it will return an NFT SVG.
///
/// @param sablierFlow The address of the Sablier Flow the stream was created in.
/// @param streamId The ID of the stream for which to produce a description.
///
/// @return uri The URI of the ERC721-compliant metadata.
function tokenURI(IERC721Metadata sablierFlow, uint256 streamId) external view returns (string memory uri);
}
thinking
**Auditing external calls for reentrancy**
Noticed external ERC20 calls happen after state updates without a reentrancy guard; this order likely prevents classic reentrancy, but ERC777-style reentrant callbacks could still pose nuanced risks. Need to verify if state and invariants like aggregateAmount fully prevent exploit during such callbacks.
thinking
**Identifying nuanced reentrancy and fee-on-transfer token risks**
Confirmed state updates precede external calls, mitigating classic reentrancy, but complex scenarios with ERC777 tokens or malicious comptroller calls could allow subtle reentrancy paths if minFee is zero or approvals exist. Fee-on-transfer tokens cause accounting mismatches that may block withdrawals or recoveries, posing a medium-risk invariant break rather than direct exploit.
thinking
**Confirming no critical findings**
Detailed review found no exploitable vulnerabilities; reentrancy paths are mitigated by state updates before external calls, and access controls align with expected design. Noted fee-on-transfer tokens can disrupt accounting but this is a known integration limitation rather than a vulnerability.
codex
{"no_findings":true,"summary":"No exploitable vulnerabilities found in the first‑party SablierFlow contracts within scope; assessment assumes standard ERC‑20 behavior and a trusted comptroller implementation.","findings":[]}
tokens used
36,169
{
"codex": {
"ran_at": "2026-01-22T06:53:19.982294+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 70,
"import_count": 79,
"first_party_contracts_count": 8
},
"summary": "No exploitable vulnerabilities found in the first\u2011party SablierFlow contracts within scope; assessment assumes standard ERC\u201120 behavior and a trusted comptroller implementation.",
"raw_final": {
"summary": "No exploitable vulnerabilities found in the first\u2011party SablierFlow contracts within scope; assessment assumes standard ERC\u201120 behavior and a trusted comptroller implementation.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: ISZERO 0000000a: PUSH2 0x0011 0000000d: JUMPI 0000000e: PUSH0 0000000f: DUP1 00000010: REVERT 00000011: JUMPDEST 00000012: PUSH0 00000013: CALLDATALOAD 00000014: PUSH1 0xe0 00000016: SHR 00000017: DUP1 00000018: PUSH4 0x01ffc9a7 0000001d: EQ 0000001e: PUSH2 0x03cf 00000021: JUMPI 00000022: DUP1 00000023: PUSH4 0x06fdde03 00000028: EQ 00000029: PUSH2 0x03ca 0000002c: JUMPI 0000002d: DUP1 0000002e: PUSH4 0x081812fc 00000033: EQ 00000034: PUSH2 0x03c5 00000037: JUMPI 00000038: DUP1 00000039: PUSH4 0x08b87923 0000003e: EQ 0000003f: PUSH2 0x03c0 00000042: JUMPI 00000043: DUP1 00000044: PUSH4 0x095ea7b3 00000049: EQ 0000004a: PUSH2 0x03bb 0000004d: JUMPI 0000004e: DUP1 0000004f: PUSH4 0x0c699624 00000054: EQ 00000055: PUSH2 0x03b6 00000058: JUMPI 00000059: DUP1 0000005a: PUSH4 0x136439dd 0000005f: EQ 00000060: PUSH2 0x03b1 00000063: JUMPI 00000064: DUP1 00000065: PUSH4 0x1400ecec 0000006a: EQ 0000006b: PUSH2 0x03ac 0000006e: JUMPI 0000006f: DUP1 00000070: PUSH4 0x1e010439 00000075: EQ 00000076: PUSH2 0x03a7 00000079: JUMPI 0000007a: DUP1 0000007b: PUSH4 0x1e897afb 00000080: EQ 00000081: PUSH2 0x03a2 00000084: JUMPI 00000085: DUP1 00000086: PUSH4 0x1e99d569 0000008b: EQ 0000008c: PUSH2 0x039d 0000008f: JUMPI 00000090: DUP1 00000091: PUSH4 0x1f0cce58 00000096: EQ 00000097: PUSH2 0x0398 0000009a: JUMPI 0000009b: DUP1 0000009c: PUSH4 0x23b872dd 000000a1: EQ 000000a2: PUSH2 0x0393 000000a5: JUMPI 000000a6: DUP1 000000a7: PUSH4 0x28f8b77d 000000ac: EQ 000000ad: PUSH2 0x038e 000000b0: JUMPI 000000b1: DUP1 000000b2: PUSH4 0x36af277f 000000b7: EQ 000000b8: PUSH2 0x0389 000000bb: JUMPI 000000bc: DUP1 000000bd: PUSH4 0x379d871a 000000c2: EQ 000000c3: PUSH2 0x0384 000000c6: JUMPI 000000c7: DUP1 000000c8: PUSH4 0x42842e0e 000000cd: EQ 000000ce: PUSH2 0x037f 000000d1: JUMPI 000000d2: DUP1 000000d3: PUSH4 0x42e3e23d 000000d8: EQ 000000d9: PUSH2 0x02d5 000000dc: JUMPI 000000dd: DUP1 000000de: PUSH4 0x44267570 000000e3: EQ 000000e4: PUSH2 0x037a 000000e7: JUMPI 000000e8: DUP1 000000e9: PUSH4 0x450ac908 000000ee: EQ 000000ef: PUSH2 0x0375 000000f2: JUMPI 000000f3: DUP1 000000f4: PUSH4 0x569f4c59 000000f9: EQ 000000fa: PUSH2 0x0370 000000fd: JUMPI 000000fe: DUP1 000000ff: PUSH4 0x5ea2145b 00000104: EQ 00000105: PUSH2 0x036b 00000108: JUMPI 00000109: DUP1 0000010a: PUSH4 0x5f2a0beb 0000010f: EQ 00000110: PUSH2 0x0366 00000113: JUMPI 00000114: DUP1 00000115: PUSH4 0x5fe3b567 0000011a: EQ 0000011b: PUSH2 0x0361 0000011e: JUMPI 0000011f: DUP1 00000120: PUSH4 0x6352211e 00000125: EQ 00000126: PUSH2 0x035c 00000129: JUMPI 0000012a: DUP1 0000012b: PUSH4 0x648bf774 00000130: EQ 00000131: PUSH2 0x0357 00000134: JUMPI 00000135: DUP1 00000136: PUSH4 0x6d0cee75 0000013b: EQ 0000013c: PUSH2 0x0352 0000013f: JUMPI 00000140: DUP1 00000141: PUSH4 0x6da1e102 00000146: EQ 00000147: PUSH2 0x034d 0000014a: JUMPI 0000014b: DUP1 0000014c: PUSH4 0x70a08231 00000151: EQ 00000152: PUSH2 0x0348 00000155: JUMPI 00000156: DUP1 00000157: PUSH4 0x78f82ce7 0000015c: EQ 0000015d: PUSH2 0x0343 00000160: JUMPI 00000161: DUP1 00000162: PUSH4 0x7cad6cd1 00000167: EQ 00000168: PUSH2 0x033e 0000016b: JUMPI 0000016c: DUP1 0000016d: PUSH4 0x7ddf9228 00000172: EQ 00000173: PUSH2 0x0339 00000176: JUMPI 00000177: DUP1 00000178: PUSH4 0x80448da3 0000017d: EQ 0000017e: PUSH2 0x0334 00000181: JUMPI 00000182: DUP1 00000183: PUSH4 0x81632a86 00000188: EQ 00000189: PUSH2 0x032f 0000018c: JUMPI 0000018d: DUP1 0000018e: PUSH4 0x894e9a0d 00000193: EQ 00000194: PUSH2 0x032a 00000197: JUMPI 00000198: DUP1 00000199: PUSH4 0x8bad38dd 0000019e: EQ 0000019f: PUSH2 0x0325 000001a2: JUMPI 000001a3: DUP1 000001a4: PUSH4 0x95d89b41 000001a9: EQ 000001aa: PUSH2 0x0320 000001ad: JUMPI 000001ae: DUP1 000001af: PUSH4 0xa22cb465 000001b4: EQ 000001b5: PUSH2 0x031b 000001b8: JUMPI 000001b9: DUP1 000001ba: PUSH4 0xa7de07cd 000001bf: EQ 000001c0: PUSH2 0x0316 000001c3: JUMPI 000001c4: DUP1 000001c5: PUSH4 0xa8a482a6 000001ca: EQ 000001cb: PUSH2 0x0311 000001ce: JUMPI 000001cf: DUP1 000001d0: PUSH4 0xad35efd4 000001d5: EQ 000001d6: PUSH2 0x030c 000001d9: JUMPI 000001da: DUP1 000001db: PUSH4 0xb2564569 000001e0: EQ 000001e1: PUSH2 0x0307 000001e4: JUMPI 000001e5: DUP1 000001e6: PUSH4 0xb61f7583 000001eb: EQ 000001ec: PUSH2 0x0302 000001ef: JUMPI 000001f0: DUP1 000001f1: PUSH4 0xb88d4fde 000001f6: EQ 000001f7: PUSH2 0x02fd 000001fa: JUMPI 000001fb: DUP1 000001fc: PUSH4 0xb8a3be66 00000201: EQ 00000202: PUSH2 0x02f8 00000205: JUMPI 00000206: DUP1 00000207: PUSH4 0xb971302a 0000020c: EQ 0000020d: PUSH2 0x02f3 00000210: JUMPI 00000211: DUP1 00000212: PUSH4 0xbc7a2d6c 00000217: EQ 00000218: PUSH2 0x02ee 0000021b: JUMPI 0000021c: DUP1 0000021d: PUSH4 0xbcbd019e 00000222: EQ 00000223: PUSH2 0x02e9 00000226: JUMPI 00000227: DUP1 00000228: PUSH4 0xc87b56dd 0000022d: EQ 0000022e: PUSH2 0x02e4 00000231: JUMPI 00000232: DUP1 00000233: PUSH4 0xcca138e5 00000238: EQ 00000239: PUSH2 0x02df 0000023c: JUMPI 0000023d: DUP1 0000023e: PUSH4 0xd4b80884 00000243: EQ 00000244: PUSH2 0x02da 00000247: JUMPI 00000248: DUP1 00000249: PUSH4 0xd975dfed 0000024e: EQ 0000024f: PUSH2 0x02d5 00000252: JUMPI 00000253: DUP1 00000254: PUSH4 0xe1758bd8 00000259: EQ 0000025a: PUSH2 0x02d0 0000025d: JUMPI 0000025e: DUP1 0000025f: PUSH4 0xe4b50cb8 00000264: EQ 00000265: PUSH2 0x02cb 00000268: JUMPI 00000269: DUP1 0000026a: PUSH4 0xe985e9c5 0000026f: EQ 00000270: PUSH2 0x02c6 00000273: JUMPI 00000274: DUP1 00000275: PUSH4 0xea5ead19 0000027a: EQ 0000027b: PUSH2 0x02c1 0000027e: JUMPI 0000027f: DUP1 00000280: PUSH4 0xeb5710d8 00000285: EQ 00000286: PUSH2 0x02bc 00000289: JUMPI 0000028a: DUP1 0000028b: PUSH4 0xebb6f79a 00000290: EQ 00000291: PUSH2 0x02b7 00000294: JUMPI 00000295: DUP1 00000296: PUSH4 0xec01da3b 0000029b: EQ 0000029c: PUSH2 0x02b2 0000029f: JUMPI 000002a0: PUSH4 0xfdd46d60 000002a5: EQ 000002a6: PUSH2 0x02ad 000002a9: JUMPI 000002aa: PUSH0 000002ab: DUP1 000002ac: REVERT 000002ad: JUMPDEST 000002ae: PUSH2 0x3591 000002b1: JUMP 000002b2: JUMPDEST 000002b3: PUSH2 0x352a 000002b6: JUMP 000002b7: JUMPDEST 000002b8: PUSH2 0x3440 000002bb: JUMP 000002bc: JUMPDEST 000002bd: PUSH2 0x33e2 000002c0: JUMP 000002c1: JUMPDEST 000002c2: PUSH2 0x333f 000002c5: JUMP 000002c6: JUMPDEST 000002c7: PUSH2 0x32a1 000002ca: JUMP 000002cb: JUMPDEST 000002cc: PUSH2 0x3237 000002cf: JUMP 000002d0: JUMPDEST 000002d1: PUSH2 0x31e6 000002d4: JUMP 000002d5: JUMPDEST 000002d6: PUSH2 0x11ff 000002d9: JUMP 000002da: JUMPDEST 000002db: PUSH2 0x3182 000002de: JUMP 000002df: JUMPDEST 000002e0: PUSH2 0x3067 000002e3: JUMP 000002e4: JUMPDEST 000002e5: PUSH2 0x2f3d 000002e8: JUMP 000002e9: JUMPDEST 000002ea: PUSH2 0x2e84 000002ed: JUMP 000002ee: JUMPDEST 000002ef: PUSH2 0x2e3f 000002f2: JUMP 000002f3: JUMPDEST 000002f4: PUSH2 0x2dd5 000002f7: JUMP 000002f8: JUMPDEST 000002f9: PUSH2 0x2d82 000002fc: JUMP 000002fd: JUMPDEST 000002fe: PUSH2 0x2cd4 00000301: JUMP 00000302: JUMPDEST 00000303: PUSH2 0x29d7 00000306: JUMP 00000307: JUMPDEST 00000308: PUSH2 0x297b 0000030b: JUMP 0000030c: JUMPDEST 0000030d: PUSH2 0x28f8 00000310: JUMP 00000311: JUMPDEST 00000312: PUSH2 0x2798 00000315: JUMP 00000316: JUMPDEST 00000317: PUSH2 0x273e 0000031a: JUMP 0000031b: JUMPDEST 0000031c: PUSH2 0x2614 0000031f: JUMP 00000320: JUMPDEST 00000321: PUSH2 0x2541 00000324: JUMP 00000325: JUMPDEST 00000326: PUSH2 0x22c4 00000329: JUMP 0000032a: JUMPDEST 0000032b: PUSH2 0x200a 0000032e: JUMP 0000032f: JUMPDEST 00000330: PUSH2 0x1f66 00000333: JUMP 00000334: JUMPDEST 00000335: PUSH2 0x1efa 00000338: JUMP 00000339: JUMPDEST 0000033a: PUSH2 0x1eb5 0000033d: JUMP 0000033e: JUMPDEST 0000033f: PUSH2 0x1d8b 00000342: JUMP 00000343: JUMPDEST 00000344: PUSH2 0x1cee 00000347: JUMP 00000348: JUMPDEST 00000349: PUSH2 0x1c55 0000034c: JUMP 0000034d: JUMPDEST 0000034e: PUSH2 0x1aba 00000351: JUMP 00000352: JUMPDEST 00000353: PUSH2 0x1a75 00000356: JUMP 00000357: JUMPDEST 00000358: PUSH2 0x1887 0000035b: JUMP 0000035c: JUMPDEST 0000035d: PUSH2 0x182d 00000360: JUMP 00000361: JUMPDEST 00000362: PUSH2 0x17dd 00000365: JUMP 00000366: JUMPDEST 00000367: PUSH2 0x1767 0000036a: JUMP 0000036b: JUMPDEST 0000036c: PUSH2 0x1345 0000036f: JUMP 00000370: JUMPDEST 00000371: PUSH2 0x12e9 00000374: JUMP 00000375: JUMPDEST 00000376: PUSH2 0x1295 00000379: JUMP 0000037a: JUMPDEST 0000037b: PUSH2 0x1244 0000037e: JUMP 0000037f: JUMPDEST 00000380: PUSH2 0x11d6 00000383: JUMP 00000384: JUMPDEST 00000385: PUSH2 0x10b8 00000388: JUMP 00000389: JUMPDEST 0000038a: PUSH2 0x101f 0000038d: JUMP 0000038e: JUMPDEST 0000038f: PUSH2 0x0f96 00000392: JUMP 00000393: JUMPDEST 00000394: PUSH2 0x0f7f 00000397: JUMP 00000398: JUMPDEST 00000399: PUSH2 0x0e04 0000039c: JUMP 0000039d: JUMPDEST 0000039e: PUSH2 0x0daf 000003a1: JUMP 000003a2: JUMPDEST 000003a3: PUSH2 0x0c6f 000003a6: JUMP 000003a7: JUMPDEST 000003a8: PUSH2 0x0b8f 000003ab: JUMP 000003ac: JUMPDEST 000003ad: PUSH2 0x0b30 000003b0: JUMP 000003b1: JUMPDEST 000003b2: PUSH2 0x0a50 000003b5: JUMP 000003b6: JUMPDEST 000003b7: PUSH2 0x0952 000003ba: JUMP 000003bb: JUMPDEST 000003bc: PUSH2 0x07b9 000003bf: JUMP 000003c0: JUMPDEST 000003c1: PUSH2 0x074e 000003c4: JUMP 000003c5: JUMPDEST 000003c6: PUSH2 0x06e6 000003c9: JUMP 000003ca: JUMPDEST 000003cb: PUSH2 0x059e 000003ce: JUMP 000003cf: JUMPDEST 000003d0: PUSH2 0x0402 000003d3: JUMP 000003d4: JUMPDEST 000003d5: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 000003f6: DUP2 000003f7: AND 000003f8: SUB 000003f9: PUSH2 0x03fe 000003fc: JUMPI 000003fd: JUMP 000003fe: JUMPDEST 000003ff: PUSH0 00000400: DUP1 00000401: REVERT 00000402: JUMPDEST 00000403: CALLVALUE 00000404: PUSH2 0x03fe 00000407: JUMPI 00000408: PUSH1 0x20 0000040a: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 0000042b: CALLDATASIZE 0000042c: ADD 0000042d: SLT 0000042e: PUSH2 0x03fe 00000431: JUMPI 00000432: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 00000453: PUSH1 0x04 00000455: CALLDATALOAD 00000456: PUSH2 0x045e 00000459: DUP2 0000045a: PUSH2 0x03d4 0000045d: JUMP 0000045e: JUMPDEST 0000045f: AND 00000460: PUSH32 0x4906490600000000000000000000000000000000000000000000000000000000 00000481: DUP2 00000482: EQ 00000483: SWAP1 00000484: DUP2 00000485: ISZERO 00000486: PUSH2 0x0498 00000489: JUMPI 0000048a: JUMPDEST 0000048b: POP 0000048c: PUSH1 0x40 0000048e: MLOAD 0000048f: SWAP1 00000490: ISZERO 00000491: ISZERO 00000492: DUP2 00000493: MSTORE 00000494: PUSH1 0x20 00000496: SWAP1 00000497: RETURN 00000498: JUMPDEST 00000499: PUSH32 0x80ac58cd00000000000000000000000000000000000000000000000000000000 000004ba: DUP2 000004bb: EQ 000004bc: SWAP2 000004bd: POP 000004be: DUP2 000004bf: ISZERO 000004c0: PUSH2 0x04fc 000004c3: JUMPI 000004c4: JUMPDEST 000004c5: DUP2 000004c6: ISZERO 000004c7: PUSH2 0x04d2 000004ca: JUMPI 000004cb: JUMPDEST 000004cc: POP 000004cd: PUSH0 000004ce: PUSH2 0x048a 000004d1: JUMP 000004d2: JUMPDEST 000004d3: PUSH32 0x01ffc9a700000000000000000000000000000000000000000000000000000000 000004f4: SWAP2 000004f5: POP 000004f6: EQ 000004f7: PUSH0 000004f8: PUSH2 0x04cb 000004fb: JUMP 000004fc: JUMPDEST 000004fd: PUSH32 0x5b5e139f00000000000000000000000000000000000000000000000000000000 0000051e: DUP2 0000051f: EQ 00000520: SWAP2 00000521: POP 00000522: PUSH2 0x04c4 00000525: JUMP 00000526: JUMPDEST 00000527: PUSH0 00000528: JUMPDEST 00000529: DUP4 0000052a: DUP2 0000052b: LT 0000052c: PUSH2 0x0537 0000052f: JUMPI 00000530: POP 00000531: POP 00000532: PUSH0 00000533: SWAP2 00000534: ADD 00000535: MSTORE 00000536: JUMP 00000537: JUMPDEST 00000538: DUP2 00000539: DUP2 0000053a: ADD 0000053b: MLOAD 0000053c: DUP4 0000053d: DUP3 0000053e: ADD 0000053f: MSTORE 00000540: PUSH1 0x20 00000542: ADD 00000543: PUSH2 0x0528 00000546: JUMP 00000547: JUMPDEST 00000548: SWAP1 00000549: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 0000056a: PUSH1 0x1f 0000056c: PUSH1 0x20 0000056e: SWAP4 0000056f: PUSH2 0x0583 00000572: DUP2 00000573: MLOAD 00000574: DUP1 00000575: SWAP3 00000576: DUP2 00000577: DUP8 00000578: MSTORE 00000579: DUP8 0000057a: DUP1 0000057b: DUP9 0000057c: ADD 0000057d: SWAP2 0000057e: ADD 0000057f: PUSH2 0x0526 00000582: JUMP 00000583: JUMPDEST 00000584: ADD 00000585: AND 00000586: ADD 00000587: ADD 00000588: SWAP1 00000589: JUMP 0000058a: JUMPDEST 0000058b: SWAP1 0000058c: PUSH1 0x20 0000058e: PUSH2 0x059b 00000591: SWAP3 00000592: DUP2 00000593: DUP2 00000594: MSTORE 00000595: ADD 00000596: SWAP1 00000597: PUSH2 0x0547 0000059a: JUMP 0000059b: JUMPDEST 0000059c: SWAP1 0000059d: JUMP 0000059e: JUMPDEST 0000059f: CALLVALUE 000005a0: PUSH2 0x03fe 000005a3: JUMPI 000005a4: PUSH0 000005a5: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 000005c6: CALLDATASIZE 000005c7: ADD 000005c8: SLT 000005c9: PUSH2 0x03fe 000005cc: JUMPI 000005cd: PUSH1 0x40 000005cf: MLOAD 000005d0: PUSH0 000005d1: PUSH1 0x01 000005d3: SLOAD 000005d4: DUP1 000005d5: PUSH1 0x01 000005d7: SHR 000005d8: SWAP1 000005d9: PUSH1 0x01 000005db: DUP2 000005dc: AND 000005dd: SWAP1 000005de: DUP2 000005df: ISZERO 000005e0: PUSH2 0x06dc 000005e3: JUMPI 000005e4: JUMPDEST 000005e5: PUSH1 0x20 000005e7: DUP4 000005e8: LT 000005e9: DUP3 000005ea: EQ 000005eb: PUSH2 0x06af 000005ee: JUMPI 000005ef: DUP3 000005f0: DUP6 000005f1: MSTORE 000005f2: PUSH1 0x20 000005f4: DUP6 000005f5: ADD 000005f6: SWAP2 000005f7: SWAP1 000005f8: DUP2 000005f9: ISZERO 000005fa: PUSH2 0x0678 000005fd: JUMPI 000005fe: POP 000005ff: PUSH1 0x01 00000601: EQ 00000602: PUSH2 0x0626 00000605: JUMPI 00000606: JUMPDEST 00000607: PUSH2 0x0622 0000060a: DUP5 0000060b: PUSH2 0x0616 0000060e: DUP2 0000060f: DUP7 00000610: SUB 00000611: DUP3 00000612: PUSH2 0x2c47 00000615: JUMP 00000616: JUMPDEST 00000617: PUSH1 0x40 00000619: MLOAD 0000061a: SWAP2 0000061b: DUP3 0000061c: SWAP2 0000061d: DUP3 0000061e: PUSH2 0x058a 00000621: JUMP 00000622: JUMPDEST 00000623: SUB 00000624: SWAP1 00000625: RETURN 00000626: JUMPDEST 00000627: PUSH1 0x01 00000629: PUSH0 0000062a: SWAP1 0000062b: DUP2 0000062c: MSTORE 0000062d: SWAP3 0000062e: POP 0000062f: SWAP1 00000630: PUSH32 0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6 00000651: JUMPDEST 00000652: DUP2 00000653: DUP5 00000654: LT 00000655: PUSH2 0x0664 00000658: JUMPI 00000659: POP 0000065a: POP 0000065b: ADD 0000065c: PUSH2 0x0616 0000065f: DUP3 00000660: PUSH2 0x0606 00000663: JUMP 00000664: JUMPDEST 00000665: DUP1 00000666: SLOAD 00000667: DUP5 00000668: DUP5 00000669: ADD 0000066a: MSTORE 0000066b: PUSH1 0x20 0000066d: SWAP1 0000066e: SWAP4 0000066f: ADD 00000670: SWAP3 00000671: PUSH1 0x01 00000673: ADD 00000674: PUSH2 0x0651 00000677: JUMP 00000678: JUMPDEST 00000679: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000069a: AND 0000069b: DUP3 0000069c: MSTORE 0000069d: POP 0000069e: SWAP1 0000069f: ISZERO 000006a0: ISZERO 000006a1: PUSH1 0x05 000006a3: SHL 000006a4: ADD 000006a5: SWAP1 000006a6: POP 000006a7: PUSH2 0x0616 000006aa: DUP3 000006ab: PUSH2 0x0606 000006ae: JUMP 000006af: JUMPDEST 000006b0: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000006d1: PUSH0 000006d2: MSTORE 000006d3: PUSH1 0x22 000006d5: PUSH1 0x04 000006d7: MSTORE 000006d8: PUSH1 0x24 000006da: PUSH0 000006db: REVERT 000006dc: JUMPDEST 000006dd: SWAP2 000006de: PUSH1 0x7f 000006e0: AND 000006e1: SWAP2 000006e2: PUSH2 0x05e4 000006e5: JUMP 000006e6: JUMPDEST 000006e7: CALLVALUE 000006e8: PUSH2 0x03fe 000006eb: JUMPI 000006ec: PUSH1 0x20 000006ee: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 0000070f: CALLDATASIZE 00000710: ADD 00000711: SLT 00000712: PUSH2 0x03fe 00000715: JUMPI 00000716: PUSH1 0x04 00000718: CALLDATALOAD 00000719: PUSH2 0x0721 0000071c: DUP2 0000071d: PUSH2 0x3d04 00000720: JUMP 00000721: JUMPDEST 00000722: POP 00000723: PUSH0 00000724: MSTORE 00000725: PUSH1 0x05 00000727: PUSH1 0x20 00000729: MSTORE 0000072a: PUSH1 0x20 0000072c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000741: PUSH1 0x40 00000743: PUSH0 00000744: KECCAK256 00000745: SLOAD 00000746: AND 00000747: PUSH1 0x40 00000749: MLOAD 0000074a: SWAP1 0000074b: DUP2 0000074c: MSTORE 0000074d: RETURN 0000074e: JUMPDEST 0000074f: CALLVALUE 00000750: PUSH2 0x03fe 00000753: JUMPI 00000754: PUSH1 0x20 00000756: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00000777: CALLDATASIZE 00000778: ADD 00000779: SLT 0000077a: PUSH2 0x03fe 0000077d: JUMPI 0000077e: PUSH1 0x20 00000780: PUSH2 0x0793 00000783: PUSH1 0x04 00000785: CALLDATALOAD 00000786: PUSH2 0x078e 00000789: DUP2 0000078a: PUSH2 0x3d5d 0000078d: JUMP 0000078e: JUMPDEST 0000078f: PUSH2 0x3da6 00000792: JUMP 00000793: JUMPDEST 00000794: PUSH1 0x40 00000796: MLOAD 00000797: SWAP1 00000798: DUP2 00000799: MSTORE 0000079a: RETURN 0000079b: JUMPDEST 0000079c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000007b1: DUP2 000007b2: AND 000007b3: SUB 000007b4: PUSH2 0x03fe 000007b7: JUMPI 000007b8: JUMP 000007b9: JUMPDEST 000007ba: CALLVALUE 000007bb: PUSH2 0x03fe 000007be: JUMPI 000007bf: PUSH1 0x40 000007c1: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 000007e2: CALLDATASIZE 000007e3: ADD 000007e4: SLT 000007e5: PUSH2 0x03fe 000007e8: JUMPI 000007e9: PUSH1 0x04 000007eb: CALLDATALOAD 000007ec: PUSH2 0x07f4 000007ef: DUP2 000007f0: PUSH2 0x079b 000007f3: JUMP 000007f4: JUMPDEST 000007f5: PUSH1 0x24 000007f7: CALLDATALOAD 000007f8: SWAP1 000007f9: PUSH2 0x0801 000007fc: DUP3 000007fd: PUSH2 0x3d04 00000800: JUMP 00000801: JUMPDEST 00000802: CALLER 00000803: ISZERO 00000804: ISZERO 00000805: DUP1 00000806: PUSH2 0x0932 00000809: JUMPI 0000080a: JUMPDEST 0000080b: DUP1 0000080c: PUSH2 0x08d8 0000080f: JUMPI 00000810: JUMPDEST 00000811: PUSH2 0x08ab 00000814: JUMPI 00000815: DUP3 00000816: PUSH2 0x08a9 00000819: SWAP4 0000081a: PUSH2 0x0869 0000081d: SWAP3 0000081e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000833: DUP1 00000834: DUP7 00000835: AND 00000836: SWAP2 00000837: AND 00000838: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00000859: PUSH0 0000085a: DUP1 0000085b: LOG4 0000085c: PUSH0 0000085d: MSTORE 0000085e: PUSH1 0x05 00000860: PUSH1 0x20 00000862: MSTORE 00000863: PUSH1 0x40 00000865: PUSH0 00000866: KECCAK256 00000867: SWAP1 00000868: JUMP 00000869: JUMPDEST 0000086a: SWAP1 0000086b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000880: AND 00000881: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 000008a2: DUP3 000008a3: SLOAD 000008a4: AND 000008a5: OR 000008a6: SWAP1 000008a7: SSTORE 000008a8: JUMP 000008a9: JUMPDEST 000008aa: STOP 000008ab: JUMPDEST 000008ac: PUSH32 0xa9fbf51f00000000000000000000000000000000000000000000000000000000 000008cd: PUSH0 000008ce: MSTORE 000008cf: CALLER 000008d0: PUSH1 0x04 000008d2: MSTORE 000008d3: PUSH1 0x24 000008d5: JUMPDEST 000008d6: PUSH0 000008d7: REVERT 000008d8: JUMPDEST 000008d9: POP 000008da: PUSH1 0xff 000008dc: PUSH2 0x092a 000008df: CALLER 000008e0: PUSH2 0x0907 000008e3: DUP5 000008e4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008f9: AND 000008fa: PUSH0 000008fb: MSTORE 000008fc: PUSH1 0x06 000008fe: PUSH1 0x20 00000900: MSTORE 00000901: PUSH1 0x40 00000903: PUSH0 00000904: KECCAK256 00000905: SWAP1 00000906: JUMP 00000907: JUMPDEST 00000908: SWAP1 00000909: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000091e: AND 0000091f: PUSH0 00000920: MSTORE 00000921: PUSH1 0x20 00000923: MSTORE 00000924: PUSH1 0x40 00000926: PUSH0 00000927: KECCAK256 00000928: SWAP1 00000929: JUMP 0000092a: JUMPDEST 0000092b: SLOAD 0000092c: AND 0000092d: ISZERO 0000092e: PUSH2 0x0810 00000931: JUMP 00000932: JUMPDEST 00000933: POP 00000934: CALLER 00000935: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000094a: DUP3 0000094b: AND 0000094c: EQ 0000094d: ISZERO 0000094e: PUSH2 0x080a 00000951: JUMP 00000952: JUMPDEST 00000953: PUSH1 0x20 00000955: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00000976: CALLDATASIZE 00000977: ADD 00000978: SLT 00000979: PUSH2 0x03fe 0000097c: JUMPI 0000097d: PUSH1 0x04 0000097f: CALLDATALOAD 00000980: PUSH2 0x0987 00000983: PUSH2 0x3de7 00000986: JUMP 00000987: JUMPDEST 00000988: PUSH2 0x0990 0000098b: DUP2 0000098c: PUSH2 0x3d5d 0000098f: JUMP 00000990: JUMPDEST 00000991: DUP1 00000992: PUSH0 00000993: MSTORE 00000994: PUSH1 0x0b 00000996: PUSH1 0x20 00000998: MSTORE 00000999: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009ae: PUSH1 0x01 000009b0: PUSH1 0x40 000009b2: PUSH0 000009b3: KECCAK256 000009b4: ADD 000009b5: SLOAD 000009b6: AND 000009b7: CALLER 000009b8: SUB 000009b9: PUSH2 0x0a21 000009bc: JUMPI 000009bd: DUP1 000009be: PUSH32 0xf8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7 000009df: PUSH1 0x20 000009e1: PUSH2 0x09ec 000009e4: PUSH2 0x0622 000009e7: SWAP5 000009e8: PUSH2 0x3e80 000009eb: JUMP 000009ec: JUMPDEST 000009ed: SWAP3 000009ee: PUSH2 0x09f7 000009f1: DUP5 000009f2: DUP3 000009f3: PUSH2 0x3eb2 000009f6: JUMP 000009f7: JUMPDEST 000009f8: PUSH1 0x40 000009fa: MLOAD 000009fb: SWAP1 000009fc: DUP2 000009fd: MSTORE 000009fe: LOG1 000009ff: PUSH1 0x40 00000a01: MLOAD 00000a02: PUSH16 0xffffffffffffffffffffffffffffffff 00000a13: SWAP1 00000a14: SWAP2 00000a15: AND 00000a16: DUP2 00000a17: MSTORE 00000a18: SWAP1 00000a19: DUP2 00000a1a: SWAP1 00000a1b: PUSH1 0x20 00000a1d: DUP3 00000a1e: ADD 00000a1f: SWAP1 00000a20: JUMP 00000a21: JUMPDEST 00000a22: PUSH32 0x87cca8a800000000000000000000000000000000000000000000000000000000 00000a43: PUSH0 00000a44: MSTORE 00000a45: PUSH1 0x04 00000a47: MSTORE 00000a48: CALLER 00000a49: PUSH1 0x24 00000a4b: MSTORE 00000a4c: PUSH1 0x44 00000a4e: PUSH0 00000a4f: REVERT 00000a50: JUMPDEST 00000a51: PUSH1 0x20 00000a53: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00000a74: CALLDATASIZE 00000a75: ADD 00000a76: SLT 00000a77: PUSH2 0x03fe 00000a7a: JUMPI 00000a7b: PUSH1 0x04 00000a7d: CALLDATALOAD 00000a7e: PUSH2 0x0a85 00000a81: PUSH2 0x3de7 00000a84: JUMP 00000a85: JUMPDEST 00000a86: PUSH2 0x0a8e 00000a89: DUP2 00000a8a: PUSH2 0x3d5d 00000a8d: JUMP 00000a8e: JUMPDEST 00000a8f: DUP1 00000a90: PUSH0 00000a91: MSTORE 00000a92: PUSH1 0x0b 00000a94: PUSH1 0x20 00000a96: MSTORE 00000a97: PUSH1 0x40 00000a99: PUSH0 00000a9a: KECCAK256 00000a9b: SLOAD 00000a9c: PUSH1 0x80 00000a9e: SHR 00000a9f: ISZERO 00000aa0: PUSH2 0x0b05 00000aa3: JUMPI 00000aa4: DUP1 00000aa5: PUSH0 00000aa6: MSTORE 00000aa7: PUSH1 0x0b 00000aa9: PUSH1 0x20 00000aab: MSTORE 00000aac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ac1: PUSH1 0x01 00000ac3: PUSH1 0x40 00000ac5: PUSH0 00000ac6: KECCAK256 00000ac7: ADD 00000ac8: SLOAD 00000ac9: AND 00000aca: CALLER 00000acb: SUB 00000acc: PUSH2 0x0a21 00000acf: JUMPI 00000ad0: PUSH1 0x20 00000ad2: DUP2 00000ad3: PUSH2 0x0afc 00000ad6: PUSH32 0xf8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7 00000af7: SWAP4 00000af8: PUSH2 0x412c 00000afb: JUMP 00000afc: JUMPDEST 00000afd: PUSH1 0x40 00000aff: MLOAD 00000b00: SWAP1 00000b01: DUP2 00000b02: MSTORE 00000b03: LOG1 00000b04: STOP 00000b05: JUMPDEST 00000b06: PUSH32 0x28a1df1c00000000000000000000000000000000000000000000000000000000 00000b27: PUSH0 00000b28: MSTORE 00000b29: PUSH1 0x04 00000b2b: MSTORE 00000b2c: PUSH1 0x24 00000b2e: PUSH0 00000b2f: REVERT 00000b30: JUMPDEST 00000b31: CALLVALUE 00000b32: PUSH2 0x03fe 00000b35: JUMPI 00000b36: PUSH1 0x20 00000b38: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00000b59: CALLDATASIZE 00000b5a: ADD 00000b5b: SLT 00000b5c: PUSH2 0x03fe 00000b5f: JUMPI 00000b60: PUSH1 0x20 00000b62: PUSH2 0x0b75 00000b65: PUSH1 0x04 00000b67: CALLDATALOAD 00000b68: PUSH2 0x0b70 00000b6b: DUP2 00000b6c: PUSH2 0x3d5d 00000b6f: JUMP 00000b70: JUMPDEST 00000b71: PUSH2 0x3e80 00000b74: JUMP 00000b75: JUMPDEST 00000b76: PUSH16 0xffffffffffffffffffffffffffffffff 00000b87: PUSH1 0x40 00000b89: MLOAD 00000b8a: SWAP2 00000b8b: AND 00000b8c: DUP2 00000b8d: MSTORE 00000b8e: RETURN 00000b8f: JUMPDEST 00000b90: CALLVALUE 00000b91: PUSH2 0x03fe 00000b94: JUMPI 00000b95: PUSH1 0x20 00000b97: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00000bb8: CALLDATASIZE 00000bb9: ADD 00000bba: SLT 00000bbb: PUSH2 0x03fe 00000bbe: JUMPI 00000bbf: PUSH1 0x04 00000bc1: CALLDATALOAD 00000bc2: PUSH2 0x0bca 00000bc5: DUP2 00000bc6: PUSH2 0x3d5d 00000bc9: JUMP 00000bca: JUMPDEST 00000bcb: PUSH0 00000bcc: MSTORE 00000bcd: PUSH1 0x0b 00000bcf: PUSH1 0x20 00000bd1: MSTORE 00000bd2: PUSH1 0x20 00000bd4: PUSH16 0xffffffffffffffffffffffffffffffff 00000be5: PUSH1 0x40 00000be7: PUSH0 00000be8: KECCAK256 00000be9: SLOAD 00000bea: AND 00000beb: PUSH1 0x40 00000bed: MLOAD 00000bee: SWAP1 00000bef: DUP2 00000bf0: MSTORE 00000bf1: RETURN 00000bf2: JUMPDEST 00000bf3: PUSH1 0x20 00000bf5: DUP2 00000bf6: ADD 00000bf7: PUSH1 0x20 00000bf9: DUP3 00000bfa: MSTORE 00000bfb: DUP3 00000bfc: MLOAD 00000bfd: DUP1 00000bfe: SWAP2 00000bff: MSTORE 00000c00: PUSH1 0x40 00000c02: DUP3 00000c03: ADD 00000c04: SWAP2 00000c05: PUSH1 0x20 00000c07: PUSH1 0x40 00000c09: DUP4 00000c0a: PUSH1 0x05 00000c0c: SHL 00000c0d: DUP4 00000c0e: ADD 00000c0f: ADD 00000c10: SWAP5 00000c11: ADD 00000c12: SWAP3 00000c13: PUSH0 00000c14: SWAP2 00000c15: JUMPDEST 00000c16: DUP4 00000c17: DUP4 00000c18: LT 00000c19: PUSH2 0x0c24 00000c1c: JUMPI 00000c1d: POP 00000c1e: POP 00000c1f: POP 00000c20: POP 00000c21: POP 00000c22: SWAP1 00000c23: JUMP 00000c24: JUMPDEST 00000c25: SWAP1 00000c26: SWAP2 00000c27: SWAP3 00000c28: SWAP4 00000c29: SWAP5 00000c2a: PUSH1 0x20 00000c2c: DUP1 00000c2d: PUSH2 0x0c60 00000c30: DUP4 00000c31: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0 00000c52: DUP7 00000c53: PUSH1 0x01 00000c55: SWAP7 00000c56: SUB 00000c57: ADD 00000c58: DUP8 00000c59: MSTORE 00000c5a: DUP10 00000c5b: MLOAD 00000c5c: PUSH2 0x0547 00000c5f: JUMP 00000c60: JUMPDEST 00000c61: SWAP8 00000c62: ADD 00000c63: SWAP4 00000c64: ADD 00000c65: SWAP4 00000c66: ADD 00000c67: SWAP2 00000c68: SWAP4 00000c69: SWAP3 00000c6a: SWAP1 00000c6b: PUSH2 0x0c15 00000c6e: JUMP 00000c6f: JUMPDEST 00000c70: PUSH1 0x20 00000c72: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00000c93: CALLDATASIZE 00000c94: ADD 00000c95: SLT 00000c96: PUSH2 0x03fe 00000c99: JUMPI 00000c9a: PUSH1 0x04 00000c9c: CALLDATALOAD 00000c9d: PUSH8 0xffffffffffffffff 00000ca6: DUP2 00000ca7: GT 00000ca8: PUSH2 0x03fe 00000cab: JUMPI 00000cac: CALLDATASIZE 00000cad: PUSH1 0x23 00000caf: DUP3 00000cb0: ADD 00000cb1: SLT 00000cb2: ISZERO 00000cb3: PUSH2 0x03fe 00000cb6: JUMPI 00000cb7: DUP1 00000cb8: PUSH1 0x04 00000cba: ADD 00000cbb: CALLDATALOAD 00000cbc: SWAP1 00000cbd: PUSH8 0xffffffffffffffff 00000cc6: DUP3 00000cc7: GT 00000cc8: PUSH2 0x03fe 00000ccb: JUMPI 00000ccc: PUSH1 0x24 00000cce: DUP2 00000ccf: ADD 00000cd0: SWAP1 00000cd1: PUSH1 0x24 00000cd3: CALLDATASIZE 00000cd4: SWAP2 00000cd5: DUP5 00000cd6: PUSH1 0x05 00000cd8: SHL 00000cd9: ADD 00000cda: ADD 00000cdb: GT 00000cdc: PUSH2 0x03fe 00000cdf: JUMPI 00000ce0: PUSH2 0x0ce8 00000ce3: DUP3 00000ce4: PUSH2 0x3614 00000ce7: JUMP 00000ce8: JUMPDEST 00000ce9: SWAP2 00000cea: PUSH2 0x0cf6 00000ced: PUSH1 0x40 00000cef: MLOAD 00000cf0: SWAP4 00000cf1: DUP5 00000cf2: PUSH2 0x2c47 00000cf5: JUMP 00000cf6: JUMPDEST 00000cf7: DUP1 00000cf8: DUP4 00000cf9: MSTORE 00000cfa: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00000d1b: PUSH2 0x0d23 00000d1e: DUP3 00000d1f: PUSH2 0x3614 00000d22: JUMP 00000d23: JUMPDEST 00000d24: ADD 00000d25: PUSH0 00000d26: JUMPDEST 00000d27: DUP2 00000d28: DUP2 00000d29: LT 00000d2a: PUSH2 0x0d9e 00000d2d: JUMPI 00000d2e: POP 00000d2f: POP 00000d30: PUSH0 00000d31: JUMPDEST 00000d32: DUP2 00000d33: DUP2 00000d34: LT 00000d35: PUSH2 0x0d46 00000d38: JUMPI 00000d39: PUSH1 0x40 00000d3b: MLOAD 00000d3c: DUP1 00000d3d: PUSH2 0x0622 00000d40: DUP7 00000d41: DUP3 00000d42: PUSH2 0x0bf2 00000d45: JUMP 00000d46: JUMPDEST 00000d47: PUSH0 00000d48: DUP1 00000d49: PUSH2 0x0d53 00000d4c: DUP4 00000d4d: DUP6 00000d4e: DUP8 00000d4f: PUSH2 0x3659 00000d52: JUMP 00000d53: JUMPDEST 00000d54: SWAP1 00000d55: PUSH2 0x0d63 00000d58: PUSH1 0x40 00000d5a: MLOAD 00000d5b: DUP1 00000d5c: SWAP4 00000d5d: DUP2 00000d5e: SWAP4 00000d5f: PUSH2 0x36be 00000d62: JUMP 00000d63: JUMPDEST 00000d64: SUB 00000d65: SWAP1 00000d66: ADDRESS 00000d67: GAS 00000d68: DELEGATECALL 00000d69: PUSH2 0x0d70 00000d6c: PUSH2 0x36cb 00000d6f: JUMP 00000d70: JUMPDEST 00000d71: SWAP1 00000d72: ISZERO 00000d73: PUSH2 0x0d96 00000d76: JUMPI 00000d77: SWAP1 00000d78: PUSH1 0x01 00000d7a: SWAP2 00000d7b: PUSH2 0x0d84 00000d7e: DUP3 00000d7f: DUP8 00000d80: PUSH2 0x36fa 00000d83: JUMP 00000d84: JUMPDEST 00000d85: MSTORE 00000d86: PUSH2 0x0d8f 00000d89: DUP2 00000d8a: DUP7 00000d8b: PUSH2 0x36fa 00000d8e: JUMP 00000d8f: JUMPDEST 00000d90: POP 00000d91: ADD 00000d92: PUSH2 0x0d31 00000d95: JUMP 00000d96: JUMPDEST 00000d97: DUP1 00000d98: MLOAD 00000d99: SWAP1 00000d9a: PUSH1 0x20 00000d9c: ADD 00000d9d: REVERT 00000d9e: JUMPDEST 00000d9f: DUP1 00000da0: PUSH1 0x60 00000da2: PUSH1 0x20 00000da4: DUP1 00000da5: SWAP4 00000da6: DUP9 00000da7: ADD 00000da8: ADD 00000da9: MSTORE 00000daa: ADD 00000dab: PUSH2 0x0d26 00000dae: JUMP 00000daf: JUMPDEST 00000db0: CALLVALUE 00000db1: PUSH2 0x03fe 00000db4: JUMPI 00000db5: PUSH0 00000db6: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00000dd7: CALLDATASIZE 00000dd8: ADD 00000dd9: SLT 00000dda: PUSH2 0x03fe 00000ddd: JUMPI 00000dde: PUSH1 0x20 00000de0: PUSH1 0x09 00000de2: SLOAD 00000de3: PUSH1 0x40 00000de5: MLOAD 00000de6: SWAP1 00000de7: DUP2 00000de8: MSTORE 00000de9: RETURN 00000dea: JUMPDEST 00000deb: PUSH16 0xffffffffffffffffffffffffffffffff 00000dfc: DUP2 00000dfd: AND 00000dfe: SUB 00000dff: PUSH2 0x03fe 00000e02: JUMPI 00000e03: JUMP 00000e04: JUMPDEST 00000e05: PUSH1 0x60 00000e07: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00000e28: CALLDATASIZE 00000e29: ADD 00000e2a: SLT 00000e2b: PUSH2 0x03fe 00000e2e: JUMPI 00000e2f: PUSH1 0x04 00000e31: CALLDATALOAD 00000e32: PUSH1 0x24 00000e34: CALLDATALOAD 00000e35: PUSH2 0x0e3d 00000e38: DUP2 00000e39: PUSH2 0x0dea 00000e3c: JUMP 00000e3d: JUMPDEST 00000e3e: PUSH1 0x44 00000e40: CALLDATALOAD 00000e41: SWAP1 00000e42: PUSH2 0x0e4a 00000e45: DUP3 00000e46: PUSH2 0x0dea 00000e49: JUMP 00000e4a: JUMPDEST 00000e4b: PUSH2 0x0e52 00000e4e: PUSH2 0x3de7 00000e51: JUMP 00000e52: JUMPDEST 00000e53: PUSH2 0x0e5b 00000e56: DUP4 00000e57: PUSH2 0x3d5d 00000e5a: JUMP 00000e5b: JUMPDEST 00000e5c: DUP3 00000e5d: PUSH0 00000e5e: MSTORE 00000e5f: PUSH1 0x0b 00000e61: PUSH1 0x20 00000e63: MSTORE 00000e64: PUSH1 0xff 00000e66: PUSH1 0x01 00000e68: PUSH1 0x40 00000e6a: PUSH0 00000e6b: KECCAK256 00000e6c: ADD 00000e6d: SLOAD 00000e6e: PUSH1 0xd8 00000e70: SHR 00000e71: AND 00000e72: PUSH2 0x0f09 00000e75: JUMPI 00000e76: DUP3 00000e77: PUSH0 00000e78: MSTORE 00000e79: PUSH1 0x0b 00000e7b: PUSH1 0x20 00000e7d: MSTORE 00000e7e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e93: PUSH1 0x01 00000e95: PUSH1 0x40 00000e97: PUSH0 00000e98: KECCAK256 00000e99: ADD 00000e9a: SLOAD 00000e9b: AND 00000e9c: CALLER 00000e9d: SUB 00000e9e: PUSH2 0x0ed9 00000ea1: JUMPI 00000ea2: SWAP2 00000ea3: PUSH2 0x0afc 00000ea6: PUSH1 0x20 00000ea8: SWAP3 00000ea9: PUSH2 0x0ed3 00000eac: PUSH32 0xf8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7 00000ecd: SWAP6 00000ece: DUP5 00000ecf: PUSH2 0x4235 00000ed2: JUMP 00000ed3: JUMPDEST 00000ed4: DUP3 00000ed5: PUSH2 0x42c2 00000ed8: JUMP 00000ed9: JUMPDEST 00000eda: DUP3 00000edb: PUSH32 0x87cca8a800000000000000000000000000000000000000000000000000000000 00000efc: PUSH0 00000efd: MSTORE 00000efe: PUSH1 0x04 00000f00: MSTORE 00000f01: CALLER 00000f02: PUSH1 0x24 00000f04: MSTORE 00000f05: PUSH1 0x44 00000f07: PUSH0 00000f08: REVERT 00000f09: JUMPDEST 00000f0a: DUP3 00000f0b: PUSH32 0x271c0f9d00000000000000000000000000000000000000000000000000000000 00000f2c: PUSH0 00000f2d: MSTORE 00000f2e: PUSH1 0x04 00000f30: MSTORE 00000f31: PUSH1 0x24 00000f33: PUSH0 00000f34: REVERT 00000f35: JUMPDEST 00000f36: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00000f57: PUSH1 0x60 00000f59: SWAP2 00000f5a: ADD 00000f5b: SLT 00000f5c: PUSH2 0x03fe 00000f5f: JUMPI 00000f60: PUSH1 0x04 00000f62: CALLDATALOAD 00000f63: PUSH2 0x0f6b 00000f66: DUP2 00000f67: PUSH2 0x079b 00000f6a: JUMP 00000f6b: JUMPDEST 00000f6c: SWAP1 00000f6d: PUSH1 0x24 00000f6f: CALLDATALOAD 00000f70: PUSH2 0x0f78 00000f73: DUP2 00000f74: PUSH2 0x079b 00000f77: JUMP 00000f78: JUMPDEST 00000f79: SWAP1 00000f7a: PUSH1 0x44 00000f7c: CALLDATALOAD 00000f7d: SWAP1 00000f7e: JUMP 00000f7f: JUMPDEST 00000f80: CALLVALUE 00000f81: PUSH2 0x03fe 00000f84: JUMPI 00000f85: PUSH2 0x08a9 00000f88: PUSH2 0x0f90 00000f8b: CALLDATASIZE 00000f8c: PUSH2 0x0f35 00000f8f: JUMP 00000f90: JUMPDEST 00000f91: SWAP2 00000f92: PUSH2 0x370e 00000f95: JUMP 00000f96: JUMPDEST 00000f97: PUSH1 0x60 00000f99: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00000fba: CALLDATASIZE 00000fbb: ADD 00000fbc: SLT 00000fbd: PUSH2 0x03fe 00000fc0: JUMPI 00000fc1: PUSH2 0x08a9 00000fc4: PUSH1 0x04 00000fc6: CALLDATALOAD 00000fc7: PUSH2 0x0fcf 00000fca: DUP2 00000fcb: PUSH2 0x079b 00000fce: JUMP 00000fcf: JUMPDEST 00000fd0: PUSH1 0x24 00000fd2: CALLDATALOAD 00000fd3: PUSH2 0x0fdb 00000fd6: DUP2 00000fd7: PUSH2 0x079b 00000fda: JUMP 00000fdb: JUMPDEST 00000fdc: PUSH16 0xffffffffffffffffffffffffffffffff 00000fed: PUSH1 0x44 00000fef: CALLDATALOAD 00000ff0: PUSH2 0x0ff8 00000ff3: DUP2 00000ff4: PUSH2 0x0dea 00000ff7: JUMP 00000ff8: JUMPDEST 00000ff9: AND 00000ffa: SWAP2 00000ffb: CALLER 00000ffc: SWAP1 00000ffd: PUSH2 0x4424 00001000: JUMP 00001001: JUMPDEST 00001002: PUSH1 0x64 00001004: CALLDATALOAD 00001005: SWAP1 00001006: PUSH5 0xffffffffff 0000100c: DUP3 0000100d: AND 0000100e: DUP3 0000100f: SUB 00001010: PUSH2 0x03fe 00001013: JUMPI 00001014: JUMP 00001015: JUMPDEST 00001016: DUP1 00001017: ISZERO 00001018: ISZERO 00001019: SUB 0000101a: PUSH2 0x03fe 0000101d: JUMPI 0000101e: JUMP 0000101f: JUMPDEST 00001020: PUSH1 0xe0 00001022: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00001043: CALLDATASIZE 00001044: ADD 00001045: SLT 00001046: PUSH2 0x03fe 00001049: JUMPI 0000104a: PUSH1 0x20 0000104c: PUSH1 0x04 0000104e: CALLDATALOAD 0000104f: PUSH2 0x1057 00001052: DUP2 00001053: PUSH2 0x079b 00001056: JUMP 00001057: JUMPDEST 00001058: PUSH2 0x0793 0000105b: PUSH2 0x10b1 0000105e: PUSH1 0x24 00001060: CALLDATALOAD 00001061: PUSH2 0x1069 00001064: DUP2 00001065: PUSH2 0x079b 00001068: JUMP 00001069: JUMPDEST 0000106a: PUSH1 0x44 0000106c: CALLDATALOAD 0000106d: PUSH2 0x1075 00001070: DUP2 00001071: PUSH2 0x0dea 00001074: JUMP 00001075: JUMPDEST 00001076: PUSH2 0x107d 00001079: PUSH2 0x1001 0000107c: JUMP 0000107d: JUMPDEST 0000107e: PUSH1 0x84 00001080: CALLDATALOAD 00001081: SWAP2 00001082: PUSH2 0x108a 00001085: DUP4 00001086: PUSH2 0x079b 00001089: JUMP 0000108a: JUMPDEST 0000108b: PUSH1 0xa4 0000108d: CALLDATALOAD 0000108e: SWAP4 0000108f: PUSH2 0x1097 00001092: DUP6 00001093: PUSH2 0x1015 00001096: JUMP 00001097: JUMPDEST 00001098: PUSH1 0xc4 0000109a: CALLDATALOAD 0000109b: SWAP8 0000109c: PUSH2 0x10a4 0000109f: DUP10 000010a0: PUSH2 0x0dea 000010a3: JUMP 000010a4: JUMPDEST 000010a5: PUSH2 0x10ac 000010a8: PUSH2 0x3de7 000010ab: JUMP 000010ac: JUMPDEST 000010ad: PUSH2 0x47bf 000010b0: JUMP 000010b1: JUMPDEST 000010b2: SWAP2 000010b3: DUP3 000010b4: PUSH2 0x42c2 000010b7: JUMP 000010b8: JUMPDEST 000010b9: PUSH1 0x40 000010bb: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 000010dc: CALLDATASIZE 000010dd: ADD 000010de: SLT 000010df: PUSH2 0x03fe 000010e2: JUMPI 000010e3: PUSH1 0x04 000010e5: CALLDATALOAD 000010e6: PUSH1 0x24 000010e8: CALLDATALOAD 000010e9: PUSH2 0x10f1 000010ec: DUP2 000010ed: PUSH2 0x0dea 000010f0: JUMP 000010f1: JUMPDEST 000010f2: PUSH2 0x10f9 000010f5: PUSH2 0x3de7 000010f8: JUMP 000010f9: JUMPDEST 000010fa: PUSH2 0x1102 000010fd: DUP3 000010fe: PUSH2 0x3d5d 00001101: JUMP 00001102: JUMPDEST 00001103: DUP2 00001104: PUSH0 00001105: MSTORE 00001106: PUSH1 0x0b 00001108: PUSH1 0x20 0000110a: MSTORE 0000110b: PUSH1 0x40 0000110d: PUSH0 0000110e: KECCAK256 0000110f: SLOAD 00001110: PUSH1 0x80 00001112: SHR 00001113: ISZERO 00001114: PUSH2 0x11aa 00001117: JUMPI 00001118: DUP2 00001119: PUSH0 0000111a: MSTORE 0000111b: PUSH1 0x0b 0000111d: PUSH1 0x20 0000111f: MSTORE 00001120: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001135: PUSH1 0x01 00001137: PUSH1 0x40 00001139: PUSH0 0000113a: KECCAK256 0000113b: ADD 0000113c: SLOAD 0000113d: AND 0000113e: CALLER 0000113f: SUB 00001140: PUSH2 0x117a 00001143: JUMPI 00001144: DUP2 00001145: PUSH2 0x1171 00001148: PUSH1 0x20 0000114a: SWAP3 0000114b: PUSH32 0xf8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7 0000116c: SWAP5 0000116d: PUSH2 0x3eb2 00001170: JUMP 00001171: JUMPDEST 00001172: PUSH2 0x0afc 00001175: DUP2 00001176: PUSH2 0x412c 00001179: JUMP 0000117a: JUMPDEST 0000117b: POP 0000117c: PUSH32 0x87cca8a800000000000000000000000000000000000000000000000000000000 0000119d: PUSH0 0000119e: MSTORE 0000119f: PUSH1 0x04 000011a1: MSTORE 000011a2: CALLER 000011a3: PUSH1 0x24 000011a5: MSTORE 000011a6: PUSH1 0x44 000011a8: PUSH0 000011a9: REVERT 000011aa: JUMPDEST 000011ab: POP 000011ac: PUSH32 0x28a1df1c00000000000000000000000000000000000000000000000000000000 000011cd: PUSH0 000011ce: MSTORE 000011cf: PUSH1 0x04 000011d1: MSTORE 000011d2: PUSH1 0x24 000011d4: PUSH0 000011d5: REVERT 000011d6: JUMPDEST 000011d7: CALLVALUE 000011d8: PUSH2 0x03fe 000011db: JUMPI 000011dc: PUSH2 0x08a9 000011df: PUSH2 0x11e7 000011e2: CALLDATASIZE 000011e3: PUSH2 0x0f35 000011e6: JUMP 000011e7: JUMPDEST 000011e8: SWAP1 000011e9: PUSH1 0x40 000011eb: MLOAD 000011ec: SWAP3 000011ed: PUSH2 0x11f7 000011f0: PUSH1 0x20 000011f2: DUP6 000011f3: PUSH2 0x2c47 000011f6: JUMP 000011f7: JUMPDEST 000011f8: PUSH0 000011f9: DUP5 000011fa: MSTORE 000011fb: PUSH2 0x39de 000011fe: JUMP 000011ff: JUMPDEST 00001200: CALLVALUE 00001201: PUSH2 0x03fe 00001204: JUMPI 00001205: PUSH1 0x20 00001207: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00001228: CALLDATASIZE 00001229: ADD 0000122a: SLT 0000122b: PUSH2 0x03fe 0000122e: JUMPI 0000122f: PUSH1 0x20 00001231: PUSH2 0x0b75 00001234: PUSH1 0x04 00001236: CALLDATALOAD 00001237: PUSH2 0x123f 0000123a: DUP2 0000123b: PUSH2 0x3d5d 0000123e: JUMP 0000123f: JUMPDEST 00001240: PUSH2 0x4b05 00001243: JUMP 00001244: JUMPDEST 00001245: CALLVALUE 00001246: PUSH2 0x03fe 00001249: JUMPI 0000124a: PUSH0 0000124b: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 0000126c: CALLDATASIZE 0000126d: ADD 0000126e: SLT 0000126f: PUSH2 0x03fe 00001272: JUMPI 00001273: PUSH1 0x20 00001275: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000128a: PUSH1 0x0a 0000128c: SLOAD 0000128d: AND 0000128e: PUSH1 0x40 00001290: MLOAD 00001291: SWAP1 00001292: DUP2 00001293: MSTORE 00001294: RETURN 00001295: JUMPDEST 00001296: CALLVALUE 00001297: PUSH2 0x03fe 0000129a: JUMPI 0000129b: PUSH1 0x20 0000129d: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 000012be: CALLDATASIZE 000012bf: ADD 000012c0: SLT 000012c1: PUSH2 0x03fe 000012c4: JUMPI 000012c5: PUSH1 0x04 000012c7: CALLDATALOAD 000012c8: PUSH2 0x12d0 000012cb: DUP2 000012cc: PUSH2 0x3d5d 000012cf: JUMP 000012d0: JUMPDEST 000012d1: PUSH0 000012d2: MSTORE 000012d3: PUSH1 0x0b 000012d5: PUSH1 0x20 000012d7: MSTORE 000012d8: PUSH1 0x20 000012da: PUSH1 0x03 000012dc: PUSH1 0x40 000012de: PUSH0 000012df: KECCAK256 000012e0: ADD 000012e1: SLOAD 000012e2: PUSH1 0x40 000012e4: MLOAD 000012e5: SWAP1 000012e6: DUP2 000012e7: MSTORE 000012e8: RETURN 000012e9: JUMPDEST 000012ea: CALLVALUE 000012eb: PUSH2 0x03fe 000012ee: JUMPI 000012ef: PUSH1 0x20 000012f1: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00001312: CALLDATASIZE 00001313: ADD 00001314: SLT 00001315: PUSH2 0x03fe 00001318: JUMPI 00001319: PUSH1 0x04 0000131b: CALLDATALOAD 0000131c: PUSH2 0x1324 0000131f: DUP2 00001320: PUSH2 0x3d5d 00001323: JUMP 00001324: JUMPDEST 00001325: PUSH0 00001326: MSTORE 00001327: PUSH1 0x0b 00001329: PUSH1 0x20 0000132b: MSTORE 0000132c: PUSH1 0x20 0000132e: PUSH1 0xff 00001330: PUSH1 0x01 00001332: PUSH1 0x40 00001334: PUSH0 00001335: KECCAK256 00001336: ADD 00001337: SLOAD 00001338: PUSH1 0xd8 0000133a: SHR 0000133b: AND 0000133c: PUSH1 0x40 0000133e: MLOAD 0000133f: SWAP1 00001340: ISZERO 00001341: ISZERO 00001342: DUP2 00001343: MSTORE 00001344: RETURN 00001345: JUMPDEST 00001346: PUSH1 0x20 00001348: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00001369: CALLDATASIZE 0000136a: ADD 0000136b: SLT 0000136c: PUSH2 0x03fe 0000136f: JUMPI 00001370: PUSH1 0x04 00001372: CALLDATALOAD 00001373: PUSH2 0x137a 00001376: PUSH2 0x3de7 00001379: JUMP 0000137a: JUMPDEST 0000137b: PUSH2 0x1383 0000137e: DUP2 0000137f: PUSH2 0x3d5d 00001382: JUMP 00001383: JUMPDEST 00001384: DUP1 00001385: PUSH0 00001386: MSTORE 00001387: PUSH1 0x0b 00001389: PUSH1 0x20 0000138b: MSTORE 0000138c: PUSH1 0xff 0000138e: PUSH1 0x01 00001390: PUSH1 0x40 00001392: PUSH0 00001393: KECCAK256 00001394: ADD 00001395: SLOAD 00001396: PUSH1 0xd8 00001398: SHR 00001399: AND 0000139a: PUSH2 0x173c 0000139d: JUMPI 0000139e: PUSH2 0x13eb 000013a1: PUSH2 0x13d2 000013a4: PUSH1 0x01 000013a6: PUSH2 0x13b7 000013a9: DUP5 000013aa: PUSH0 000013ab: MSTORE 000013ac: PUSH1 0x0b 000013ae: PUSH1 0x20 000013b0: MSTORE 000013b1: PUSH1 0x40 000013b3: PUSH0 000013b4: KECCAK256 000013b5: SWAP1 000013b6: JUMP 000013b7: JUMPDEST 000013b8: ADD 000013b9: SLOAD 000013ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013cf: AND 000013d0: SWAP1 000013d1: JUMP 000013d2: JUMPDEST 000013d3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013e8: AND 000013e9: SWAP1 000013ea: JUMP 000013eb: JUMPDEST 000013ec: CALLER 000013ed: EQ 000013ee: ISZERO 000013ef: DUP1 000013f0: PUSH2 0x1711 000013f3: JUMPI 000013f4: JUMPDEST 000013f5: PUSH2 0x16e2 000013f8: JUMPI 000013f9: PUSH2 0x1632 000013fc: DUP2 000013fd: PUSH2 0x1426 00001400: PUSH32 0xf8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7 00001421: SWAP4 00001422: PUSH2 0x4d78 00001425: JUMP 00001426: JUMPDEST 00001427: DUP1 00001428: PUSH2 0x165f 0000142b: JUMPI 0000142c: PUSH2 0x1434 0000142f: DUP3 00001430: PUSH2 0x4c02 00001433: JUMP 00001434: JUMPDEST 00001435: DUP1 00001436: PUSH2 0x1637 00001439: JUMPI 0000143a: JUMPDEST 0000143b: POP 0000143c: JUMPDEST 0000143d: PUSH2 0x14a6 00001440: PUSH5 0xffffffffff 00001446: TIMESTAMP 00001447: AND 00001448: PUSH1 0x01 0000144a: PUSH2 0x145b 0000144d: DUP6 0000144e: PUSH0 0000144f: MSTORE 00001450: PUSH1 0x0b 00001452: PUSH1 0x20 00001454: MSTORE 00001455: PUSH1 0x40 00001457: PUSH0 00001458: KECCAK256 00001459: SWAP1 0000145a: JUMP 0000145b: JUMPDEST 0000145c: ADD 0000145d: SWAP1 0000145e: PUSH32 0xffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff 0000147f: PUSH25 0xffffffffff0000000000000000000000000000000000000000 00001499: DUP4 0000149a: SLOAD 0000149b: SWAP3 0000149c: PUSH1 0xa0 0000149e: SHL 0000149f: AND 000014a0: SWAP2 000014a1: AND 000014a2: OR 000014a3: SWAP1 000014a4: SSTORE 000014a5: JUMP 000014a6: JUMPDEST 000014a7: PUSH2 0x14fd 000014aa: PUSH0 000014ab: PUSH2 0x14bc 000014ae: DUP5 000014af: PUSH0 000014b0: MSTORE 000014b1: PUSH1 0x0b 000014b3: PUSH1 0x20 000014b5: MSTORE 000014b6: PUSH1 0x40 000014b8: PUSH0 000014b9: KECCAK256 000014ba: SWAP1 000014bb: JUMP 000014bc: JUMPDEST 000014bd: SWAP1 000014be: PUSH16 0xffffffffffffffffffffffffffffffff 000014cf: PUSH32 0xffffffffffffffffffffffffffffffff00000000000000000000000000000000 000014f0: DUP4 000014f1: SLOAD 000014f2: SWAP3 000014f3: PUSH1 0x80 000014f5: SHL 000014f6: AND 000014f7: SWAP2 000014f8: AND 000014f9: OR 000014fa: SWAP1 000014fb: SSTORE 000014fc: JUMP 000014fd: JUMPDEST 000014fe: PUSH2 0x155b 00001501: PUSH1 0x01 00001503: PUSH2 0x1514 00001506: DUP5 00001507: PUSH0 00001508: MSTORE 00001509: PUSH1 0x0b 0000150b: PUSH1 0x20 0000150d: MSTORE 0000150e: PUSH1 0x40 00001510: PUSH0 00001511: KECCAK256 00001512: SWAP1 00001513: JUMP 00001514: JUMPDEST 00001515: ADD 00001516: PUSH28 0x01000000000000000000000000000000000000000000000000000000 00001533: PUSH32 0xffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001554: DUP3 00001555: SLOAD 00001556: AND 00001557: OR 00001558: SWAP1 00001559: SSTORE 0000155a: JUMP 0000155b: JUMPDEST 0000155c: PUSH2 0x1572 0000155f: PUSH1 0x01 00001561: PUSH2 0x13b7 00001564: DUP5 00001565: PUSH0 00001566: MSTORE 00001567: PUSH1 0x0b 00001569: PUSH1 0x20 0000156b: MSTORE 0000156c: PUSH1 0x40 0000156e: PUSH0 0000156f: KECCAK256 00001570: SWAP1 00001571: JUMP 00001572: JUMPDEST 00001573: SWAP1 00001574: DUP3 00001575: PUSH32 0xa8e3d71a6c0c719305004b430f6d17f12536f7b803db23a4d7016f5b52699a8c 00001596: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015ab: PUSH2 0x15d9 000015ae: PUSH2 0x15bf 000015b1: DUP5 000015b2: PUSH0 000015b3: MSTORE 000015b4: PUSH1 0x03 000015b6: PUSH1 0x20 000015b8: MSTORE 000015b9: PUSH1 0x40 000015bb: PUSH0 000015bc: KECCAK256 000015bd: SWAP1 000015be: JUMP 000015bf: JUMPDEST 000015c0: SLOAD 000015c1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015d6: AND 000015d7: SWAP1 000015d8: JUMP 000015d9: JUMPDEST 000015da: PUSH2 0x161f 000015dd: PUSH2 0x15e5 000015e0: DUP6 000015e1: PUSH2 0x3da6 000015e4: JUMP 000015e5: JUMPDEST 000015e6: SWAP6 000015e7: DUP4 000015e8: PUSH1 0x40 000015ea: MLOAD 000015eb: SWAP5 000015ec: DUP6 000015ed: SWAP5 000015ee: AND 000015ef: SWAP9 000015f0: AND 000015f1: SWAP7 000015f2: CALLER 000015f3: DUP5 000015f4: PUSH1 0x40 000015f6: SWAP2 000015f7: SWAP5 000015f8: SWAP4 000015f9: SWAP3 000015fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000160f: PUSH1 0x60 00001611: DUP4 00001612: ADD 00001613: SWAP7 00001614: AND 00001615: DUP3 00001616: MSTORE 00001617: PUSH1 0x20 00001619: DUP3 0000161a: ADD 0000161b: MSTORE 0000161c: ADD 0000161d: MSTORE 0000161e: JUMP 0000161f: JUMPDEST 00001620: SUB 00001621: SWAP1 00001622: LOG4 00001623: PUSH1 0x40 00001625: MLOAD 00001626: SWAP1 00001627: DUP2 00001628: MSTORE 00001629: SWAP1 0000162a: DUP2 0000162b: SWAP1 0000162c: PUSH1 0x20 0000162e: DUP3 0000162f: ADD 00001630: SWAP1 00001631: JUMP 00001632: JUMPDEST 00001633: SUB 00001634: SWAP1 00001635: LOG1 00001636: STOP 00001637: JUMPDEST 00001638: PUSH2 0x1657 0000163b: PUSH1 0x03 0000163d: PUSH2 0x164e 00001640: DUP6 00001641: PUSH0 00001642: MSTORE 00001643: PUSH1 0x0b 00001645: PUSH1 0x20 00001647: MSTORE 00001648: PUSH1 0x40 0000164a: PUSH0 0000164b: KECCAK256 0000164c: SWAP1 0000164d: JUMP 0000164e: JUMPDEST 0000164f: ADD 00001650: SWAP2 00001651: DUP3 00001652: SLOAD 00001653: PUSH2 0x3b6d 00001656: JUMP 00001657: JUMPDEST 00001658: SWAP1 00001659: SSTORE 0000165a: PUSH0 0000165b: PUSH2 0x143a 0000165e: JUMP 0000165f: JUMPDEST 00001660: PUSH2 0x16c7 00001663: PUSH2 0x168d 00001666: PUSH2 0x1677 00001669: DUP5 0000166a: PUSH0 0000166b: MSTORE 0000166c: PUSH1 0x0b 0000166e: PUSH1 0x20 00001670: MSTORE 00001671: PUSH1 0x40 00001673: PUSH0 00001674: KECCAK256 00001675: SWAP1 00001676: JUMP 00001677: JUMPDEST 00001678: SLOAD 00001679: PUSH16 0xffffffffffffffffffffffffffffffff 0000168a: AND 0000168b: SWAP1 0000168c: JUMP 0000168d: JUMPDEST 0000168e: PUSH16 0xffffffffffffffffffffffffffffffff 0000169f: PUSH2 0x16c0 000016a2: PUSH1 0x02 000016a4: PUSH2 0x16b5 000016a7: DUP8 000016a8: PUSH0 000016a9: MSTORE 000016aa: PUSH1 0x0b 000016ac: PUSH1 0x20 000016ae: MSTORE 000016af: PUSH1 0x40 000016b1: PUSH0 000016b2: KECCAK256 000016b3: SWAP1 000016b4: JUMP 000016b5: JUMPDEST 000016b6: ADD 000016b7: SLOAD 000016b8: PUSH1 0xa0 000016ba: SHR 000016bb: PUSH1 0xff 000016bd: AND 000016be: SWAP1 000016bf: JUMP 000016c0: JUMPDEST 000016c1: SWAP2 000016c2: AND 000016c3: PUSH2 0x4e0d 000016c6: JUMP 000016c7: JUMPDEST 000016c8: PUSH1 0x03 000016ca: PUSH2 0x16db 000016cd: DUP5 000016ce: PUSH0 000016cf: MSTORE 000016d0: PUSH1 0x0b 000016d2: PUSH1 0x20 000016d4: MSTORE 000016d5: PUSH1 0x40 000016d7: PUSH0 000016d8: KECCAK256 000016d9: SWAP1 000016da: JUMP 000016db: JUMPDEST 000016dc: ADD 000016dd: SSTORE 000016de: PUSH2 0x143c 000016e1: JUMP 000016e2: JUMPDEST 000016e3: PUSH32 0xa9ad2a2200000000000000000000000000000000000000000000000000000000 00001704: PUSH0 00001705: MSTORE 00001706: PUSH1 0x04 00001708: MSTORE 00001709: CALLER 0000170a: PUSH1 0x24 0000170c: MSTORE 0000170d: PUSH1 0x44 0000170f: PUSH0 00001710: REVERT 00001711: JUMPDEST 00001712: POP 00001713: PUSH2 0x1737 00001716: PUSH2 0x1733 00001719: PUSH2 0x172d 0000171c: PUSH2 0x15bf 0000171f: DUP5 00001720: PUSH0 00001721: MSTORE 00001722: PUSH1 0x03 00001724: PUSH1 0x20 00001726: MSTORE 00001727: PUSH1 0x40 00001729: PUSH0 0000172a: KECCAK256 0000172b: SWAP1 0000172c: JUMP 0000172d: JUMPDEST 0000172e: DUP4 0000172f: PUSH2 0x5734 00001732: JUMP 00001733: JUMPDEST 00001734: ISZERO 00001735: SWAP1 00001736: JUMP 00001737: JUMPDEST 00001738: PUSH2 0x13f4 0000173b: JUMP 0000173c: JUMPDEST 0000173d: PUSH32 0x271c0f9d00000000000000000000000000000000000000000000000000000000 0000175e: PUSH0 0000175f: MSTORE 00001760: PUSH1 0x04 00001762: MSTORE 00001763: PUSH1 0x24 00001765: PUSH0 00001766: REVERT 00001767: JUMPDEST 00001768: PUSH1 0xc0 0000176a: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 0000178b: CALLDATASIZE 0000178c: ADD 0000178d: SLT 0000178e: PUSH2 0x03fe 00001791: JUMPI 00001792: PUSH1 0x20 00001794: PUSH2 0x0793 00001797: PUSH1 0x04 00001799: CALLDATALOAD 0000179a: PUSH2 0x17a2 0000179d: DUP2 0000179e: PUSH2 0x079b 000017a1: JUMP 000017a2: JUMPDEST 000017a3: PUSH1 0x24 000017a5: CALLDATALOAD 000017a6: PUSH2 0x17ae 000017a9: DUP2 000017aa: PUSH2 0x079b 000017ad: JUMP 000017ae: JUMPDEST 000017af: PUSH1 0x44 000017b1: CALLDATALOAD 000017b2: PUSH2 0x17ba 000017b5: DUP2 000017b6: PUSH2 0x0dea 000017b9: JUMP 000017ba: JUMPDEST 000017bb: PUSH2 0x17c2 000017be: PUSH2 0x1001 000017c1: JUMP 000017c2: JUMPDEST 000017c3: SWAP1 000017c4: PUSH1 0x84 000017c6: CALLDATALOAD 000017c7: SWAP3 000017c8: PUSH2 0x17d0 000017cb: DUP5 000017cc: PUSH2 0x079b 000017cf: JUMP 000017d0: JUMPDEST 000017d1: PUSH1 0xa4 000017d3: CALLDATALOAD 000017d4: SWAP5 000017d5: PUSH2 0x10a4 000017d8: DUP7 000017d9: PUSH2 0x1015 000017dc: JUMP 000017dd: JUMPDEST 000017de: CALLVALUE 000017df: PUSH2 0x03fe 000017e2: JUMPI 000017e3: PUSH0 000017e4: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00001805: CALLDATASIZE 00001806: ADD 00001807: SLT 00001808: PUSH2 0x03fe 0000180b: JUMPI 0000180c: PUSH1 0x20 0000180e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001823: PUSH0 00001824: SLOAD 00001825: AND 00001826: PUSH1 0x40 00001828: MLOAD 00001829: SWAP1 0000182a: DUP2 0000182b: MSTORE 0000182c: RETURN 0000182d: JUMPDEST 0000182e: CALLVALUE 0000182f: PUSH2 0x03fe 00001832: JUMPI 00001833: PUSH1 0x20 00001835: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00001856: CALLDATASIZE 00001857: ADD 00001858: SLT 00001859: PUSH2 0x03fe 0000185c: JUMPI 0000185d: PUSH1 0x20 0000185f: PUSH2 0x1869 00001862: PUSH1 0x04 00001864: CALLDATALOAD 00001865: PUSH2 0x3d04 00001868: JUMP 00001869: JUMPDEST 0000186a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000187f: PUSH1 0x40 00001881: MLOAD 00001882: SWAP2 00001883: AND 00001884: DUP2 00001885: MSTORE 00001886: RETURN 00001887: JUMPDEST 00001888: CALLVALUE 00001889: PUSH2 0x03fe 0000188c: JUMPI 0000188d: PUSH1 0x40 0000188f: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 000018b0: CALLDATASIZE 000018b1: ADD 000018b2: SLT 000018b3: PUSH2 0x03fe 000018b6: JUMPI 000018b7: PUSH1 0x04 000018b9: CALLDATALOAD 000018ba: PUSH2 0x18c2 000018bd: DUP2 000018be: PUSH2 0x079b 000018c1: JUMP 000018c2: JUMPDEST 000018c3: PUSH1 0x24 000018c5: CALLDATALOAD 000018c6: PUSH2 0x18ce 000018c9: DUP2 000018ca: PUSH2 0x079b 000018cd: JUMP 000018ce: JUMPDEST 000018cf: PUSH2 0x18d6 000018d2: PUSH2 0x4b4f 000018d5: JUMP 000018d6: JUMPDEST 000018d7: PUSH1 0x40 000018d9: MLOAD 000018da: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000 000018fb: DUP2 000018fc: MSTORE 000018fd: ADDRESS 000018fe: PUSH1 0x04 00001900: DUP3 00001901: ADD 00001902: MSTORE 00001903: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001918: DUP4 00001919: AND 0000191a: SWAP3 0000191b: SWAP1 0000191c: PUSH1 0x20 0000191e: DUP2 0000191f: PUSH1 0x24 00001921: DUP2 00001922: DUP8 00001923: GAS 00001924: STATICCALL 00001925: DUP1 00001926: ISZERO 00001927: PUSH2 0x1a70 0000192a: JUMPI 0000192b: PUSH2 0x1965 0000192e: SWAP2 0000192f: PUSH0 00001930: SWAP2 00001931: PUSH2 0x1a41 00001934: JUMPI 00001935: JUMPDEST 00001936: POP 00001937: PUSH2 0x195e 0000193a: DUP4 0000193b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001950: AND 00001951: PUSH0 00001952: MSTORE 00001953: PUSH1 0x07 00001955: PUSH1 0x20 00001957: MSTORE 00001958: PUSH1 0x40 0000195a: PUSH0 0000195b: KECCAK256 0000195c: SWAP1 0000195d: JUMP 0000195e: JUMPDEST 0000195f: SLOAD 00001960: SWAP1 00001961: PUSH2 0x38e5 00001964: JUMP 00001965: JUMPDEST 00001966: SWAP1 00001967: DUP2 00001968: ISZERO 00001969: PUSH2 0x19ff 0000196c: JUMPI 0000196d: SWAP1 0000196e: PUSH2 0x1999 00001971: DUP2 00001972: DUP5 00001973: PUSH32 0x21252411d5a999da4bc6a490f7143b61ba690edceb4577a2800eab8dfbb1e92c 00001994: SWAP5 00001995: PUSH2 0x4ba0 00001998: JUMP 00001999: JUMPDEST 0000199a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000019af: PUSH2 0x19cc 000019b2: PUSH0 000019b3: SLOAD 000019b4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000019c9: AND 000019ca: SWAP1 000019cb: JUMP 000019cc: JUMPDEST 000019cd: PUSH1 0x40 000019cf: DUP1 000019d0: MLOAD 000019d1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000019e6: SWAP1 000019e7: SWAP7 000019e8: AND 000019e9: DUP7 000019ea: MSTORE 000019eb: PUSH1 0x20 000019ed: DUP7 000019ee: ADD 000019ef: SWAP4 000019f0: SWAP1 000019f1: SWAP4 000019f2: MSTORE 000019f3: AND 000019f4: SWAP3 000019f5: SWAP1 000019f6: DUP2 000019f7: SWAP1 000019f8: DUP2 000019f9: ADD 000019fa: JUMPDEST 000019fb: SUB 000019fc: SWAP1 000019fd: LOG3 000019fe: STOP 000019ff: JUMPDEST 00001a00: PUSH32 0x9d00036900000000000000000000000000000000000000000000000000000000 00001a21: PUSH0 00001a22: MSTORE 00001a23: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a38: DUP5 00001a39: AND 00001a3a: PUSH1 0x04 00001a3c: MSTORE 00001a3d: PUSH1 0x24 00001a3f: PUSH0 00001a40: REVERT 00001a41: JUMPDEST 00001a42: PUSH2 0x1a63 00001a45: SWAP2 00001a46: POP 00001a47: PUSH1 0x20 00001a49: RETURNDATASIZE 00001a4a: PUSH1 0x20 00001a4c: GT 00001a4d: PUSH2 0x1a69 00001a50: JUMPI 00001a51: JUMPDEST 00001a52: PUSH2 0x1a5b 00001a55: DUP2 00001a56: DUP4 00001a57: PUSH2 0x2c47 00001a5a: JUMP 00001a5b: JUMPDEST 00001a5c: DUP2 00001a5d: ADD 00001a5e: SWAP1 00001a5f: PUSH2 0x386c 00001a62: JUMP 00001a63: JUMPDEST 00001a64: PUSH0 00001a65: PUSH2 0x1935 00001a68: JUMP 00001a69: JUMPDEST 00001a6a: POP 00001a6b: RETURNDATASIZE 00001a6c: PUSH2 0x1a51 00001a6f: JUMP 00001a70: JUMPDEST 00001a71: PUSH2 0x387b 00001a74: JUMP 00001a75: JUMPDEST 00001a76: CALLVALUE 00001a77: PUSH2 0x03fe 00001a7a: JUMPI 00001a7b: PUSH1 0x20 00001a7d: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00001a9e: CALLDATASIZE 00001a9f: ADD 00001aa0: SLT 00001aa1: PUSH2 0x03fe 00001aa4: JUMPI 00001aa5: PUSH1 0x20 00001aa7: PUSH2 0x1869 00001aaa: PUSH1 0x04 00001aac: CALLDATALOAD 00001aad: PUSH2 0x1ab5 00001ab0: DUP2 00001ab1: PUSH2 0x3d5d 00001ab4: JUMP 00001ab5: JUMPDEST 00001ab6: PUSH2 0x3d04 00001ab9: JUMP 00001aba: JUMPDEST 00001abb: CALLVALUE 00001abc: PUSH2 0x03fe 00001abf: JUMPI 00001ac0: PUSH1 0x20 00001ac2: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00001ae3: CALLDATASIZE 00001ae4: ADD 00001ae5: SLT 00001ae6: PUSH2 0x03fe 00001ae9: JUMPI 00001aea: PUSH1 0x04 00001aec: CALLDATALOAD 00001aed: PUSH2 0x1af5 00001af0: DUP2 00001af1: PUSH2 0x079b 00001af4: JUMP 00001af5: JUMPDEST 00001af6: PUSH2 0x1afd 00001af9: PUSH2 0x4b4f 00001afc: JUMP 00001afd: JUMPDEST 00001afe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b13: DUP2 00001b14: AND 00001b15: ISZERO 00001b16: PUSH2 0x1c2d 00001b19: JUMPI 00001b1a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b2f: PUSH1 0x08 00001b31: SLOAD 00001b32: AND 00001b33: DUP1 00001b34: PUSH2 0x1c02 00001b37: JUMPI 00001b38: POP 00001b39: PUSH2 0x1b7d 00001b3c: DUP2 00001b3d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b52: AND 00001b53: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00001b74: PUSH1 0x08 00001b76: SLOAD 00001b77: AND 00001b78: OR 00001b79: PUSH1 0x08 00001b7b: SSTORE 00001b7c: JUMP 00001b7d: JUMPDEST 00001b7e: PUSH32 0x7b0a5ae0a2e8f0dc2ec7555098e00dd4af1418ee3fd1bcf9bb14f6990c10fa92 00001b9f: PUSH2 0x1bfd 00001ba2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001bb7: PUSH2 0x1bd4 00001bba: PUSH0 00001bbb: SLOAD 00001bbc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001bd1: AND 00001bd2: SWAP1 00001bd3: JUMP 00001bd4: JUMPDEST 00001bd5: PUSH1 0x40 00001bd7: MLOAD 00001bd8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001bed: SWAP1 00001bee: SWAP6 00001bef: AND 00001bf0: DUP6 00001bf1: MSTORE 00001bf2: AND 00001bf3: SWAP3 00001bf4: SWAP1 00001bf5: DUP2 00001bf6: SWAP1 00001bf7: PUSH1 0x20 00001bf9: DUP3 00001bfa: ADD 00001bfb: SWAP1 00001bfc: JUMP 00001bfd: JUMPDEST 00001bfe: SUB 00001bff: SWAP1 00001c00: LOG2 00001c01: STOP 00001c02: JUMPDEST 00001c03: PUSH32 0x25139c2b00000000000000000000000000000000000000000000000000000000 00001c24: PUSH0 00001c25: MSTORE 00001c26: PUSH1 0x04 00001c28: MSTORE 00001c29: PUSH1 0x24 00001c2b: PUSH0 00001c2c: REVERT 00001c2d: JUMPDEST 00001c2e: PUSH32 0xa20dc5d200000000000000000000000000000000000000000000000000000000 00001c4f: PUSH0 00001c50: MSTORE 00001c51: PUSH1 0x04 00001c53: PUSH0 00001c54: REVERT 00001c55: JUMPDEST 00001c56: CALLVALUE 00001c57: PUSH2 0x03fe 00001c5a: JUMPI 00001c5b: PUSH1 0x20 00001c5d: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00001c7e: CALLDATASIZE 00001c7f: ADD 00001c80: SLT 00001c81: PUSH2 0x03fe 00001c84: JUMPI 00001c85: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001c9a: PUSH1 0x04 00001c9c: CALLDATALOAD 00001c9d: PUSH2 0x1ca5 00001ca0: DUP2 00001ca1: PUSH2 0x079b 00001ca4: JUMP 00001ca5: JUMPDEST 00001ca6: AND 00001ca7: DUP1 00001ca8: ISZERO 00001ca9: PUSH2 0x1cc2 00001cac: JUMPI 00001cad: PUSH0 00001cae: MSTORE 00001caf: PUSH1 0x04 00001cb1: PUSH1 0x20 00001cb3: MSTORE 00001cb4: PUSH1 0x20 00001cb6: PUSH1 0x40 00001cb8: PUSH0 00001cb9: KECCAK256 00001cba: SLOAD 00001cbb: PUSH1 0x40 00001cbd: MLOAD 00001cbe: SWAP1 00001cbf: DUP2 00001cc0: MSTORE 00001cc1: RETURN 00001cc2: JUMPDEST 00001cc3: PUSH32 0x89c62b6400000000000000000000000000000000000000000000000000000000 00001ce4: PUSH0 00001ce5: MSTORE 00001ce6: PUSH0 00001ce7: PUSH1 0x04 00001ce9: MSTORE 00001cea: PUSH1 0x24 00001cec: PUSH0 00001ced: REVERT 00001cee: JUMPDEST 00001cef: CALLVALUE 00001cf0: PUSH2 0x03fe 00001cf3: JUMPI 00001cf4: PUSH0 00001cf5: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00001d16: CALLDATASIZE 00001d17: ADD 00001d18: SLT 00001d19: PUSH2 0x03fe 00001d1c: JUMPI 00001d1d: SELFBALANCE 00001d1e: PUSH0 00001d1f: DUP1 00001d20: DUP1 00001d21: DUP1 00001d22: DUP5 00001d23: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d38: DUP3 00001d39: SLOAD 00001d3a: AND 00001d3b: GAS 00001d3c: CALL 00001d3d: POP 00001d3e: PUSH2 0x1d45 00001d41: PUSH2 0x36cb 00001d44: JUMP 00001d45: JUMPDEST 00001d46: POP 00001d47: PUSH32 0x56dedb874d4fc0f70753f281fa2c25e82085163206086fe826cf834b51701f6c 00001d68: PUSH1 0x20 00001d6a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d7f: PUSH0 00001d80: SLOAD 00001d81: AND 00001d82: SWAP3 00001d83: PUSH1 0x40 00001d85: MLOAD 00001d86: SWAP1 00001d87: DUP2 00001d88: MSTORE 00001d89: LOG2 00001d8a: STOP 00001d8b: JUMPDEST 00001d8c: CALLVALUE 00001d8d: PUSH2 0x03fe 00001d90: JUMPI 00001d91: PUSH1 0x20 00001d93: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00001db4: CALLDATASIZE 00001db5: ADD 00001db6: SLT 00001db7: PUSH2 0x03fe 00001dba: JUMPI 00001dbb: PUSH1 0x04 00001dbd: CALLDATALOAD 00001dbe: PUSH2 0x1dc6 00001dc1: DUP2 00001dc2: PUSH2 0x079b 00001dc5: JUMP 00001dc6: JUMPDEST 00001dc7: PUSH2 0x1dce 00001dca: PUSH2 0x4b4f 00001dcd: JUMP 00001dce: JUMPDEST 00001dcf: PUSH32 0xa2548bd4b805e907c1558a47b5858324fe8bb4a2e1ddfca647eecbf65610eebc 00001df0: PUSH1 0x40 00001df2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e07: PUSH1 0x0a 00001e09: SLOAD 00001e0a: SWAP4 00001e0b: AND 00001e0c: SWAP3 00001e0d: DUP4 00001e0e: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00001e2f: DUP3 00001e30: AND 00001e31: OR 00001e32: PUSH1 0x0a 00001e34: SSTORE 00001e35: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e4a: PUSH0 00001e4b: SLOAD 00001e4c: AND 00001e4d: SWAP4 00001e4e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e63: DUP4 00001e64: MLOAD 00001e65: SWAP3 00001e66: AND 00001e67: DUP3 00001e68: MSTORE 00001e69: PUSH1 0x20 00001e6b: DUP3 00001e6c: ADD 00001e6d: MSTORE 00001e6e: LOG2 00001e6f: PUSH32 0x6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c 00001e90: PUSH2 0x1632 00001e93: PUSH2 0x1e9d 00001e96: PUSH1 0x09 00001e98: SLOAD 00001e99: PUSH2 0x38b3 00001e9c: JUMP 00001e9d: JUMPDEST 00001e9e: PUSH1 0x40 00001ea0: MLOAD 00001ea1: SWAP2 00001ea2: DUP3 00001ea3: SWAP2 00001ea4: DUP3 00001ea5: SWAP2 00001ea6: SWAP1 00001ea7: PUSH1 0x20 00001ea9: PUSH1 0x40 00001eab: DUP5 00001eac: ADD 00001ead: SWAP4 00001eae: PUSH1 0x01 00001eb0: DUP2 00001eb1: MSTORE 00001eb2: ADD 00001eb3: MSTORE 00001eb4: JUMP 00001eb5: JUMPDEST 00001eb6: CALLVALUE 00001eb7: PUSH2 0x03fe 00001eba: JUMPI 00001ebb: PUSH1 0x20 00001ebd: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00001ede: CALLDATASIZE 00001edf: ADD 00001ee0: SLT 00001ee1: PUSH2 0x03fe 00001ee4: JUMPI 00001ee5: PUSH1 0x20 00001ee7: PUSH2 0x0793 00001eea: PUSH1 0x04 00001eec: CALLDATALOAD 00001eed: PUSH2 0x1ef5 00001ef0: DUP2 00001ef1: PUSH2 0x3d5d 00001ef4: JUMP 00001ef5: JUMPDEST 00001ef6: PUSH2 0x4c02 00001ef9: JUMP 00001efa: JUMPDEST 00001efb: CALLVALUE 00001efc: PUSH2 0x03fe 00001eff: JUMPI 00001f00: PUSH1 0x20 00001f02: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00001f23: CALLDATASIZE 00001f24: ADD 00001f25: SLT 00001f26: PUSH2 0x03fe 00001f29: JUMPI 00001f2a: PUSH1 0x04 00001f2c: CALLDATALOAD 00001f2d: PUSH2 0x1f35 00001f30: DUP2 00001f31: PUSH2 0x3d5d 00001f34: JUMP 00001f35: JUMPDEST 00001f36: PUSH0 00001f37: MSTORE 00001f38: PUSH1 0x0b 00001f3a: PUSH1 0x20 00001f3c: MSTORE 00001f3d: PUSH1 0x40 00001f3f: PUSH0 00001f40: KECCAK256 00001f41: SLOAD 00001f42: PUSH1 0x80 00001f44: SHR 00001f45: PUSH1 0x40 00001f47: MLOAD 00001f48: DUP1 00001f49: SWAP2 00001f4a: PUSH16 0xffffffffffffffffffffffffffffffff 00001f5b: PUSH1 0x20 00001f5d: DUP4 00001f5e: ADD 00001f5f: SWAP2 00001f60: AND 00001f61: DUP3 00001f62: MSTORE 00001f63: SUB 00001f64: SWAP1 00001f65: RETURN 00001f66: JUMPDEST 00001f67: PUSH1 0x40 00001f69: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00001f8a: CALLDATASIZE 00001f8b: ADD 00001f8c: SLT 00001f8d: PUSH2 0x03fe 00001f90: JUMPI 00001f91: PUSH1 0x04 00001f93: CALLDATALOAD 00001f94: PUSH1 0x24 00001f96: CALLDATALOAD 00001f97: PUSH2 0x1f9f 00001f9a: DUP2 00001f9b: PUSH2 0x0dea 00001f9e: JUMP 00001f9f: JUMPDEST 00001fa0: PUSH2 0x1fa7 00001fa3: PUSH2 0x3de7 00001fa6: JUMP 00001fa7: JUMPDEST 00001fa8: PUSH2 0x1fb0 00001fab: DUP3 00001fac: PUSH2 0x3d5d 00001faf: JUMP 00001fb0: JUMPDEST 00001fb1: DUP2 00001fb2: PUSH0 00001fb3: MSTORE 00001fb4: PUSH1 0x0b 00001fb6: PUSH1 0x20 00001fb8: MSTORE 00001fb9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001fce: PUSH1 0x01 00001fd0: PUSH1 0x40 00001fd2: PUSH0 00001fd3: KECCAK256 00001fd4: ADD 00001fd5: SLOAD 00001fd6: AND 00001fd7: CALLER 00001fd8: SUB 00001fd9: PUSH2 0x117a 00001fdc: JUMPI 00001fdd: DUP2 00001fde: PUSH2 0x0afc 00001fe1: PUSH1 0x20 00001fe3: SWAP3 00001fe4: PUSH32 0xf8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7 00002005: SWAP5 00002006: PUSH2 0x3eb2 00002009: JUMP 0000200a: JUMPDEST 0000200b: CALLVALUE 0000200c: PUSH2 0x03fe 0000200f: JUMPI 00002010: PUSH1 0x20 00002012: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00002033: CALLDATASIZE 00002034: ADD 00002035: SLT 00002036: PUSH2 0x03fe 00002039: JUMPI 0000203a: PUSH1 0x04 0000203c: CALLDATALOAD 0000203d: PUSH0 0000203e: PUSH2 0x0120 00002041: PUSH1 0x40 00002043: MLOAD 00002044: PUSH2 0x204c 00002047: DUP2 00002048: PUSH2 0x2c25 0000204b: JUMP 0000204c: JUMPDEST 0000204d: DUP3 0000204e: DUP2 0000204f: MSTORE 00002050: DUP3 00002051: PUSH1 0x20 00002053: DUP3 00002054: ADD 00002055: MSTORE 00002056: DUP3 00002057: PUSH1 0x40 00002059: DUP3 0000205a: ADD 0000205b: MSTORE 0000205c: DUP3 0000205d: PUSH1 0x60 0000205f: DUP3 00002060: ADD 00002061: MSTORE 00002062: DUP3 00002063: PUSH1 0x80 00002065: DUP3 00002066: ADD 00002067: MSTORE 00002068: DUP3 00002069: PUSH1 0xa0 0000206b: DUP3 0000206c: ADD 0000206d: MSTORE 0000206e: DUP3 0000206f: PUSH1 0xc0 00002071: DUP3 00002072: ADD 00002073: MSTORE 00002074: DUP3 00002075: PUSH1 0xe0 00002077: DUP3 00002078: ADD 00002079: MSTORE 0000207a: DUP3 0000207b: PUSH2 0x0100 0000207e: DUP3 0000207f: ADD 00002080: MSTORE 00002081: ADD 00002082: MSTORE 00002083: PUSH2 0x208b 00002086: DUP2 00002087: PUSH2 0x3d5d 0000208a: JUMP 0000208b: JUMPDEST 0000208c: PUSH0 0000208d: MSTORE 0000208e: PUSH1 0x0b 00002090: PUSH1 0x20 00002092: MSTORE 00002093: PUSH2 0x0622 00002096: PUSH1 0x40 00002098: PUSH0 00002099: KECCAK256 0000209a: PUSH1 0x03 0000209c: PUSH2 0x20a3 0000209f: PUSH2 0x2c88 000020a2: JUMP 000020a3: JUMPDEST 000020a4: SWAP2 000020a5: PUSH2 0x20fd 000020a8: PUSH2 0x20e4 000020ab: DUP3 000020ac: SLOAD 000020ad: PUSH2 0x20de 000020b0: PUSH2 0x20c8 000020b3: DUP3 000020b4: PUSH16 0xffffffffffffffffffffffffffffffff 000020c5: AND 000020c6: SWAP1 000020c7: JUMP 000020c8: JUMPDEST 000020c9: PUSH16 0xffffffffffffffffffffffffffffffff 000020da: AND 000020db: DUP8 000020dc: MSTORE 000020dd: JUMP 000020de: JUMPDEST 000020df: PUSH1 0x80 000020e1: SHR 000020e2: SWAP1 000020e3: JUMP 000020e4: JUMPDEST 000020e5: PUSH16 0xffffffffffffffffffffffffffffffff 000020f6: AND 000020f7: PUSH1 0x20 000020f9: DUP6 000020fa: ADD 000020fb: MSTORE 000020fc: JUMP 000020fd: JUMPDEST 000020fe: PUSH2 0x2190 00002101: PUSH2 0x2187 00002104: PUSH1 0x01 00002106: DUP4 00002107: ADD 00002108: SLOAD 00002109: PUSH2 0x2145 0000210c: PUSH2 0x2128 0000210f: DUP3 00002110: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002125: AND 00002126: SWAP1 00002127: JUMP 00002128: JUMPDEST 00002129: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000213e: AND 0000213f: PUSH1 0x40 00002141: DUP9 00002142: ADD 00002143: MSTORE 00002144: JUMP 00002145: JUMPDEST 00002146: PUSH5 0xffffffffff 0000214c: PUSH1 0xa0 0000214e: DUP3 0000214f: SWAP1 00002150: SHR 00002151: AND 00002152: PUSH1 0x60 00002154: DUP8 00002155: ADD 00002156: MSTORE 00002157: PUSH2 0x216a 0000215a: PUSH1 0xc8 0000215c: DUP3 0000215d: SWAP1 0000215e: SHR 0000215f: PUSH1 0xff 00002161: AND 00002162: ISZERO 00002163: ISZERO 00002164: PUSH1 0x80 00002166: DUP9 00002167: ADD 00002168: MSTORE 00002169: JUMP 0000216a: JUMPDEST 0000216b: PUSH2 0x217e 0000216e: PUSH1 0xd0 00002170: DUP3 00002171: SWAP1 00002172: SHR 00002173: PUSH1 0xff 00002175: AND 00002176: ISZERO 00002177: ISZERO 00002178: PUSH1 0xa0 0000217a: DUP9 0000217b: ADD 0000217c: MSTORE 0000217d: JUMP 0000217e: JUMPDEST 0000217f: PUSH1 0xd8 00002181: SHR 00002182: PUSH1 0xff 00002184: AND 00002185: SWAP1 00002186: JUMP 00002187: JUMPDEST 00002188: ISZERO 00002189: ISZERO 0000218a: PUSH1 0xc0 0000218c: DUP6 0000218d: ADD 0000218e: MSTORE 0000218f: JUMP 00002190: JUMPDEST 00002191: PUSH2 0x21ec 00002194: PUSH2 0x21e1 00002197: PUSH1 0x02 00002199: DUP4 0000219a: ADD 0000219b: SLOAD 0000219c: PUSH2 0x21d8 0000219f: PUSH2 0x21bb 000021a2: DUP3 000021a3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000021b8: AND 000021b9: SWAP1 000021ba: JUMP 000021bb: JUMPDEST 000021bc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000021d1: AND 000021d2: PUSH1 0xe0 000021d4: DUP9 000021d5: ADD 000021d6: MSTORE 000021d7: JUMP 000021d8: JUMPDEST 000021d9: PUSH1 0xa0 000021db: SHR 000021dc: PUSH1 0xff 000021de: AND 000021df: SWAP1 000021e0: JUMP 000021e1: JUMPDEST 000021e2: PUSH1 0xff 000021e4: AND 000021e5: PUSH2 0x0100 000021e8: DUP6 000021e9: ADD 000021ea: MSTORE 000021eb: JUMP 000021ec: JUMPDEST 000021ed: ADD 000021ee: SLOAD 000021ef: PUSH2 0x0120 000021f2: DUP3 000021f3: ADD 000021f4: MSTORE 000021f5: PUSH1 0x40 000021f7: MLOAD 000021f8: SWAP2 000021f9: DUP3 000021fa: SWAP2 000021fb: DUP3 000021fc: DUP2 000021fd: MLOAD 000021fe: PUSH16 0xffffffffffffffffffffffffffffffff 0000220f: AND 00002210: DUP2 00002211: MSTORE 00002212: PUSH2 0x0140 00002215: DUP2 00002216: ADD 00002217: SWAP3 00002218: SWAP2 00002219: PUSH2 0x0120 0000221c: SWAP1 0000221d: DUP2 0000221e: SWAP1 0000221f: PUSH1 0x20 00002221: DUP2 00002222: DUP2 00002223: ADD 00002224: MLOAD 00002225: PUSH16 0xffffffffffffffffffffffffffffffff 00002236: AND 00002237: SWAP1 00002238: DUP6 00002239: ADD 0000223a: MSTORE 0000223b: PUSH1 0x40 0000223d: DUP2 0000223e: DUP2 0000223f: ADD 00002240: MLOAD 00002241: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002256: AND 00002257: SWAP1 00002258: DUP6 00002259: ADD 0000225a: MSTORE 0000225b: PUSH1 0x60 0000225d: DUP2 0000225e: DUP2 0000225f: ADD 00002260: MLOAD 00002261: PUSH5 0xffffffffff 00002267: AND 00002268: SWAP1 00002269: DUP6 0000226a: ADD 0000226b: MSTORE 0000226c: PUSH1 0x80 0000226e: DUP2 0000226f: DUP2 00002270: ADD 00002271: MLOAD 00002272: ISZERO 00002273: ISZERO 00002274: SWAP1 00002275: DUP6 00002276: ADD 00002277: MSTORE 00002278: PUSH1 0xa0 0000227a: DUP2 0000227b: DUP2 0000227c: ADD 0000227d: MLOAD 0000227e: ISZERO 0000227f: ISZERO 00002280: SWAP1 00002281: DUP6 00002282: ADD 00002283: MSTORE 00002284: PUSH1 0xc0 00002286: DUP2 00002287: DUP2 00002288: ADD 00002289: MLOAD 0000228a: ISZERO 0000228b: ISZERO 0000228c: SWAP1 0000228d: DUP6 0000228e: ADD 0000228f: MSTORE 00002290: PUSH1 0xe0 00002292: DUP2 00002293: DUP2 00002294: ADD 00002295: MLOAD 00002296: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000022ab: AND 000022ac: SWAP1 000022ad: DUP6 000022ae: ADD 000022af: MSTORE 000022b0: PUSH2 0x0100 000022b3: DUP2 000022b4: DUP2 000022b5: ADD 000022b6: MLOAD 000022b7: PUSH1 0xff 000022b9: AND 000022ba: SWAP1 000022bb: DUP6 000022bc: ADD 000022bd: MSTORE 000022be: ADD 000022bf: MLOAD 000022c0: SWAP2 000022c1: ADD 000022c2: MSTORE 000022c3: JUMP 000022c4: JUMPDEST 000022c5: CALLVALUE 000022c6: PUSH2 0x03fe 000022c9: JUMPI 000022ca: PUSH1 0x20 000022cc: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 000022ed: CALLDATASIZE 000022ee: ADD 000022ef: SLT 000022f0: PUSH2 0x03fe 000022f3: JUMPI 000022f4: PUSH1 0x04 000022f6: CALLDATALOAD 000022f7: PUSH2 0x22ff 000022fa: DUP2 000022fb: PUSH2 0x079b 000022fe: JUMP 000022ff: JUMPDEST 00002300: PUSH2 0x2307 00002303: PUSH2 0x4b4f 00002306: JUMP 00002307: JUMPDEST 00002308: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000231d: PUSH0 0000231e: SLOAD 0000231f: AND 00002320: SWAP1 00002321: PUSH1 0x40 00002323: MLOAD 00002324: PUSH32 0xc34df33e00000000000000000000000000000000000000000000000000000000 00002345: DUP2 00002346: MSTORE 00002347: PUSH1 0x20 00002349: DUP2 0000234a: PUSH1 0x04 0000234c: DUP2 0000234d: DUP7 0000234e: GAS 0000234f: STATICCALL 00002350: SWAP1 00002351: DUP2 00002352: ISZERO 00002353: PUSH2 0x1a70 00002356: JUMPI 00002357: PUSH0 00002358: SWAP2 00002359: PUSH2 0x2512 0000235c: JUMPI 0000235d: JUMPDEST 0000235e: POP 0000235f: PUSH1 0x40 00002361: MLOAD 00002362: PUSH32 0x01ffc9a700000000000000000000000000000000000000000000000000000000 00002383: DUP2 00002384: MSTORE 00002385: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 000023a6: DUP3 000023a7: AND 000023a8: PUSH1 0x04 000023aa: DUP3 000023ab: ADD 000023ac: MSTORE 000023ad: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000023c2: DUP4 000023c3: AND 000023c4: SWAP1 000023c5: PUSH1 0x20 000023c7: DUP2 000023c8: PUSH1 0x24 000023ca: DUP2 000023cb: DUP6 000023cc: GAS 000023cd: STATICCALL 000023ce: SWAP1 000023cf: DUP2 000023d0: ISZERO 000023d1: PUSH2 0x1a70 000023d4: JUMPI 000023d5: PUSH0 000023d6: SWAP2 000023d7: PUSH2 0x24e3 000023da: JUMPI 000023db: JUMPDEST 000023dc: POP 000023dd: ISZERO 000023de: PUSH2 0x2477 000023e1: JUMPI 000023e2: PUSH32 0xf45d882a72fce9d8d7a7e2e196a338d4d9d4057510b4b9ddf91a7066104d2eaf 00002403: DUP4 00002404: DUP6 00002405: PUSH2 0x2447 00002408: DUP3 00002409: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000241e: AND 0000241f: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00002440: PUSH0 00002441: SLOAD 00002442: AND 00002443: OR 00002444: PUSH0 00002445: SSTORE 00002446: JUMP 00002447: JUMPDEST 00002448: PUSH1 0x40 0000244a: DUP1 0000244b: MLOAD 0000244c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002461: SWAP3 00002462: DUP4 00002463: AND 00002464: DUP2 00002465: MSTORE 00002466: SWAP3 00002467: SWAP1 00002468: SWAP2 00002469: AND 0000246a: PUSH1 0x20 0000246c: DUP4 0000246d: ADD 0000246e: MSTORE 0000246f: DUP2 00002470: SWAP1 00002471: DUP2 00002472: ADD 00002473: PUSH2 0x1632 00002476: JUMP 00002477: JUMPDEST 00002478: PUSH32 0xc9947bc200000000000000000000000000000000000000000000000000000000 00002499: PUSH0 0000249a: MSTORE 0000249b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000024b0: DUP1 000024b1: DUP6 000024b2: AND 000024b3: PUSH1 0x04 000024b5: MSTORE 000024b6: AND 000024b7: PUSH1 0x24 000024b9: MSTORE 000024ba: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 000024db: AND 000024dc: PUSH1 0x44 000024de: MSTORE 000024df: PUSH1 0x64 000024e1: PUSH0 000024e2: REVERT 000024e3: JUMPDEST 000024e4: PUSH2 0x2505 000024e7: SWAP2 000024e8: POP 000024e9: PUSH1 0x20 000024eb: RETURNDATASIZE 000024ec: PUSH1 0x20 000024ee: GT 000024ef: PUSH2 0x250b 000024f2: JUMPI 000024f3: JUMPDEST 000024f4: PUSH2 0x24fd 000024f7: DUP2 000024f8: DUP4 000024f9: PUSH2 0x2c47 000024fc: JUMP 000024fd: JUMPDEST 000024fe: DUP2 000024ff: ADD 00002500: SWAP1 00002501: PUSH2 0x4c62 00002504: JUMP 00002505: JUMPDEST 00002506: PUSH0 00002507: PUSH2 0x23db 0000250a: JUMP 0000250b: JUMPDEST 0000250c: POP 0000250d: RETURNDATASIZE 0000250e: PUSH2 0x24f3 00002511: JUMP 00002512: JUMPDEST 00002513: PUSH2 0x2534 00002516: SWAP2 00002517: POP 00002518: PUSH1 0x20 0000251a: RETURNDATASIZE 0000251b: PUSH1 0x20 0000251d: GT 0000251e: PUSH2 0x253a 00002521: JUMPI 00002522: JUMPDEST 00002523: PUSH2 0x252c 00002526: DUP2 00002527: DUP4 00002528: PUSH2 0x2c47 0000252b: JUMP 0000252c: JUMPDEST 0000252d: DUP2 0000252e: ADD 0000252f: SWAP1 00002530: PUSH2 0x38f2 00002533: JUMP 00002534: JUMPDEST 00002535: PUSH0 00002536: PUSH2 0x235d 00002539: JUMP 0000253a: JUMPDEST 0000253b: POP 0000253c: RETURNDATASIZE 0000253d: PUSH2 0x2522 00002540: JUMP 00002541: JUMPDEST 00002542: CALLVALUE 00002543: PUSH2 0x03fe 00002546: JUMPI 00002547: PUSH0 00002548: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00002569: CALLDATASIZE 0000256a: ADD 0000256b: SLT 0000256c: PUSH2 0x03fe 0000256f: JUMPI 00002570: PUSH1 0x40 00002572: MLOAD 00002573: PUSH0 00002574: PUSH1 0x02 00002576: SLOAD 00002577: DUP1 00002578: PUSH1 0x01 0000257a: SHR 0000257b: SWAP1 0000257c: PUSH1 0x01 0000257e: DUP2 0000257f: AND 00002580: SWAP1 00002581: DUP2 00002582: ISZERO 00002583: PUSH2 0x260a 00002586: JUMPI 00002587: JUMPDEST 00002588: PUSH1 0x20 0000258a: DUP4 0000258b: LT 0000258c: DUP3 0000258d: EQ 0000258e: PUSH2 0x06af 00002591: JUMPI 00002592: DUP3 00002593: DUP6 00002594: MSTORE 00002595: PUSH1 0x20 00002597: DUP6 00002598: ADD 00002599: SWAP2 0000259a: SWAP1 0000259b: DUP2 0000259c: ISZERO 0000259d: PUSH2 0x0678 000025a0: JUMPI 000025a1: POP 000025a2: PUSH1 0x01 000025a4: EQ 000025a5: PUSH2 0x25b8 000025a8: JUMPI 000025a9: PUSH2 0x0622 000025ac: DUP5 000025ad: PUSH2 0x0616 000025b0: DUP2 000025b1: DUP7 000025b2: SUB 000025b3: DUP3 000025b4: PUSH2 0x2c47 000025b7: JUMP 000025b8: JUMPDEST 000025b9: PUSH1 0x02 000025bb: PUSH0 000025bc: SWAP1 000025bd: DUP2 000025be: MSTORE 000025bf: SWAP3 000025c0: POP 000025c1: SWAP1 000025c2: PUSH32 0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace 000025e3: JUMPDEST 000025e4: DUP2 000025e5: DUP5 000025e6: LT 000025e7: PUSH2 0x25f6 000025ea: JUMPI 000025eb: POP 000025ec: POP 000025ed: ADD 000025ee: PUSH2 0x0616 000025f1: DUP3 000025f2: PUSH2 0x0606 000025f5: JUMP 000025f6: JUMPDEST 000025f7: DUP1 000025f8: SLOAD 000025f9: DUP5 000025fa: DUP5 000025fb: ADD 000025fc: MSTORE 000025fd: PUSH1 0x20 000025ff: SWAP1 00002600: SWAP4 00002601: ADD 00002602: SWAP3 00002603: PUSH1 0x01 00002605: ADD 00002606: PUSH2 0x25e3 00002609: JUMP 0000260a: JUMPDEST 0000260b: SWAP2 0000260c: PUSH1 0x7f 0000260e: AND 0000260f: SWAP2 00002610: PUSH2 0x2587 00002613: JUMP 00002614: JUMPDEST 00002615: CALLVALUE 00002616: PUSH2 0x03fe 00002619: JUMPI 0000261a: PUSH1 0x40 0000261c: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 0000263d: CALLDATASIZE 0000263e: ADD 0000263f: SLT 00002640: PUSH2 0x03fe 00002643: JUMPI 00002644: PUSH1 0x04 00002646: CALLDATALOAD 00002647: PUSH2 0x264f 0000264a: DUP2 0000264b: PUSH2 0x079b 0000264e: JUMP 0000264f: JUMPDEST 00002650: PUSH1 0x24 00002652: CALLDATALOAD 00002653: PUSH2 0x265b 00002656: DUP2 00002657: PUSH2 0x1015 0000265a: JUMP 0000265b: JUMPDEST 0000265c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002671: DUP3 00002672: AND 00002673: SWAP2 00002674: DUP3 00002675: ISZERO 00002676: PUSH2 0x2712 00002679: JUMPI 0000267a: PUSH2 0x26ac 0000267d: SWAP1 0000267e: CALLER 0000267f: PUSH0 00002680: MSTORE 00002681: PUSH1 0x06 00002683: PUSH1 0x20 00002685: MSTORE 00002686: PUSH1 0x40 00002688: PUSH0 00002689: KECCAK256 0000268a: SWAP1 0000268b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000026a0: AND 000026a1: PUSH0 000026a2: MSTORE 000026a3: PUSH1 0x20 000026a5: MSTORE 000026a6: PUSH1 0x40 000026a8: PUSH0 000026a9: KECCAK256 000026aa: SWAP1 000026ab: JUMP 000026ac: JUMPDEST 000026ad: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 000026ce: DUP2 000026cf: SLOAD 000026d0: AND 000026d1: PUSH1 0xff 000026d3: DUP4 000026d4: ISZERO 000026d5: ISZERO 000026d6: AND 000026d7: OR 000026d8: SWAP1 000026d9: SSTORE 000026da: PUSH32 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31 000026fb: PUSH1 0x40 000026fd: MLOAD 000026fe: DUP1 000026ff: PUSH2 0x19fa 00002702: CALLER 00002703: SWAP5 00002704: DUP3 00002705: SWAP2 00002706: SWAP1 00002707: SWAP2 00002708: PUSH1 0x20 0000270a: DUP2 0000270b: ADD 0000270c: SWAP3 0000270d: ISZERO 0000270e: ISZERO 0000270f: SWAP1 00002710: MSTORE 00002711: JUMP 00002712: JUMPDEST 00002713: DUP3 00002714: PUSH32 0x5b08ba1800000000000000000000000000000000000000000000000000000000 00002735: PUSH0 00002736: MSTORE 00002737: PUSH1 0x04 00002739: MSTORE 0000273a: PUSH1 0x24 0000273c: PUSH0 0000273d: REVERT 0000273e: JUMPDEST 0000273f: CALLVALUE 00002740: PUSH2 0x03fe 00002743: JUMPI 00002744: PUSH1 0x20 00002746: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00002767: CALLDATASIZE 00002768: ADD 00002769: SLT 0000276a: PUSH2 0x03fe 0000276d: JUMPI 0000276e: PUSH1 0x04 00002770: CALLDATALOAD 00002771: PUSH2 0x2779 00002774: DUP2 00002775: PUSH2 0x3d5d 00002778: JUMP 00002779: JUMPDEST 0000277a: PUSH0 0000277b: MSTORE 0000277c: PUSH1 0x0b 0000277e: PUSH1 0x20 00002780: MSTORE 00002781: PUSH1 0x20 00002783: PUSH1 0xff 00002785: PUSH1 0x02 00002787: PUSH1 0x40 00002789: PUSH0 0000278a: KECCAK256 0000278b: ADD 0000278c: SLOAD 0000278d: PUSH1 0xa0 0000278f: SHR 00002790: AND 00002791: PUSH1 0x40 00002793: MLOAD 00002794: SWAP1 00002795: DUP2 00002796: MSTORE 00002797: RETURN 00002798: JUMPDEST 00002799: PUSH1 0x40 0000279b: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 000027bc: CALLDATASIZE 000027bd: ADD 000027be: SLT 000027bf: PUSH2 0x03fe 000027c2: JUMPI 000027c3: PUSH1 0x04 000027c5: CALLDATALOAD 000027c6: PUSH1 0x24 000027c8: CALLDATALOAD 000027c9: PUSH2 0x27d1 000027cc: DUP2 000027cd: PUSH2 0x0dea 000027d0: JUMP 000027d1: JUMPDEST 000027d2: PUSH2 0x27d9 000027d5: PUSH2 0x3de7 000027d8: JUMP 000027d9: JUMPDEST 000027da: PUSH2 0x27e2 000027dd: DUP3 000027de: PUSH2 0x3d5d 000027e1: JUMP 000027e2: JUMPDEST 000027e3: DUP2 000027e4: PUSH0 000027e5: MSTORE 000027e6: PUSH1 0x0b 000027e8: PUSH1 0x20 000027ea: MSTORE 000027eb: PUSH1 0x40 000027ed: PUSH0 000027ee: KECCAK256 000027ef: SLOAD 000027f0: PUSH1 0x80 000027f2: SHR 000027f3: ISZERO 000027f4: PUSH2 0x11aa 000027f7: JUMPI 000027f8: DUP2 000027f9: PUSH0 000027fa: MSTORE 000027fb: PUSH1 0x0b 000027fd: PUSH1 0x20 000027ff: MSTORE 00002800: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002815: PUSH1 0x01 00002817: PUSH1 0x40 00002819: PUSH0 0000281a: KECCAK256 0000281b: ADD 0000281c: SLOAD 0000281d: AND 0000281e: CALLER 0000281f: SUB 00002820: PUSH2 0x117a 00002823: JUMPI 00002824: PUSH16 0xffffffffffffffffffffffffffffffff 00002835: DUP2 00002836: AND 00002837: DUP1 00002838: ISZERO 00002839: PUSH2 0x28cc 0000283c: JUMPI 0000283d: SWAP2 0000283e: DUP1 0000283f: PUSH32 0xfddf01d0842635e80929251f6862b3baf136a29f2b2fb148968e8b236d5785fe 00002860: PUSH1 0x60 00002862: PUSH2 0x1632 00002865: SWAP5 00002866: PUSH32 0xf8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7 00002887: SWAP7 00002888: DUP5 00002889: PUSH0 0000288a: MSTORE 0000288b: PUSH1 0x0b 0000288d: PUSH1 0x20 0000288f: MSTORE 00002890: PUSH2 0x28a1 00002893: PUSH1 0x40 00002895: PUSH0 00002896: KECCAK256 00002897: SLOAD 00002898: PUSH1 0x80 0000289a: SHR 0000289b: SWAP3 0000289c: DUP7 0000289d: PUSH2 0x4c77 000028a0: JUMP 000028a1: JUMPDEST 000028a2: PUSH2 0x28aa 000028a5: DUP6 000028a6: PUSH2 0x3da6 000028a9: JUMP 000028aa: JUMPDEST 000028ab: SWAP2 000028ac: PUSH1 0x40 000028ae: MLOAD 000028af: SWAP3 000028b0: DUP4 000028b1: MSTORE 000028b2: PUSH1 0x20 000028b4: DUP4 000028b5: ADD 000028b6: MSTORE 000028b7: PUSH1 0x40 000028b9: DUP3 000028ba: ADD 000028bb: MSTORE 000028bc: LOG2 000028bd: PUSH1 0x40 000028bf: MLOAD 000028c0: SWAP1 000028c1: DUP2 000028c2: MSTORE 000028c3: SWAP1 000028c4: DUP2 000028c5: SWAP1 000028c6: PUSH1 0x20 000028c8: DUP3 000028c9: ADD 000028ca: SWAP1 000028cb: JUMP 000028cc: JUMPDEST 000028cd: DUP3 000028ce: PUSH32 0x4513d39000000000000000000000000000000000000000000000000000000000 000028ef: PUSH0 000028f0: MSTORE 000028f1: PUSH1 0x04 000028f3: MSTORE 000028f4: PUSH1 0x24 000028f6: PUSH0 000028f7: REVERT 000028f8: JUMPDEST 000028f9: CALLVALUE 000028fa: PUSH2 0x03fe 000028fd: JUMPI 000028fe: PUSH1 0x20 00002900: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00002921: CALLDATASIZE 00002922: ADD 00002923: SLT 00002924: PUSH2 0x03fe 00002927: JUMPI 00002928: PUSH2 0x293b 0000292b: PUSH1 0x04 0000292d: CALLDATALOAD 0000292e: PUSH2 0x2936 00002931: DUP2 00002932: PUSH2 0x3d5d 00002935: JUMP 00002936: JUMPDEST 00002937: PUSH2 0x3907 0000293a: JUMP 0000293b: JUMPDEST 0000293c: PUSH1 0x40 0000293e: MLOAD 0000293f: PUSH1 0x06 00002941: DUP3 00002942: LT 00002943: ISZERO 00002944: PUSH2 0x294e 00002947: JUMPI 00002948: PUSH1 0x20 0000294a: SWAP2 0000294b: DUP2 0000294c: MSTORE 0000294d: RETURN 0000294e: JUMPDEST 0000294f: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00002970: PUSH0 00002971: MSTORE 00002972: PUSH1 0x21 00002974: PUSH1 0x04 00002976: MSTORE 00002977: PUSH1 0x24 00002979: PUSH0 0000297a: REVERT 0000297b: JUMPDEST 0000297c: CALLVALUE 0000297d: PUSH2 0x03fe 00002980: JUMPI 00002981: PUSH1 0x20 00002983: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 000029a4: CALLDATASIZE 000029a5: ADD 000029a6: SLT 000029a7: PUSH2 0x03fe 000029aa: JUMPI 000029ab: PUSH1 0x04 000029ad: CALLDATALOAD 000029ae: PUSH2 0x29b6 000029b1: DUP2 000029b2: PUSH2 0x3d5d 000029b5: JUMP 000029b6: JUMPDEST 000029b7: PUSH0 000029b8: MSTORE 000029b9: PUSH1 0x0b 000029bb: PUSH1 0x20 000029bd: MSTORE 000029be: PUSH1 0x20 000029c0: PUSH1 0xff 000029c2: PUSH1 0x01 000029c4: PUSH1 0x40 000029c6: PUSH0 000029c7: KECCAK256 000029c8: ADD 000029c9: SLOAD 000029ca: PUSH1 0xd0 000029cc: SHR 000029cd: AND 000029ce: PUSH1 0x40 000029d0: MLOAD 000029d1: SWAP1 000029d2: ISZERO 000029d3: ISZERO 000029d4: DUP2 000029d5: MSTORE 000029d6: RETURN 000029d7: JUMPDEST 000029d8: PUSH1 0x80 000029da: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 000029fb: CALLDATASIZE 000029fc: ADD 000029fd: SLT 000029fe: PUSH2 0x03fe 00002a01: JUMPI 00002a02: PUSH1 0x04 00002a04: CALLDATALOAD 00002a05: PUSH1 0x24 00002a07: CALLDATALOAD 00002a08: PUSH2 0x2a10 00002a0b: DUP2 00002a0c: PUSH2 0x0dea 00002a0f: JUMP 00002a10: JUMPDEST 00002a11: PUSH1 0x44 00002a13: CALLDATALOAD 00002a14: PUSH2 0x2a1c 00002a17: DUP2 00002a18: PUSH2 0x079b 00002a1b: JUMP 00002a1c: JUMPDEST 00002a1d: PUSH1 0x64 00002a1f: CALLDATALOAD 00002a20: SWAP1 00002a21: PUSH2 0x2a29 00002a24: DUP3 00002a25: PUSH2 0x079b 00002a28: JUMP 00002a29: JUMPDEST 00002a2a: PUSH2 0x2a31 00002a2d: PUSH2 0x3de7 00002a30: JUMP 00002a31: JUMPDEST 00002a32: PUSH2 0x2a3a 00002a35: DUP5 00002a36: PUSH2 0x3d5d 00002a39: JUMP 00002a3a: JUMPDEST 00002a3b: DUP4 00002a3c: PUSH0 00002a3d: MSTORE 00002a3e: PUSH1 0x0b 00002a40: PUSH1 0x20 00002a42: MSTORE 00002a43: PUSH1 0xff 00002a45: PUSH1 0x01 00002a47: PUSH1 0x40 00002a49: PUSH0 00002a4a: KECCAK256 00002a4b: ADD 00002a4c: SLOAD 00002a4d: PUSH1 0xd8 00002a4f: SHR 00002a50: AND 00002a51: PUSH2 0x2bcc 00002a54: JUMPI 00002a55: DUP4 00002a56: PUSH0 00002a57: MSTORE 00002a58: PUSH1 0x0b 00002a5a: PUSH1 0x20 00002a5c: MSTORE 00002a5d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002a72: PUSH1 0x01 00002a74: PUSH1 0x40 00002a76: PUSH0 00002a77: KECCAK256 00002a78: ADD 00002a79: SLOAD 00002a7a: AND 00002a7b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002a90: DUP3 00002a91: AND 00002a92: SUB 00002a93: PUSH2 0x2b6a 00002a96: JUMPI 00002a97: POP 00002a98: PUSH2 0x2aaf 00002a9b: PUSH2 0x13d2 00002a9e: PUSH2 0x15bf 00002aa1: DUP6 00002aa2: PUSH0 00002aa3: MSTORE 00002aa4: PUSH1 0x03 00002aa6: PUSH1 0x20 00002aa8: MSTORE 00002aa9: PUSH1 0x40 00002aab: PUSH0 00002aac: KECCAK256 00002aad: SWAP1 00002aae: JUMP 00002aaf: JUMPDEST 00002ab0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002ac5: DUP3 00002ac6: AND 00002ac7: SUB 00002ac8: PUSH2 0x2b0a 00002acb: JUMPI 00002acc: PUSH32 0xf8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7 00002aed: PUSH2 0x1632 00002af0: DUP5 00002af1: PUSH2 0x2afa 00002af4: DUP6 00002af5: DUP3 00002af6: PUSH2 0x42c2 00002af9: JUMP 00002afa: JUMPDEST 00002afb: PUSH1 0x40 00002afd: MLOAD 00002afe: SWAP1 00002aff: DUP2 00002b00: MSTORE 00002b01: SWAP1 00002b02: DUP2 00002b03: SWAP1 00002b04: PUSH1 0x20 00002b06: DUP3 00002b07: ADD 00002b08: SWAP1 00002b09: JUMP 00002b0a: JUMPDEST 00002b0b: PUSH2 0x08d5 00002b0e: SWAP1 00002b0f: PUSH2 0x2b23 00002b12: PUSH2 0x15bf 00002b15: DUP6 00002b16: PUSH0 00002b17: MSTORE 00002b18: PUSH1 0x03 00002b1a: PUSH1 0x20 00002b1c: MSTORE 00002b1d: PUSH1 0x40 00002b1f: PUSH0 00002b20: KECCAK256 00002b21: SWAP1 00002b22: JUMP 00002b23: JUMPDEST 00002b24: PUSH32 0x5bdb8ad700000000000000000000000000000000000000000000000000000000 00002b45: PUSH0 00002b46: MSTORE 00002b47: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002b5c: SWAP2 00002b5d: DUP3 00002b5e: AND 00002b5f: PUSH1 0x04 00002b61: MSTORE 00002b62: AND 00002b63: PUSH1 0x24 00002b65: MSTORE 00002b66: PUSH1 0x44 00002b68: SWAP1 00002b69: JUMP 00002b6a: JUMPDEST 00002b6b: PUSH2 0x08d5 00002b6e: SWAP1 00002b6f: PUSH2 0x2b85 00002b72: PUSH1 0x01 00002b74: PUSH2 0x13b7 00002b77: DUP8 00002b78: PUSH0 00002b79: MSTORE 00002b7a: PUSH1 0x0b 00002b7c: PUSH1 0x20 00002b7e: MSTORE 00002b7f: PUSH1 0x40 00002b81: PUSH0 00002b82: KECCAK256 00002b83: SWAP1 00002b84: JUMP 00002b85: JUMPDEST 00002b86: PUSH32 0xc8bac88d00000000000000000000000000000000000000000000000000000000 00002ba7: PUSH0 00002ba8: MSTORE 00002ba9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002bbe: SWAP2 00002bbf: DUP3 00002bc0: AND 00002bc1: PUSH1 0x04 00002bc3: MSTORE 00002bc4: AND 00002bc5: PUSH1 0x24 00002bc7: MSTORE 00002bc8: PUSH1 0x44 00002bca: SWAP1 00002bcb: JUMP 00002bcc: JUMPDEST 00002bcd: DUP4 00002bce: PUSH32 0x271c0f9d00000000000000000000000000000000000000000000000000000000 00002bef: PUSH0 00002bf0: MSTORE 00002bf1: PUSH1 0x04 00002bf3: MSTORE 00002bf4: PUSH1 0x24 00002bf6: PUSH0 00002bf7: REVERT 00002bf8: JUMPDEST 00002bf9: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00002c1a: PUSH0 00002c1b: MSTORE 00002c1c: PUSH1 0x41 00002c1e: PUSH1 0x04 00002c20: MSTORE 00002c21: PUSH1 0x24 00002c23: PUSH0 00002c24: REVERT 00002c25: JUMPDEST 00002c26: PUSH2 0x0140 00002c29: DUP2 00002c2a: ADD 00002c2b: SWAP1 00002c2c: DUP2 00002c2d: LT 00002c2e: PUSH8 0xffffffffffffffff 00002c37: DUP3 00002c38: GT 00002c39: OR 00002c3a: PUSH2 0x2c42 00002c3d: JUMPI 00002c3e: PUSH1 0x40 00002c40: MSTORE 00002c41: JUMP 00002c42: JUMPDEST 00002c43: PUSH2 0x2bf8 00002c46: JUMP 00002c47: JUMPDEST 00002c48: SWAP1 00002c49: PUSH1 0x1f 00002c4b: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00002c6c: SWAP2 00002c6d: ADD 00002c6e: AND 00002c6f: DUP2 00002c70: ADD 00002c71: SWAP1 00002c72: DUP2 00002c73: LT 00002c74: PUSH8 0xffffffffffffffff 00002c7d: DUP3 00002c7e: GT 00002c7f: OR 00002c80: PUSH2 0x2c42 00002c83: JUMPI 00002c84: PUSH1 0x40 00002c86: MSTORE 00002c87: JUMP 00002c88: JUMPDEST 00002c89: PUSH1 0x40 00002c8b: MLOAD 00002c8c: SWAP1 00002c8d: PUSH2 0x2c98 00002c90: PUSH2 0x0140 00002c93: DUP4 00002c94: PUSH2 0x2c47 00002c97: JUMP 00002c98: JUMPDEST 00002c99: JUMP 00002c9a: JUMPDEST 00002c9b: PUSH8 0xffffffffffffffff 00002ca4: DUP2 00002ca5: GT 00002ca6: PUSH2 0x2c42 00002ca9: JUMPI 00002caa: PUSH1 0x1f 00002cac: ADD 00002cad: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00002cce: AND 00002ccf: PUSH1 0x20 00002cd1: ADD 00002cd2: SWAP1 00002cd3: JUMP 00002cd4: JUMPDEST 00002cd5: CALLVALUE 00002cd6: PUSH2 0x03fe 00002cd9: JUMPI 00002cda: PUSH1 0x80 00002cdc: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00002cfd: CALLDATASIZE 00002cfe: ADD 00002cff: SLT 00002d00: PUSH2 0x03fe 00002d03: JUMPI 00002d04: PUSH1 0x04 00002d06: CALLDATALOAD 00002d07: PUSH2 0x2d0f 00002d0a: DUP2 00002d0b: PUSH2 0x079b 00002d0e: JUMP 00002d0f: JUMPDEST 00002d10: PUSH1 0x24 00002d12: CALLDATALOAD 00002d13: SWAP1 00002d14: PUSH2 0x2d1c 00002d17: DUP3 00002d18: PUSH2 0x079b 00002d1b: JUMP 00002d1c: JUMPDEST 00002d1d: PUSH1 0x44 00002d1f: CALLDATALOAD 00002d20: PUSH1 0x64 00002d22: CALLDATALOAD 00002d23: SWAP3 00002d24: PUSH8 0xffffffffffffffff 00002d2d: DUP5 00002d2e: GT 00002d2f: PUSH2 0x03fe 00002d32: JUMPI 00002d33: CALLDATASIZE 00002d34: PUSH1 0x23 00002d36: DUP6 00002d37: ADD 00002d38: SLT 00002d39: ISZERO 00002d3a: PUSH2 0x03fe 00002d3d: JUMPI 00002d3e: DUP4 00002d3f: PUSH1 0x04 00002d41: ADD 00002d42: CALLDATALOAD 00002d43: SWAP3 00002d44: PUSH2 0x2d4c 00002d47: DUP5 00002d48: PUSH2 0x2c9a 00002d4b: JUMP 00002d4c: JUMPDEST 00002d4d: SWAP4 00002d4e: PUSH2 0x2d5a 00002d51: PUSH1 0x40 00002d53: MLOAD 00002d54: SWAP6 00002d55: DUP7 00002d56: PUSH2 0x2c47 00002d59: JUMP 00002d5a: JUMPDEST 00002d5b: DUP1 00002d5c: DUP6 00002d5d: MSTORE 00002d5e: CALLDATASIZE 00002d5f: PUSH1 0x24 00002d61: DUP3 00002d62: DUP9 00002d63: ADD 00002d64: ADD 00002d65: GT 00002d66: PUSH2 0x03fe 00002d69: JUMPI 00002d6a: PUSH1 0x20 00002d6c: DUP2 00002d6d: PUSH0 00002d6e: SWAP3 00002d6f: PUSH1 0x24 00002d71: PUSH2 0x08a9 00002d74: SWAP10 00002d75: ADD 00002d76: DUP4 00002d77: DUP10 00002d78: ADD 00002d79: CALLDATACOPY 00002d7a: DUP7 00002d7b: ADD 00002d7c: ADD 00002d7d: MSTORE 00002d7e: PUSH2 0x39de 00002d81: JUMP 00002d82: JUMPDEST 00002d83: CALLVALUE 00002d84: PUSH2 0x03fe 00002d87: JUMPI 00002d88: PUSH1 0x20 00002d8a: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00002dab: CALLDATASIZE 00002dac: ADD 00002dad: SLT 00002dae: PUSH2 0x03fe 00002db1: JUMPI 00002db2: PUSH1 0x04 00002db4: CALLDATALOAD 00002db5: PUSH0 00002db6: MSTORE 00002db7: PUSH1 0x0b 00002db9: PUSH1 0x20 00002dbb: MSTORE 00002dbc: PUSH1 0x20 00002dbe: PUSH1 0xff 00002dc0: PUSH1 0x01 00002dc2: PUSH1 0x40 00002dc4: PUSH0 00002dc5: KECCAK256 00002dc6: ADD 00002dc7: SLOAD 00002dc8: PUSH1 0xc8 00002dca: SHR 00002dcb: AND 00002dcc: PUSH1 0x40 00002dce: MLOAD 00002dcf: SWAP1 00002dd0: ISZERO 00002dd1: ISZERO 00002dd2: DUP2 00002dd3: MSTORE 00002dd4: RETURN 00002dd5: JUMPDEST 00002dd6: CALLVALUE 00002dd7: PUSH2 0x03fe 00002dda: JUMPI 00002ddb: PUSH1 0x20 00002ddd: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00002dfe: CALLDATASIZE 00002dff: ADD 00002e00: SLT 00002e01: PUSH2 0x03fe 00002e04: JUMPI 00002e05: PUSH1 0x04 00002e07: CALLDATALOAD 00002e08: PUSH2 0x2e10 00002e0b: DUP2 00002e0c: PUSH2 0x3d5d 00002e0f: JUMP 00002e10: JUMPDEST 00002e11: PUSH0 00002e12: MSTORE 00002e13: PUSH1 0x0b 00002e15: PUSH1 0x20 00002e17: MSTORE 00002e18: PUSH1 0x20 00002e1a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002e2f: PUSH1 0x01 00002e31: PUSH1 0x40 00002e33: PUSH0 00002e34: KECCAK256 00002e35: ADD 00002e36: SLOAD 00002e37: AND 00002e38: PUSH1 0x40 00002e3a: MLOAD 00002e3b: SWAP1 00002e3c: DUP2 00002e3d: MSTORE 00002e3e: RETURN 00002e3f: JUMPDEST 00002e40: CALLVALUE 00002e41: PUSH2 0x03fe 00002e44: JUMPI 00002e45: PUSH1 0x20 00002e47: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00002e68: CALLDATASIZE 00002e69: ADD 00002e6a: SLT 00002e6b: PUSH2 0x03fe 00002e6e: JUMPI 00002e6f: PUSH1 0x20 00002e71: PUSH2 0x0793 00002e74: PUSH1 0x04 00002e76: CALLDATALOAD 00002e77: PUSH2 0x2e7f 00002e7a: DUP2 00002e7b: PUSH2 0x3d5d 00002e7e: JUMP 00002e7f: JUMPDEST 00002e80: PUSH2 0x4d78 00002e83: JUMP 00002e84: JUMPDEST 00002e85: PUSH1 0x40 00002e87: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00002ea8: CALLDATASIZE 00002ea9: ADD 00002eaa: SLT 00002eab: PUSH2 0x03fe 00002eae: JUMPI 00002eaf: PUSH1 0x04 00002eb1: CALLDATALOAD 00002eb2: PUSH1 0x24 00002eb4: CALLDATALOAD 00002eb5: PUSH2 0x2ebd 00002eb8: DUP2 00002eb9: PUSH2 0x0dea 00002ebc: JUMP 00002ebd: JUMPDEST 00002ebe: PUSH2 0x2ec5 00002ec1: PUSH2 0x3de7 00002ec4: JUMP 00002ec5: JUMPDEST 00002ec6: PUSH2 0x2ece 00002ec9: DUP3 00002eca: PUSH2 0x3d5d 00002ecd: JUMP 00002ece: JUMPDEST 00002ecf: DUP2 00002ed0: PUSH0 00002ed1: MSTORE 00002ed2: PUSH1 0x0b 00002ed4: PUSH1 0x20 00002ed6: MSTORE 00002ed7: PUSH1 0x40 00002ed9: PUSH0 00002eda: KECCAK256 00002edb: SLOAD 00002edc: PUSH1 0x80 00002ede: SHR 00002edf: ISZERO 00002ee0: PUSH2 0x11aa 00002ee3: JUMPI 00002ee4: DUP2 00002ee5: PUSH0 00002ee6: MSTORE 00002ee7: PUSH1 0x0b 00002ee9: PUSH1 0x20 00002eeb: MSTORE 00002eec: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002f01: PUSH1 0x01 00002f03: PUSH1 0x40 00002f05: PUSH0 00002f06: KECCAK256 00002f07: ADD 00002f08: SLOAD 00002f09: AND 00002f0a: CALLER 00002f0b: SUB 00002f0c: PUSH2 0x117a 00002f0f: JUMPI 00002f10: DUP2 00002f11: PUSH2 0x1171 00002f14: PUSH1 0x20 00002f16: SWAP3 00002f17: PUSH32 0xf8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7 00002f38: SWAP5 00002f39: PUSH2 0x42c2 00002f3c: JUMP 00002f3d: JUMPDEST 00002f3e: CALLVALUE 00002f3f: PUSH2 0x03fe 00002f42: JUMPI 00002f43: PUSH1 0x20 00002f45: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00002f66: CALLDATASIZE 00002f67: ADD 00002f68: SLT 00002f69: PUSH2 0x03fe 00002f6c: JUMPI 00002f6d: PUSH1 0x04 00002f6f: CALLDATALOAD 00002f70: PUSH2 0x2f78 00002f73: DUP2 00002f74: PUSH2 0x3d04 00002f77: JUMP 00002f78: JUMPDEST 00002f79: POP 00002f7a: PUSH0 00002f7b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002f90: PUSH1 0x0a 00002f92: SLOAD 00002f93: AND 00002f94: SWAP2 00002f95: PUSH1 0x44 00002f97: PUSH1 0x40 00002f99: MLOAD 00002f9a: DUP1 00002f9b: SWAP5 00002f9c: DUP2 00002f9d: SWAP4 00002f9e: PUSH32 0xe9dc637500000000000000000000000000000000000000000000000000000000 00002fbf: DUP4 00002fc0: MSTORE 00002fc1: ADDRESS 00002fc2: PUSH1 0x04 00002fc4: DUP5 00002fc5: ADD 00002fc6: MSTORE 00002fc7: PUSH1 0x24 00002fc9: DUP4 00002fca: ADD 00002fcb: MSTORE 00002fcc: GAS 00002fcd: STATICCALL 00002fce: DUP1 00002fcf: ISZERO 00002fd0: PUSH2 0x1a70 00002fd3: JUMPI 00002fd4: PUSH0 00002fd5: SWAP1 00002fd6: PUSH2 0x2fea 00002fd9: JUMPI 00002fda: JUMPDEST 00002fdb: PUSH2 0x0622 00002fde: SWAP1 00002fdf: PUSH1 0x40 00002fe1: MLOAD 00002fe2: SWAP2 00002fe3: DUP3 00002fe4: SWAP2 00002fe5: DUP3 00002fe6: PUSH2 0x058a 00002fe9: JUMP 00002fea: JUMPDEST 00002feb: POP 00002fec: RETURNDATASIZE 00002fed: DUP1 00002fee: PUSH0 00002fef: DUP4 00002ff0: RETURNDATACOPY 00002ff1: PUSH2 0x2ffa 00002ff4: DUP2 00002ff5: DUP4 00002ff6: PUSH2 0x2c47 00002ff9: JUMP 00002ffa: JUMPDEST 00002ffb: DUP2 00002ffc: ADD 00002ffd: SWAP1 00002ffe: PUSH1 0x20 00003000: DUP2 00003001: DUP4 00003002: SUB 00003003: SLT 00003004: PUSH2 0x03fe 00003007: JUMPI 00003008: DUP1 00003009: MLOAD 0000300a: SWAP1 0000300b: PUSH8 0xffffffffffffffff 00003014: DUP3 00003015: GT 00003016: PUSH2 0x03fe 00003019: JUMPI 0000301a: ADD 0000301b: SWAP1 0000301c: DUP1 0000301d: PUSH1 0x1f 0000301f: DUP4 00003020: ADD 00003021: SLT 00003022: ISZERO 00003023: PUSH2 0x03fe 00003026: JUMPI 00003027: DUP2 00003028: MLOAD 00003029: SWAP2 0000302a: PUSH2 0x3032 0000302d: DUP4 0000302e: PUSH2 0x2c9a 00003031: JUMP 00003032: JUMPDEST 00003033: SWAP2 00003034: PUSH2 0x3040 00003037: PUSH1 0x40 00003039: MLOAD 0000303a: SWAP4 0000303b: DUP5 0000303c: PUSH2 0x2c47 0000303f: JUMP 00003040: JUMPDEST 00003041: DUP4 00003042: DUP4 00003043: MSTORE 00003044: PUSH1 0x20 00003046: DUP5 00003047: DUP4 00003048: ADD 00003049: ADD 0000304a: GT 0000304b: PUSH2 0x03fe 0000304e: JUMPI 0000304f: PUSH2 0x0622 00003052: SWAP3 00003053: PUSH2 0x3062 00003056: SWAP2 00003057: PUSH1 0x20 00003059: DUP1 0000305a: DUP6 0000305b: ADD 0000305c: SWAP2 0000305d: ADD 0000305e: PUSH2 0x0526 00003061: JUMP 00003062: JUMPDEST 00003063: PUSH2 0x2fda 00003066: JUMP 00003067: JUMPDEST 00003068: CALLVALUE 00003069: PUSH2 0x03fe 0000306c: JUMPI 0000306d: PUSH1 0x20 0000306f: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00003090: CALLDATASIZE 00003091: ADD 00003092: SLT 00003093: PUSH2 0x03fe 00003096: JUMPI 00003097: PUSH2 0x313d 0000309a: PUSH1 0x20 0000309c: PUSH1 0x04 0000309e: CALLDATALOAD 0000309f: PUSH2 0x30a7 000030a2: DUP2 000030a3: PUSH2 0x3d5d 000030a6: JUMP 000030a7: JUMPDEST 000030a8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000030bd: PUSH0 000030be: SLOAD 000030bf: AND 000030c0: SWAP1 000030c1: PUSH0 000030c2: MSTORE 000030c3: PUSH1 0x0b 000030c5: DUP3 000030c6: MSTORE 000030c7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000030dc: PUSH1 0x01 000030de: PUSH1 0x40 000030e0: PUSH0 000030e1: KECCAK256 000030e2: ADD 000030e3: SLOAD 000030e4: AND 000030e5: SWAP1 000030e6: PUSH1 0x40 000030e8: MLOAD 000030e9: DUP1 000030ea: DUP1 000030eb: SWAP6 000030ec: DUP2 000030ed: SWAP5 000030ee: PUSH32 0x419d289d00000000000000000000000000000000000000000000000000000000 0000310f: DUP4 00003110: MSTORE 00003111: PUSH1 0x04 00003113: DUP4 00003114: ADD 00003115: SWAP2 00003116: SWAP1 00003117: SWAP2 00003118: PUSH1 0x20 0000311a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000312f: PUSH1 0x40 00003131: DUP4 00003132: ADD 00003133: SWAP5 00003134: PUSH1 0x01 00003136: DUP5 00003137: MSTORE 00003138: AND 00003139: SWAP2 0000313a: ADD 0000313b: MSTORE 0000313c: JUMP 0000313d: JUMPDEST 0000313e: SUB 0000313f: SWAP2 00003140: GAS 00003141: STATICCALL 00003142: DUP1 00003143: ISZERO 00003144: PUSH2 0x1a70 00003147: JUMPI 00003148: PUSH2 0x0622 0000314b: SWAP2 0000314c: PUSH0 0000314d: SWAP2 0000314e: PUSH2 0x3163 00003151: JUMPI 00003152: JUMPDEST 00003153: POP 00003154: PUSH1 0x40 00003156: MLOAD 00003157: SWAP1 00003158: DUP2 00003159: MSTORE 0000315a: SWAP1 0000315b: DUP2 0000315c: SWAP1 0000315d: PUSH1 0x20 0000315f: DUP3 00003160: ADD 00003161: SWAP1 00003162: JUMP 00003163: JUMPDEST 00003164: PUSH2 0x317c 00003167: SWAP2 00003168: POP 00003169: PUSH1 0x20 0000316b: RETURNDATASIZE 0000316c: PUSH1 0x20 0000316e: GT 0000316f: PUSH2 0x1a69 00003172: JUMPI 00003173: PUSH2 0x1a5b 00003176: DUP2 00003177: DUP4 00003178: PUSH2 0x2c47 0000317b: JUMP 0000317c: JUMPDEST 0000317d: PUSH0 0000317e: PUSH2 0x3152 00003181: JUMP 00003182: JUMPDEST 00003183: CALLVALUE 00003184: PUSH2 0x03fe 00003187: JUMPI 00003188: PUSH1 0x20 0000318a: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 000031ab: CALLDATASIZE 000031ac: ADD 000031ad: SLT 000031ae: PUSH2 0x03fe 000031b1: JUMPI 000031b2: PUSH1 0x04 000031b4: CALLDATALOAD 000031b5: PUSH2 0x31bd 000031b8: DUP2 000031b9: PUSH2 0x3d5d 000031bc: JUMP 000031bd: JUMPDEST 000031be: DUP1 000031bf: PUSH0 000031c0: MSTORE 000031c1: PUSH1 0x0b 000031c3: PUSH1 0x20 000031c5: MSTORE 000031c6: PUSH1 0x40 000031c8: PUSH0 000031c9: KECCAK256 000031ca: SLOAD 000031cb: PUSH1 0x80 000031cd: SHR 000031ce: ISZERO 000031cf: PUSH2 0x0b05 000031d2: JUMPI 000031d3: PUSH2 0x31db 000031d6: SWAP1 000031d7: PUSH2 0x3bc0 000031da: JUMP 000031db: JUMPDEST 000031dc: PUSH1 0x40 000031de: MLOAD 000031df: SWAP1 000031e0: DUP2 000031e1: MSTORE 000031e2: PUSH1 0x20 000031e4: SWAP1 000031e5: RETURN 000031e6: JUMPDEST 000031e7: CALLVALUE 000031e8: PUSH2 0x03fe 000031eb: JUMPI 000031ec: PUSH0 000031ed: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 0000320e: CALLDATASIZE 0000320f: ADD 00003210: SLT 00003211: PUSH2 0x03fe 00003214: JUMPI 00003215: PUSH1 0x20 00003217: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000322c: PUSH1 0x08 0000322e: SLOAD 0000322f: AND 00003230: PUSH1 0x40 00003232: MLOAD 00003233: SWAP1 00003234: DUP2 00003235: MSTORE 00003236: RETURN 00003237: JUMPDEST 00003238: CALLVALUE 00003239: PUSH2 0x03fe 0000323c: JUMPI 0000323d: PUSH1 0x20 0000323f: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00003260: CALLDATASIZE 00003261: ADD 00003262: SLT 00003263: PUSH2 0x03fe 00003266: JUMPI 00003267: PUSH1 0x04 00003269: CALLDATALOAD 0000326a: PUSH2 0x3272 0000326d: DUP2 0000326e: PUSH2 0x3d5d 00003271: JUMP 00003272: JUMPDEST 00003273: PUSH0 00003274: MSTORE 00003275: PUSH1 0x0b 00003277: PUSH1 0x20 00003279: MSTORE 0000327a: PUSH1 0x20 0000327c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003291: PUSH1 0x02 00003293: PUSH1 0x40 00003295: PUSH0 00003296: KECCAK256 00003297: ADD 00003298: SLOAD 00003299: AND 0000329a: PUSH1 0x40 0000329c: MLOAD 0000329d: SWAP1 0000329e: DUP2 0000329f: MSTORE 000032a0: RETURN 000032a1: JUMPDEST 000032a2: CALLVALUE 000032a3: PUSH2 0x03fe 000032a6: JUMPI 000032a7: PUSH1 0x40 000032a9: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 000032ca: CALLDATASIZE 000032cb: ADD 000032cc: SLT 000032cd: PUSH2 0x03fe 000032d0: JUMPI 000032d1: PUSH1 0x20 000032d3: PUSH1 0xff 000032d5: PUSH2 0x3333 000032d8: PUSH1 0x04 000032da: CALLDATALOAD 000032db: PUSH2 0x32e3 000032de: DUP2 000032df: PUSH2 0x079b 000032e2: JUMP 000032e3: JUMPDEST 000032e4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000032f9: PUSH1 0x24 000032fb: CALLDATALOAD 000032fc: SWAP2 000032fd: PUSH2 0x3305 00003300: DUP4 00003301: PUSH2 0x079b 00003304: JUMP 00003305: JUMPDEST 00003306: AND 00003307: PUSH0 00003308: MSTORE 00003309: PUSH1 0x06 0000330b: DUP5 0000330c: MSTORE 0000330d: PUSH1 0x40 0000330f: PUSH0 00003310: KECCAK256 00003311: SWAP1 00003312: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003327: AND 00003328: PUSH0 00003329: MSTORE 0000332a: PUSH1 0x20 0000332c: MSTORE 0000332d: PUSH1 0x40 0000332f: PUSH0 00003330: KECCAK256 00003331: SWAP1 00003332: JUMP 00003333: JUMPDEST 00003334: SLOAD 00003335: AND 00003336: PUSH1 0x40 00003338: MLOAD 00003339: SWAP1 0000333a: ISZERO 0000333b: ISZERO 0000333c: DUP2 0000333d: MSTORE 0000333e: RETURN 0000333f: JUMPDEST 00003340: PUSH1 0x40 00003342: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00003363: CALLDATASIZE 00003364: ADD 00003365: SLT 00003366: PUSH2 0x03fe 00003369: JUMPI 0000336a: PUSH1 0x20 0000336c: PUSH1 0x24 0000336e: CALLDATALOAD 0000336f: PUSH32 0xf8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7 00003390: DUP3 00003391: PUSH1 0x04 00003393: CALLDATALOAD 00003394: PUSH2 0x339c 00003397: DUP5 00003398: PUSH2 0x079b 0000339b: JUMP 0000339c: JUMPDEST 0000339d: PUSH2 0x33a4 000033a0: PUSH2 0x3de7 000033a3: JUMP 000033a4: JUMPDEST 000033a5: PUSH2 0x33ad 000033a8: DUP2 000033a9: PUSH2 0x3d5d 000033ac: JUMP 000033ad: JUMPDEST 000033ae: PUSH2 0x33c1 000033b1: PUSH2 0x33b9 000033b4: DUP3 000033b5: PUSH2 0x4b05 000033b8: JUMP 000033b9: JUMPDEST 000033ba: DUP1 000033bb: SWAP6 000033bc: DUP4 000033bd: PUSH2 0x4e5a 000033c0: JUMP 000033c1: JUMPDEST 000033c2: PUSH1 0x40 000033c4: MLOAD 000033c5: SWAP1 000033c6: DUP2 000033c7: MSTORE 000033c8: LOG1 000033c9: PUSH16 0xffffffffffffffffffffffffffffffff 000033da: PUSH1 0x40 000033dc: MLOAD 000033dd: SWAP2 000033de: AND 000033df: DUP2 000033e0: MSTORE 000033e1: RETURN 000033e2: JUMPDEST 000033e3: CALLVALUE 000033e4: PUSH2 0x03fe 000033e7: JUMPI 000033e8: PUSH1 0x20 000033ea: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 0000340b: CALLDATASIZE 0000340c: ADD 0000340d: SLT 0000340e: PUSH2 0x03fe 00003411: JUMPI 00003412: PUSH1 0x04 00003414: CALLDATALOAD 00003415: PUSH2 0x341d 00003418: DUP2 00003419: PUSH2 0x3d5d 0000341c: JUMP 0000341d: JUMPDEST 0000341e: PUSH0 0000341f: MSTORE 00003420: PUSH1 0x0b 00003422: PUSH1 0x20 00003424: MSTORE 00003425: PUSH1 0x20 00003427: PUSH5 0xffffffffff 0000342d: PUSH1 0x01 0000342f: PUSH1 0x40 00003431: PUSH0 00003432: KECCAK256 00003433: ADD 00003434: SLOAD 00003435: PUSH1 0xa0 00003437: SHR 00003438: AND 00003439: PUSH1 0x40 0000343b: MLOAD 0000343c: SWAP1 0000343d: DUP2 0000343e: MSTORE 0000343f: RETURN 00003440: JUMPDEST 00003441: PUSH1 0x40 00003443: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00003464: CALLDATASIZE 00003465: ADD 00003466: SLT 00003467: PUSH2 0x03fe 0000346a: JUMPI 0000346b: PUSH1 0x04 0000346d: CALLDATALOAD 0000346e: PUSH1 0x24 00003470: CALLDATALOAD 00003471: PUSH2 0x3479 00003474: DUP2 00003475: PUSH2 0x0dea 00003478: JUMP 00003479: JUMPDEST 0000347a: PUSH2 0x3481 0000347d: PUSH2 0x3de7 00003480: JUMP 00003481: JUMPDEST 00003482: PUSH2 0x348a 00003485: DUP3 00003486: PUSH2 0x3d5d 00003489: JUMP 0000348a: JUMPDEST 0000348b: DUP2 0000348c: PUSH0 0000348d: MSTORE 0000348e: PUSH1 0x0b 00003490: PUSH1 0x20 00003492: MSTORE 00003493: PUSH1 0xff 00003495: PUSH1 0x01 00003497: PUSH1 0x40 00003499: PUSH0 0000349a: KECCAK256 0000349b: ADD 0000349c: SLOAD 0000349d: PUSH1 0xd8 0000349f: SHR 000034a0: AND 000034a1: PUSH2 0x34fe 000034a4: JUMPI 000034a5: DUP2 000034a6: PUSH0 000034a7: MSTORE 000034a8: PUSH1 0x0b 000034aa: PUSH1 0x20 000034ac: MSTORE 000034ad: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000034c2: PUSH1 0x01 000034c4: PUSH1 0x40 000034c6: PUSH0 000034c7: KECCAK256 000034c8: ADD 000034c9: SLOAD 000034ca: AND 000034cb: CALLER 000034cc: SUB 000034cd: PUSH2 0x117a 000034d0: JUMPI 000034d1: DUP2 000034d2: PUSH2 0x0afc 000034d5: PUSH1 0x20 000034d7: SWAP3 000034d8: PUSH32 0xf8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7 000034f9: SWAP5 000034fa: PUSH2 0x4235 000034fd: JUMP 000034fe: JUMPDEST 000034ff: POP 00003500: PUSH32 0x271c0f9d00000000000000000000000000000000000000000000000000000000 00003521: PUSH0 00003522: MSTORE 00003523: PUSH1 0x04 00003525: MSTORE 00003526: PUSH1 0x24 00003528: PUSH0 00003529: REVERT 0000352a: JUMPDEST 0000352b: CALLVALUE 0000352c: PUSH2 0x03fe 0000352f: JUMPI 00003530: PUSH1 0x20 00003532: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 00003553: CALLDATASIZE 00003554: ADD 00003555: SLT 00003556: PUSH2 0x03fe 00003559: JUMPI 0000355a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000356f: PUSH1 0x04 00003571: CALLDATALOAD 00003572: PUSH2 0x357a 00003575: DUP2 00003576: PUSH2 0x079b 00003579: JUMP 0000357a: JUMPDEST 0000357b: AND 0000357c: PUSH0 0000357d: MSTORE 0000357e: PUSH1 0x07 00003580: PUSH1 0x20 00003582: MSTORE 00003583: PUSH1 0x20 00003585: PUSH1 0x40 00003587: PUSH0 00003588: KECCAK256 00003589: SLOAD 0000358a: PUSH1 0x40 0000358c: MLOAD 0000358d: SWAP1 0000358e: DUP2 0000358f: MSTORE 00003590: RETURN 00003591: JUMPDEST 00003592: PUSH1 0x60 00003594: PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 000035b5: CALLDATASIZE 000035b6: ADD 000035b7: SLT 000035b8: PUSH2 0x03fe 000035bb: JUMPI 000035bc: PUSH32 0xf8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7 000035dd: PUSH1 0x20 000035df: PUSH1 0x04 000035e1: CALLDATALOAD 000035e2: PUSH2 0x0afc 000035e5: PUSH1 0x24 000035e7: CALLDATALOAD 000035e8: PUSH2 0x35f0 000035eb: DUP2 000035ec: PUSH2 0x079b 000035ef: JUMP 000035f0: JUMPDEST 000035f1: PUSH1 0x44 000035f3: CALLDATALOAD 000035f4: SWAP1 000035f5: PUSH2 0x35fd 000035f8: DUP3 000035f9: PUSH2 0x0dea 000035fc: JUMP 000035fd: JUMPDEST 000035fe: PUSH2 0x3605 00003601: PUSH2 0x3de7 00003604: JUMP 00003605: JUMPDEST 00003606: PUSH2 0x360e 00003609: DUP5 0000360a: PUSH2 0x3d5d 0000360d: JUMP 0000360e: JUMPDEST 0000360f: DUP4 00003610: PUSH2 0x4e5a 00003613: JUMP 00003614: JUMPDEST 00003615: PUSH8 0xffffffffffffffff 0000361e: DUP2 0000361f: GT 00003620: PUSH2 0x2c42 00003623: JUMPI 00003624: PUSH1 0x05 00003626: SHL 00003627: PUSH1 0x20 00003629: ADD 0000362a: SWAP1 0000362b: JUMP 0000362c: JUMPDEST 0000362d: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 0000364e: PUSH0 0000364f: MSTORE 00003650: PUSH1 0x32 00003652: PUSH1 0x04 00003654: MSTORE 00003655: PUSH1 0x24 00003657: PUSH0 00003658: REVERT 00003659: JUMPDEST 0000365a: SWAP2 0000365b: SWAP1 0000365c: DUP2 0000365d: LT 0000365e: ISZERO 0000365f: PUSH2 0x36b9 00003662: JUMPI 00003663: PUSH1 0x05 00003665: SHL 00003666: DUP2 00003667: ADD 00003668: CALLDATALOAD 00003669: SWAP1 0000366a: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1 0000368b: DUP2 0000368c: CALLDATASIZE 0000368d: SUB 0000368e: ADD 0000368f: DUP3 00003690: SLT 00003691: ISZERO 00003692: PUSH2 0x03fe 00003695: JUMPI 00003696: ADD 00003697: SWAP1 00003698: DUP2 00003699: CALLDATALOAD 0000369a: SWAP2 0000369b: PUSH8 0xffffffffffffffff 000036a4: DUP4 000036a5: GT 000036a6: PUSH2 0x03fe 000036a9: JUMPI 000036aa: PUSH1 0x20 000036ac: ADD 000036ad: DUP3 000036ae: CALLDATASIZE 000036af: SUB 000036b0: DUP2 000036b1: SGT 000036b2: PUSH2 0x03fe 000036b5: JUMPI 000036b6: SWAP2 000036b7: SWAP1 000036b8: JUMP 000036b9: JUMPDEST 000036ba: PUSH2 0x362c 000036bd: JUMP 000036be: JUMPDEST 000036bf: SWAP1 000036c0: DUP1 000036c1: SWAP3 000036c2: SWAP2 000036c3: DUP3 000036c4: CALLDATACOPY 000036c5: ADD 000036c6: PUSH0 000036c7: DUP2 000036c8: MSTORE 000036c9: SWAP1 000036ca: JUMP 000036cb: JUMPDEST 000036cc: RETURNDATASIZE 000036cd: ISZERO 000036ce: PUSH2 0x36f5 000036d1: JUMPI 000036d2: RETURNDATASIZE 000036d3: SWAP1 000036d4: PUSH2 0x36dc 000036d7: DUP3 000036d8: PUSH2 0x2c9a 000036db: JUMP 000036dc: JUMPDEST 000036dd: SWAP2 000036de: PUSH2 0x36ea 000036e1: PUSH1 0x40 000036e3: MLOAD 000036e4: SWAP4 000036e5: DUP5 000036e6: PUSH2 0x2c47 000036e9: JUMP 000036ea: JUMPDEST 000036eb: DUP3 000036ec: MSTORE 000036ed: RETURNDATASIZE 000036ee: PUSH0 000036ef: PUSH1 0x20 000036f1: DUP5 000036f2: ADD 000036f3: RETURNDATACOPY 000036f4: JUMP 000036f5: JUMPDEST 000036f6: PUSH1 0x60 000036f8: SWAP1 000036f9: JUMP 000036fa: JUMPDEST 000036fb: DUP1 000036fc: MLOAD 000036fd: DUP3 000036fe: LT 000036ff: ISZERO 00003700: PUSH2 0x36b9 00003703: JUMPI 00003704: PUSH1 0x20 00003706: SWAP2 00003707: PUSH1 0x05 00003709: SHL 0000370a: ADD 0000370b: ADD 0000370c: SWAP1 0000370d: JUMP 0000370e: JUMPDEST 0000370f: SWAP2 00003710: SWAP1 00003711: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003726: DUP2 00003727: AND 00003728: ISZERO 00003729: PUSH2 0x3840 0000372c: JUMPI 0000372d: DUP2 0000372e: PUSH0 0000372f: MSTORE 00003730: PUSH1 0x03 00003732: PUSH1 0x20 00003734: MSTORE 00003735: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000374a: PUSH1 0x40 0000374c: PUSH0 0000374d: KECCAK256 0000374e: SLOAD 0000374f: AND 00003750: ISZERO 00003751: ISZERO 00003752: DUP1 00003753: PUSH2 0x3823 00003756: JUMPI 00003757: JUMPDEST 00003758: PUSH2 0x37f6 0000375b: JUMPI 0000375c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003771: PUSH2 0x377d 00003774: DUP2 00003775: SWAP3 00003776: DUP5 00003777: CALLER 00003778: SWAP2 00003779: PUSH2 0x5378 0000377c: JUMP 0000377d: JUMPDEST 0000377e: SWAP4 0000377f: PUSH32 0xf8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7 000037a0: PUSH1 0x40 000037a2: MLOAD 000037a3: DUP1 000037a4: PUSH2 0x37b2 000037a7: DUP8 000037a8: DUP3 000037a9: SWAP2 000037aa: SWAP1 000037ab: PUSH1 0x20 000037ad: DUP4 000037ae: ADD 000037af: SWAP3 000037b0: MSTORE 000037b1: JUMP 000037b2: JUMPDEST 000037b3: SUB 000037b4: SWAP1 000037b5: LOG1 000037b6: AND 000037b7: SWAP3 000037b8: AND 000037b9: SWAP2 000037ba: DUP1 000037bb: DUP4 000037bc: SUB 000037bd: PUSH2 0x37c5 000037c0: JUMPI 000037c1: POP 000037c2: POP 000037c3: POP 000037c4: JUMP 000037c5: JUMPDEST 000037c6: PUSH32 0x64283d7b00000000000000000000000000000000000000000000000000000000 000037e7: PUSH0 000037e8: MSTORE 000037e9: PUSH1 0x04 000037eb: MSTORE 000037ec: PUSH1 0x24 000037ee: MSTORE 000037ef: PUSH1 0x44 000037f1: MSTORE 000037f2: PUSH1 0x64 000037f4: PUSH0 000037f5: REVERT 000037f6: JUMPDEST 000037f7: PUSH32 0xf53e751a00000000000000000000000000000000000000000000000000000000 00003818: PUSH0 00003819: MSTORE 0000381a: PUSH1 0x04 0000381c: DUP3 0000381d: SWAP1 0000381e: MSTORE 0000381f: PUSH1 0x24 00003821: PUSH0 00003822: REVERT 00003823: JUMPDEST 00003824: POP 00003825: DUP2 00003826: PUSH0 00003827: MSTORE 00003828: PUSH1 0x0b 0000382a: PUSH1 0x20 0000382c: MSTORE 0000382d: PUSH1 0xff 0000382f: PUSH1 0x01 00003831: PUSH1 0x40 00003833: PUSH0 00003834: KECCAK256 00003835: ADD 00003836: SLOAD 00003837: PUSH1 0xd0 00003839: SHR 0000383a: AND 0000383b: ISZERO 0000383c: PUSH2 0x3757 0000383f: JUMP 00003840: JUMPDEST 00003841: PUSH32 0x64a0ae9200000000000000000000000000000000000000000000000000000000 00003862: PUSH0 00003863: MSTORE 00003864: PUSH0 00003865: PUSH1 0x04 00003867: MSTORE 00003868: PUSH1 0x24 0000386a: PUSH0 0000386b: REVERT 0000386c: JUMPDEST 0000386d: SWAP1 0000386e: DUP2 0000386f: PUSH1 0x20 00003871: SWAP2 00003872: SUB 00003873: SLT 00003874: PUSH2 0x03fe 00003877: JUMPI 00003878: MLOAD 00003879: SWAP1 0000387a: JUMP 0000387b: JUMPDEST 0000387c: PUSH1 0x40 0000387e: MLOAD 0000387f: RETURNDATASIZE 00003880: PUSH0 00003881: DUP3 00003882: RETURNDATACOPY 00003883: RETURNDATASIZE 00003884: SWAP1 00003885: REVERT 00003886: JUMPDEST 00003887: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000038a8: PUSH0 000038a9: MSTORE 000038aa: PUSH1 0x11 000038ac: PUSH1 0x04 000038ae: MSTORE 000038af: PUSH1 0x24 000038b1: PUSH0 000038b2: REVERT 000038b3: JUMPDEST 000038b4: SWAP1 000038b5: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000038d6: DUP3 000038d7: ADD 000038d8: SWAP2 000038d9: DUP3 000038da: GT 000038db: PUSH2 0x38e0 000038de: JUMPI 000038df: JUMP 000038e0: JUMPDEST 000038e1: PUSH2 0x3886 000038e4: JUMP 000038e5: JUMPDEST 000038e6: SWAP2 000038e7: SWAP1 000038e8: DUP3 000038e9: SUB 000038ea: SWAP2 000038eb: DUP3 000038ec: GT 000038ed: PUSH2 0x38e0 000038f0: JUMPI 000038f1: JUMP 000038f2: JUMPDEST 000038f3: SWAP1 000038f4: DUP2 000038f5: PUSH1 0x20 000038f7: SWAP2 000038f8: SUB 000038f9: SLT 000038fa: PUSH2 0x03fe 000038fd: JUMPI 000038fe: MLOAD 000038ff: PUSH2 0x059b 00003902: DUP2 00003903: PUSH2 0x03d4 00003906: JUMP 00003907: JUMPDEST 00003908: PUSH2 0x392d 0000390b: PUSH1 0x01 0000390d: PUSH2 0x391e 00003910: DUP4 00003911: PUSH0 00003912: MSTORE 00003913: PUSH1 0x0b 00003915: PUSH1 0x20 00003917: MSTORE 00003918: PUSH1 0x40 0000391a: PUSH0 0000391b: KECCAK256 0000391c: SWAP1 0000391d: JUMP 0000391e: JUMPDEST 0000391f: ADD 00003920: SLOAD 00003921: PUSH1 0xa0 00003923: SHR 00003924: PUSH5 0xffffffffff 0000392a: AND 0000392b: SWAP1 0000392c: JUMP 0000392d: JUMPDEST 0000392e: PUSH5 0xffffffffff 00003934: TIMESTAMP 00003935: SWAP2 00003936: AND 00003937: GT 00003938: PUSH2 0x39d9 0000393b: JUMPI 0000393c: PUSH2 0x395d 0000393f: PUSH1 0x01 00003941: PUSH2 0x3952 00003944: DUP4 00003945: PUSH0 00003946: MSTORE 00003947: PUSH1 0x0b 00003949: PUSH1 0x20 0000394b: MSTORE 0000394c: PUSH1 0x40 0000394e: PUSH0 0000394f: KECCAK256 00003950: SWAP1 00003951: JUMP 00003952: JUMPDEST 00003953: ADD 00003954: SLOAD 00003955: PUSH1 0xd8 00003957: SHR 00003958: PUSH1 0xff 0000395a: AND 0000395b: SWAP1 0000395c: JUMP 0000395d: JUMPDEST 0000395e: PUSH2 0x39d3 00003961: JUMPI 00003962: PUSH16 0xffffffffffffffffffffffffffffffff 00003973: PUSH2 0x39b1 00003976: PUSH2 0x399c 00003979: PUSH2 0x3995 0000397c: PUSH2 0x3984 0000397f: DUP6 00003980: PUSH2 0x4d78 00003983: JUMP 00003984: JUMPDEST 00003985: ISZERO 00003986: ISZERO 00003987: SWAP5 00003988: PUSH0 00003989: MSTORE 0000398a: PUSH1 0x0b 0000398c: PUSH1 0x20 0000398e: MSTORE 0000398f: PUSH1 0x40 00003991: PUSH0 00003992: KECCAK256 00003993: SWAP1 00003994: JUMP 00003995: JUMPDEST 00003996: SLOAD 00003997: PUSH1 0x80 00003999: SHR 0000399a: SWAP1 0000399b: JUMP 0000399c: JUMPDEST 0000399d: PUSH16 0xffffffffffffffffffffffffffffffff 000039ae: AND 000039af: SWAP1 000039b0: JUMP 000039b1: JUMPDEST 000039b2: AND 000039b3: ISZERO 000039b4: PUSH2 0x39c5 000039b7: JUMPI 000039b8: PUSH2 0x39c0 000039bb: JUMPI 000039bc: PUSH1 0x01 000039be: SWAP1 000039bf: JUMP 000039c0: JUMPDEST 000039c1: PUSH1 0x02 000039c3: SWAP1 000039c4: JUMP 000039c5: JUMPDEST 000039c6: PUSH2 0x39ce 000039c9: JUMPI 000039ca: PUSH1 0x03 000039cc: SWAP1 000039cd: JUMP 000039ce: JUMPDEST 000039cf: PUSH1 0x04 000039d1: SWAP1 000039d2: JUMP 000039d3: JUMPDEST 000039d4: POP 000039d5: PUSH1 0x05 000039d7: SWAP1 000039d8: JUMP 000039d9: JUMPDEST 000039da: POP 000039db: PUSH0 000039dc: SWAP1 000039dd: JUMP 000039de: JUMPDEST 000039df: SWAP1 000039e0: SWAP3 000039e1: SWAP2 000039e2: PUSH2 0x39ec 000039e5: DUP2 000039e6: DUP6 000039e7: DUP5 000039e8: PUSH2 0x370e 000039eb: JUMP 000039ec: JUMPDEST 000039ed: DUP4 000039ee: EXTCODESIZE 000039ef: PUSH2 0x39f9 000039f2: JUMPI 000039f3: JUMPDEST 000039f4: POP 000039f5: POP 000039f6: POP 000039f7: POP 000039f8: JUMP 000039f9: JUMPDEST 000039fa: PUSH1 0x20 000039fc: SWAP2 000039fd: PUSH2 0x3a34 00003a00: PUSH1 0x40 00003a02: MLOAD 00003a03: SWAP5 00003a04: DUP6 00003a05: SWAP4 00003a06: DUP5 00003a07: SWAP4 00003a08: PUSH32 0x150b7a0200000000000000000000000000000000000000000000000000000000 00003a29: DUP6 00003a2a: MSTORE 00003a2b: CALLER 00003a2c: PUSH1 0x04 00003a2e: DUP7 00003a2f: ADD 00003a30: PUSH2 0x4db5 00003a33: JUMP 00003a34: JUMPDEST 00003a35: SUB 00003a36: DUP2 00003a37: PUSH0 00003a38: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003a4d: DUP8 00003a4e: AND 00003a4f: GAS 00003a50: CALL 00003a51: PUSH0 00003a52: SWAP2 00003a53: DUP2 00003a54: PUSH2 0x3b4c 00003a57: JUMPI 00003a58: JUMPDEST 00003a59: POP 00003a5a: PUSH2 0x3ab8 00003a5d: JUMPI 00003a5e: POP 00003a5f: PUSH2 0x3a66 00003a62: PUSH2 0x36cb 00003a65: JUMP 00003a66: JUMPDEST 00003a67: DUP1 00003a68: MLOAD 00003a69: SWAP2 00003a6a: SWAP1 00003a6b: DUP3 00003a6c: PUSH2 0x3ab1 00003a6f: JUMPI 00003a70: PUSH32 0x64a0ae9200000000000000000000000000000000000000000000000000000000 00003a91: PUSH0 00003a92: MSTORE 00003a93: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003aa8: DUP3 00003aa9: AND 00003aaa: PUSH1 0x04 00003aac: MSTORE 00003aad: PUSH1 0x24 00003aaf: PUSH0 00003ab0: REVERT 00003ab1: JUMPDEST 00003ab2: SWAP1 00003ab3: POP 00003ab4: PUSH1 0x20 00003ab6: ADD 00003ab7: REVERT 00003ab8: JUMPDEST 00003ab9: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 00003ada: PUSH32 0x150b7a0200000000000000000000000000000000000000000000000000000000 00003afb: SWAP2 00003afc: AND 00003afd: SUB 00003afe: PUSH2 0x3b0b 00003b01: JUMPI 00003b02: POP 00003b03: PUSH0 00003b04: DUP1 00003b05: DUP1 00003b06: DUP1 00003b07: PUSH2 0x39f3 00003b0a: JUMP 00003b0b: JUMPDEST 00003b0c: PUSH32 0x64a0ae9200000000000000000000000000000000000000000000000000000000 00003b2d: PUSH0 00003b2e: MSTORE 00003b2f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003b44: AND 00003b45: PUSH1 0x04 00003b47: MSTORE 00003b48: PUSH1 0x24 00003b4a: PUSH0 00003b4b: REVERT 00003b4c: JUMPDEST 00003b4d: PUSH2 0x3b66 00003b50: SWAP2 00003b51: SWAP3 00003b52: POP 00003b53: PUSH1 0x20 00003b55: RETURNDATASIZE 00003b56: PUSH1 0x20 00003b58: GT 00003b59: PUSH2 0x253a 00003b5c: JUMPI 00003b5d: PUSH2 0x252c 00003b60: DUP2 00003b61: DUP4 00003b62: PUSH2 0x2c47 00003b65: JUMP 00003b66: JUMPDEST 00003b67: SWAP1 00003b68: PUSH0 00003b69: PUSH2 0x3a58 00003b6c: JUMP 00003b6d: JUMPDEST 00003b6e: SWAP2 00003b6f: SWAP1 00003b70: DUP3 00003b71: ADD 00003b72: DUP1 00003b73: SWAP3 00003b74: GT 00003b75: PUSH2 0x38e0 00003b78: JUMPI 00003b79: JUMP 00003b7a: JUMPDEST 00003b7b: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00003b9c: PUSH0 00003b9d: MSTORE 00003b9e: PUSH1 0x12 00003ba0: PUSH1 0x04 00003ba2: MSTORE 00003ba3: PUSH1 0x24 00003ba5: PUSH0 00003ba6: REVERT 00003ba7: JUMPDEST 00003ba8: DUP2 00003ba9: ISZERO 00003baa: PUSH2 0x3bb1 00003bad: JUMPI 00003bae: DIV 00003baf: SWAP1 00003bb0: JUMP 00003bb1: JUMPDEST 00003bb2: PUSH2 0x3b7a 00003bb5: JUMP 00003bb6: JUMPDEST 00003bb7: DUP2 00003bb8: ISZERO 00003bb9: PUSH2 0x3bb1 00003bbc: JUMPI 00003bbd: MOD 00003bbe: SWAP1 00003bbf: JUMP 00003bc0: JUMPDEST 00003bc1: PUSH16 0xffffffffffffffffffffffffffffffff 00003bd2: PUSH2 0x3be6 00003bd5: PUSH2 0x1677 00003bd8: DUP4 00003bd9: PUSH0 00003bda: MSTORE 00003bdb: PUSH1 0x0b 00003bdd: PUSH1 0x20 00003bdf: MSTORE 00003be0: PUSH1 0x40 00003be2: PUSH0 00003be3: KECCAK256 00003be4: SWAP1 00003be5: JUMP 00003be6: JUMPDEST 00003be7: AND 00003be8: SWAP1 00003be9: DUP2 00003bea: ISZERO 00003beb: PUSH2 0x3cd9 00003bee: JUMPI 00003bef: PUSH2 0x3c0f 00003bf2: PUSH2 0x3c08 00003bf5: PUSH1 0x02 00003bf7: PUSH2 0x16b5 00003bfa: DUP5 00003bfb: PUSH0 00003bfc: MSTORE 00003bfd: PUSH1 0x0b 00003bff: PUSH1 0x20 00003c01: MSTORE 00003c02: PUSH1 0x40 00003c04: PUSH0 00003c05: KECCAK256 00003c06: SWAP1 00003c07: JUMP 00003c08: JUMPDEST 00003c09: DUP1 00003c0a: SWAP4 00003c0b: PUSH2 0x4e0d 00003c0e: JUMP 00003c0f: JUMPDEST 00003c10: SWAP2 00003c11: PUSH2 0x3c2f 00003c14: PUSH1 0x03 00003c16: PUSH2 0x3c27 00003c19: DUP5 00003c1a: PUSH0 00003c1b: MSTORE 00003c1c: PUSH1 0x0b 00003c1e: PUSH1 0x20 00003c20: MSTORE 00003c21: PUSH1 0x40 00003c23: PUSH0 00003c24: KECCAK256 00003c25: SWAP1 00003c26: JUMP 00003c27: JUMPDEST 00003c28: ADD 00003c29: SLOAD 00003c2a: SWAP2 00003c2b: PUSH2 0x4df0 00003c2e: JUMP 00003c2f: JUMPDEST 00003c30: PUSH2 0x3c41 00003c33: PUSH2 0x3c3b 00003c36: DUP5 00003c37: PUSH2 0x4c02 00003c3a: JUMP 00003c3b: JUMPDEST 00003c3c: DUP4 00003c3d: PUSH2 0x3b6d 00003c40: JUMP 00003c41: JUMPDEST 00003c42: PUSH2 0x3c4b 00003c45: DUP3 00003c46: DUP7 00003c47: PUSH2 0x3b6d 00003c4a: JUMP 00003c4b: JUMPDEST 00003c4c: GT 00003c4d: ISZERO 00003c4e: PUSH2 0x3cd1 00003c51: JUMPI 00003c52: PUSH2 0x3c84 00003c55: SWAP2 00003c56: PUSH2 0x3c70 00003c59: PUSH2 0x399c 00003c5c: PUSH2 0x399c 00003c5f: PUSH2 0x3995 00003c62: DUP8 00003c63: PUSH0 00003c64: MSTORE 00003c65: PUSH1 0x0b 00003c67: PUSH1 0x20 00003c69: MSTORE 00003c6a: PUSH1 0x40 00003c6c: PUSH0 00003c6d: KECCAK256 00003c6e: SWAP1 00003c6f: JUMP 00003c70: JUMPDEST 00003c71: SWAP5 00003c72: SUB 00003c73: ADD 00003c74: SWAP3 00003c75: PUSH2 0x3c7e 00003c78: DUP2 00003c79: DUP6 00003c7a: PUSH2 0x3ba7 00003c7d: JUMP 00003c7e: JUMPDEST 00003c7f: SWAP4 00003c80: PUSH2 0x3bb6 00003c83: JUMP 00003c84: JUMPDEST 00003c85: PUSH2 0x3cb0 00003c88: JUMPI 00003c89: PUSH2 0x3ca2 00003c8c: PUSH1 0x01 00003c8e: PUSH2 0x391e 00003c91: PUSH2 0x3cac 00003c94: SWAP4 00003c95: PUSH0 00003c96: MSTORE 00003c97: PUSH1 0x0b 00003c99: PUSH1 0x20 00003c9b: MSTORE 00003c9c: PUSH1 0x40 00003c9e: PUSH0 00003c9f: KECCAK256 00003ca0: SWAP1 00003ca1: JUMP 00003ca2: JUMPDEST 00003ca3: PUSH5 0xffffffffff 00003ca9: AND 00003caa: SWAP1 00003cab: JUMP 00003cac: JUMPDEST 00003cad: ADD 00003cae: SWAP1 00003caf: JUMP 00003cb0: JUMPDEST 00003cb1: SWAP1 00003cb2: PUSH2 0x3ccc 00003cb5: PUSH2 0x3ca2 00003cb8: PUSH1 0x01 00003cba: PUSH2 0x391e 00003cbd: DUP2 00003cbe: SWAP6 00003cbf: PUSH0 00003cc0: MSTORE 00003cc1: PUSH1 0x0b 00003cc3: PUSH1 0x20 00003cc5: MSTORE 00003cc6: PUSH1 0x40 00003cc8: PUSH0 00003cc9: KECCAK256 00003cca: SWAP1 00003ccb: JUMP 00003ccc: JUMPDEST 00003ccd: ADD 00003cce: ADD 00003ccf: SWAP1 00003cd0: JUMP 00003cd1: JUMPDEST 00003cd2: POP 00003cd3: POP 00003cd4: POP 00003cd5: POP 00003cd6: PUSH0 00003cd7: SWAP1 00003cd8: JUMP 00003cd9: JUMPDEST 00003cda: PUSH32 0x0f04b2a100000000000000000000000000000000000000000000000000000000 00003cfb: PUSH0 00003cfc: MSTORE 00003cfd: PUSH1 0x04 00003cff: MSTORE 00003d00: PUSH1 0x24 00003d02: PUSH0 00003d03: REVERT 00003d04: JUMPDEST 00003d05: DUP1 00003d06: PUSH0 00003d07: MSTORE 00003d08: PUSH1 0x03 00003d0a: PUSH1 0x20 00003d0c: MSTORE 00003d0d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003d22: PUSH1 0x40 00003d24: PUSH0 00003d25: KECCAK256 00003d26: SLOAD 00003d27: AND 00003d28: SWAP1 00003d29: DUP2 00003d2a: ISZERO 00003d2b: PUSH2 0x3d32 00003d2e: JUMPI 00003d2f: POP 00003d30: SWAP1 00003d31: JUMP 00003d32: JUMPDEST 00003d33: PUSH32 0x7e27328900000000000000000000000000000000000000000000000000000000 00003d54: PUSH0 00003d55: MSTORE 00003d56: PUSH1 0x04 00003d58: MSTORE 00003d59: PUSH1 0x24 00003d5b: PUSH0 00003d5c: REVERT 00003d5d: JUMPDEST 00003d5e: DUP1 00003d5f: PUSH0 00003d60: MSTORE 00003d61: PUSH1 0x0b 00003d63: PUSH1 0x20 00003d65: MSTORE 00003d66: PUSH1 0xff 00003d68: PUSH1 0x01 00003d6a: PUSH1 0x40 00003d6c: PUSH0 00003d6d: KECCAK256 00003d6e: ADD 00003d6f: SLOAD 00003d70: PUSH1 0xc8 00003d72: SHR 00003d73: AND 00003d74: ISZERO 00003d75: PUSH2 0x3d7b 00003d78: JUMPI 00003d79: POP 00003d7a: JUMP 00003d7b: JUMPDEST 00003d7c: PUSH32 0x92c3843400000000000000000000000000000000000000000000000000000000 00003d9d: PUSH0 00003d9e: MSTORE 00003d9f: PUSH1 0x04 00003da1: MSTORE 00003da2: PUSH1 0x24 00003da4: PUSH0 00003da5: REVERT 00003da6: JUMPDEST 00003da7: PUSH2 0x3daf 00003daa: DUP2 00003dab: PUSH2 0x4c02 00003dae: JUMP 00003daf: JUMPDEST 00003db0: DUP2 00003db1: PUSH0 00003db2: MSTORE 00003db3: PUSH1 0x0b 00003db5: PUSH1 0x20 00003db7: MSTORE 00003db8: PUSH1 0x03 00003dba: PUSH1 0x40 00003dbc: PUSH0 00003dbd: KECCAK256 00003dbe: ADD 00003dbf: SLOAD 00003dc0: DUP2 00003dc1: ADD 00003dc2: DUP1 00003dc3: SWAP2 00003dc4: GT 00003dc5: PUSH2 0x38e0 00003dc8: JUMPI 00003dc9: PUSH2 0x059b 00003dcc: SWAP2 00003dcd: PUSH0 00003dce: MSTORE 00003dcf: PUSH1 0x0b 00003dd1: PUSH1 0x20 00003dd3: MSTORE 00003dd4: PUSH1 0xff 00003dd6: PUSH1 0x02 00003dd8: PUSH1 0x40 00003dda: PUSH0 00003ddb: KECCAK256 00003ddc: ADD 00003ddd: SLOAD 00003dde: PUSH1 0xa0 00003de0: SHR 00003de1: AND 00003de2: SWAP1 00003de3: PUSH2 0x531e 00003de6: JUMP 00003de7: JUMPDEST 00003de8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003dfd: PUSH32 0x0000000000000000000000007a86d3e6894f9c5b5f25ffbdaae658cfc7569623 00003e1e: AND 00003e1f: ADDRESS 00003e20: SUB 00003e21: PUSH2 0x3e26 00003e24: JUMPI 00003e25: JUMP 00003e26: JUMPDEST 00003e27: PUSH32 0xa1c0d6e500000000000000000000000000000000000000000000000000000000 00003e48: PUSH0 00003e49: MSTORE 00003e4a: PUSH1 0x04 00003e4c: PUSH0 00003e4d: REVERT 00003e4e: JUMPDEST 00003e4f: SWAP1 00003e50: PUSH16 0xffffffffffffffffffffffffffffffff 00003e61: DUP1 00003e62: SWAP2 00003e63: AND 00003e64: SWAP2 00003e65: AND 00003e66: SUB 00003e67: SWAP1 00003e68: PUSH16 0xffffffffffffffffffffffffffffffff 00003e79: DUP3 00003e7a: GT 00003e7b: PUSH2 0x38e0 00003e7e: JUMPI 00003e7f: JUMP 00003e80: JUMPDEST 00003e81: PUSH2 0x059b 00003e84: SWAP1 00003e85: DUP1 00003e86: PUSH0 00003e87: MSTORE 00003e88: PUSH1 0x0b 00003e8a: PUSH1 0x20 00003e8c: MSTORE 00003e8d: PUSH2 0x3eac 00003e90: PUSH16 0xffffffffffffffffffffffffffffffff 00003ea1: PUSH1 0x40 00003ea3: PUSH0 00003ea4: KECCAK256 00003ea5: SLOAD 00003ea6: AND 00003ea7: SWAP2 00003ea8: PUSH2 0x4b05 00003eab: JUMP 00003eac: JUMPDEST 00003ead: SWAP1 00003eae: PUSH2 0x3e4e 00003eb1: JUMP 00003eb2: JUMPDEST 00003eb3: PUSH16 0xffffffffffffffffffffffffffffffff 00003ec4: DUP3 00003ec5: AND 00003ec6: DUP1 00003ec7: ISZERO 00003ec8: PUSH2 0x40ff 00003ecb: JUMPI 00003ecc: PUSH2 0x3ed4 00003ecf: DUP3 00003ed0: PUSH2 0x3e80 00003ed3: JUMP 00003ed4: JUMPDEST 00003ed5: PUSH16 0xffffffffffffffffffffffffffffffff 00003ee6: DUP2 00003ee7: AND 00003ee8: SWAP1 00003ee9: DUP2 00003eea: DUP4 00003eeb: GT 00003eec: PUSH2 0x40b7 00003eef: JUMPI 00003ef0: POP 00003ef1: PUSH2 0x3f08 00003ef4: PUSH2 0x399c 00003ef7: PUSH2 0x1677 00003efa: DUP6 00003efb: PUSH0 00003efc: MSTORE 00003efd: PUSH1 0x0b 00003eff: PUSH1 0x20 00003f01: MSTORE 00003f02: PUSH1 0x40 00003f04: PUSH0 00003f05: KECCAK256 00003f06: SWAP1 00003f07: JUMP 00003f08: JUMPDEST 00003f09: LT 00003f0a: PUSH2 0x4054 00003f0d: JUMPI 00003f0e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00003f23: PUSH32 0xe31f2d40d5780915b1e656a67e11bdf09b0a4a925ec42bbeae220c8ca937ab49 00003f44: SWAP2 00003f45: PUSH2 0x402e 00003f48: PUSH2 0x3f5e 00003f4b: PUSH1 0x01 00003f4d: PUSH2 0x13b7 00003f50: DUP8 00003f51: PUSH0 00003f52: MSTORE 00003f53: PUSH1 0x0b 00003f55: PUSH1 0x20 00003f57: MSTORE 00003f58: PUSH1 0x40 00003f5a: PUSH0 00003f5b: KECCAK256 00003f5c: SWAP1 00003f5d: JUMP 00003f5e: JUMPDEST 00003f5f: SWAP2 00003f60: DUP3 00003f61: PUSH2 0x3f77 00003f64: PUSH1 0x02 00003f66: PUSH2 0x13b7 00003f69: DUP10 00003f6a: PUSH0 00003f6b: MSTORE 00003f6c: PUSH1 0x0b 00003f6e: PUSH1 0x20 00003f70: MSTORE 00003f71: PUSH1 0x40 00003f73: PUSH0 00003f74: KECCAK256 00003f75: SWAP1 00003f76: JUMP 00003f77: JUMPDEST 00003f78: PUSH2 0x3ffb 00003f7b: PUSH2 0x3f8c 00003f7e: DUP10 00003f7f: PUSH0 00003f80: MSTORE 00003f81: PUSH1 0x0b 00003f83: PUSH1 0x20 00003f85: MSTORE 00003f86: PUSH1 0x40 00003f88: PUSH0 00003f89: KECCAK256 00003f8a: SWAP1 00003f8b: JUMP 00003f8c: JUMPDEST 00003f8d: PUSH2 0x3fc0 00003f90: DUP12 00003f91: PUSH2 0x3faa 00003f94: DUP4 00003f95: SLOAD 00003f96: PUSH16 0xffffffffffffffffffffffffffffffff 00003fa7: AND 00003fa8: SWAP1 00003fa9: JUMP 00003faa: JUMPDEST 00003fab: SUB 00003fac: PUSH16 0xffffffffffffffffffffffffffffffff 00003fbd: AND 00003fbe: SWAP1 00003fbf: JUMP 00003fc0: JUMPDEST 00003fc1: PUSH16 0xffffffffffffffffffffffffffffffff 00003fd2: AND 00003fd3: PUSH32 0xffffffffffffffffffffffffffffffff00000000000000000000000000000000 00003ff4: DUP3 00003ff5: SLOAD 00003ff6: AND 00003ff7: OR 00003ff8: SWAP1 00003ff9: SSTORE 00003ffa: JUMP 00003ffb: JUMPDEST 00003ffc: PUSH2 0x4023 00003fff: DUP2 00004000: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00004015: AND 00004016: PUSH0 00004017: MSTORE 00004018: PUSH1 0x07 0000401a: PUSH1 0x20 0000401c: MSTORE 0000401d: PUSH1 0x40 0000401f: PUSH0 00004020: KECCAK256 00004021: SWAP1 00004022: JUMP 00004023: JUMPDEST 00004024: DUP4 00004025: DUP2 00004026: SLOAD 00004027: SUB 00004028: SWAP1 00004029: SSTORE 0000402a: PUSH2 0x4ba0 0000402d: JUMP 0000402e: JUMPDEST 0000402f: PUSH1 0x40 00004031: MLOAD 00004032: PUSH16 0xffffffffffffffffffffffffffffffff 00004043: SWAP1 00004044: SWAP6 00004045: AND 00004046: DUP6 00004047: MSTORE 00004048: AND 00004049: SWAP3 0000404a: DUP1 0000404b: PUSH1 0x20 0000404d: DUP2 0000404e: ADD 0000404f: JUMPDEST 00004050: SUB 00004051: SWAP1 00004052: LOG3 00004053: JUMP 00004054: JUMPDEST 00004055: PUSH2 0x08d5 00004058: DUP4 00004059: DUP4 0000405a: PUSH2 0x406e 0000405d: PUSH2 0x1677 00004060: DUP3 00004061: PUSH0 00004062: MSTORE 00004063: PUSH1 0x0b 00004065: PUSH1 0x20 00004067: MSTORE 00004068: PUSH1 0x40 0000406a: PUSH0 0000406b: KECCAK256 0000406c: SWAP1 0000406d: JUMP 0000406e: JUMPDEST 0000406f: SWAP1 00004070: PUSH32 0xcb5f605f00000000000000000000000000000000000000000000000000000000 00004091: PUSH0 00004092: MSTORE 00004093: SWAP3 00004094: SWAP2 00004095: PUSH16 0xffffffffffffffffffffffffffffffff 000040a6: DUP1 000040a7: SWAP3 000040a8: PUSH1 0x64 000040aa: SWAP6 000040ab: PUSH1 0x04 000040ad: MSTORE 000040ae: AND 000040af: PUSH1 0x24 000040b1: MSTORE 000040b2: AND 000040b3: PUSH1 0x44 000040b5: MSTORE 000040b6: JUMP 000040b7: JUMPDEST 000040b8: PUSH32 0xe977140100000000000000000000000000000000000000000000000000000000 000040d9: PUSH0 000040da: MSTORE 000040db: PUSH1 0x04 000040dd: DUP5 000040de: SWAP1 000040df: MSTORE 000040e0: PUSH16 0xffffffffffffffffffffffffffffffff 000040f1: DUP1 000040f2: DUP7 000040f3: AND 000040f4: PUSH1 0x24 000040f6: MSTORE 000040f7: AND 000040f8: PUSH1 0x44 000040fa: MSTORE 000040fb: PUSH1 0x64 000040fd: PUSH0 000040fe: REVERT 000040ff: JUMPDEST 00004100: PUSH32 0xea66b87100000000000000000000000000000000000000000000000000000000 00004121: PUSH0 00004122: MSTORE 00004123: PUSH1 0x04 00004125: DUP3 00004126: SWAP1 00004127: MSTORE 00004128: PUSH1 0x24 0000412a: PUSH0 0000412b: REVERT 0000412c: JUMPDEST 0000412d: DUP1 0000412e: PUSH0 0000412f: MSTORE 00004130: PUSH1 0x0b 00004132: PUSH1 0x20 00004134: MSTORE 00004135: PUSH5 0xffffffffff 0000413b: PUSH1 0x01 0000413d: PUSH1 0x40 0000413f: PUSH0 00004140: KECCAK256 00004141: ADD 00004142: SLOAD 00004143: PUSH1 0xa0 00004145: SHR 00004146: AND 00004147: PUSH5 0xffffffffff 0000414d: TIMESTAMP 0000414e: SWAP2 0000414f: AND 00004150: GT 00004151: PUSH2 0x41e2 00004154: JUMPI 00004155: PUSH2 0x415e 00004158: PUSH0 00004159: DUP3 0000415a: PUSH2 0x4c77 0000415d: JUMP 0000415e: JUMPDEST 0000415f: PUSH2 0x4175 00004162: PUSH1 0x01 00004164: PUSH2 0x13b7 00004167: DUP4 00004168: PUSH0 00004169: MSTORE 0000416a: PUSH1 0x0b 0000416c: PUSH1 0x20 0000416e: MSTORE 0000416f: PUSH1 0x40 00004171: PUSH0 00004172: KECCAK256 00004173: SWAP1 00004174: JUMP 00004175: JUMPDEST 00004176: SWAP1 00004177: PUSH2 0x418b 0000417a: PUSH2 0x15bf 0000417d: DUP3 0000417e: PUSH0 0000417f: MSTORE 00004180: PUSH1 0x03 00004182: PUSH1 0x20 00004184: MSTORE 00004185: PUSH1 0x40 00004187: PUSH0 00004188: KECCAK256 00004189: SWAP1 0000418a: JUMP 0000418b: JUMPDEST 0000418c: SWAP1 0000418d: PUSH32 0xda83bf669c651406e02062769e01d14cccb5625ea685fd95e0e56d29597dac47 000041ae: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000041c3: PUSH2 0x41cb 000041c6: DUP4 000041c7: PUSH2 0x3da6 000041ca: JUMP 000041cb: JUMPDEST 000041cc: PUSH1 0x40 000041ce: MLOAD 000041cf: SWAP1 000041d0: DUP2 000041d1: MSTORE 000041d2: SWAP4 000041d3: DUP2 000041d4: AND 000041d5: SWAP5 000041d6: AND 000041d7: SWAP3 000041d8: DUP1 000041d9: PUSH1 0x20 000041db: DUP2 000041dc: ADD 000041dd: JUMPDEST 000041de: SUB 000041df: SWAP1 000041e0: LOG4 000041e1: JUMP 000041e2: JUMPDEST 000041e3: DUP1 000041e4: PUSH2 0x41fd 000041e7: PUSH1 0x01 000041e9: PUSH2 0x391e 000041ec: PUSH2 0x08d5 000041ef: SWAP5 000041f0: PUSH0 000041f1: MSTORE 000041f2: PUSH1 0x0b 000041f4: PUSH1 0x20 000041f6: MSTORE 000041f7: PUSH1 0x40 000041f9: PUSH0 000041fa: KECCAK256 000041fb: SWAP1 000041fc: JUMP 000041fd: JUMPDEST 000041fe: PUSH32 0x54ae995a00000000000000000000000000000000000000000000000000000000 0000421f: PUSH0 00004220: MSTORE 00004221: PUSH1 0x04 00004223: SWAP2 00004224: SWAP1 00004225: SWAP2 00004226: MSTORE 00004227: PUSH5 0xffffffffff 0000422d: AND 0000422e: PUSH1 0x24 00004230: MSTORE 00004231: PUSH1 0x44 00004233: SWAP1 00004234: JUMP 00004235: JUMPDEST 00004236: DUP1 00004237: PUSH0 00004238: MSTORE 00004239: PUSH1 0x0b 0000423b: PUSH1 0x20 0000423d: MSTORE 0000423e: PUSH1 0x40 00004240: PUSH0 00004241: KECCAK256 00004242: SLOAD 00004243: PUSH1 0x80 00004245: SHR 00004246: PUSH2 0x4297 00004249: JUMPI 0000424a: PUSH2 0x4253 0000424d: DUP3 0000424e: DUP3 0000424f: PUSH2 0x4c77 00004252: JUMP 00004253: JUMPDEST 00004254: PUSH1 0x40 00004256: MLOAD 00004257: PUSH16 0xffffffffffffffffffffffffffffffff 00004268: SWAP3 00004269: SWAP1 0000426a: SWAP3 0000426b: AND 0000426c: DUP3 0000426d: MSTORE 0000426e: CALLER 0000426f: SWAP2 00004270: PUSH32 0xc2a543cfadbf862642247e28711aaa30e3460384be5712be6557fee3384454fd 00004291: SWAP1 00004292: PUSH1 0x20 00004294: SWAP1 00004295: LOG3 00004296: JUMP 00004297: JUMPDEST 00004298: PUSH32 0xdc6fbbbc00000000000000000000000000000000000000000000000000000000 000042b9: PUSH0 000042ba: MSTORE 000042bb: PUSH1 0x04 000042bd: MSTORE 000042be: PUSH1 0x24 000042c0: PUSH0 000042c1: REVERT 000042c2: JUMPDEST 000042c3: PUSH16 0xffffffffffffffffffffffffffffffff 000042d4: DUP3 000042d5: AND 000042d6: DUP1 000042d7: ISZERO 000042d8: PUSH2 0x43f8 000042db: JUMPI 000042dc: PUSH0 000042dd: DUP3 000042de: DUP2 000042df: MSTORE 000042e0: PUSH1 0x0b 000042e2: PUSH1 0x20 000042e4: MSTORE 000042e5: PUSH1 0x40 000042e7: SWAP1 000042e8: KECCAK256 000042e9: PUSH1 0x02 000042eb: DUP2 000042ec: ADD 000042ed: SLOAD 000042ee: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00004303: AND 00004304: SWAP2 00004305: SWAP1 00004306: SWAP2 00004307: DUP2 00004308: PUSH16 0xffffffffffffffffffffffffffffffff 00004319: DUP1 0000431a: DUP6 0000431b: SLOAD 0000431c: AND 0000431d: AND 0000431e: ADD 0000431f: SWAP3 00004320: PUSH16 0xffffffffffffffffffffffffffffffff 00004331: DUP5 00004332: GT 00004333: PUSH2 0x38e0 00004336: JUMPI 00004337: PUSH2 0x43b1 0000433a: SWAP4 0000433b: PUSH2 0x437a 0000433e: SWAP2 0000433f: SWAP1 00004340: PUSH16 0xffffffffffffffffffffffffffffffff 00004351: AND 00004352: PUSH32 0xffffffffffffffffffffffffffffffff00000000000000000000000000000000 00004373: DUP3 00004374: SLOAD 00004375: AND 00004376: OR 00004377: SWAP1 00004378: SSTORE 00004379: JUMP 0000437a: JUMPDEST 0000437b: PUSH2 0x43a2 0000437e: DUP2 0000437f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00004394: AND 00004395: PUSH0 00004396: MSTORE 00004397: PUSH1 0x07 00004399: PUSH1 0x20 0000439b: MSTORE 0000439c: PUSH1 0x40 0000439e: PUSH0 0000439f: KECCAK256 000043a0: SWAP1 000043a1: JUMP 000043a2: JUMPDEST 000043a3: DUP3 000043a4: DUP2 000043a5: SLOAD 000043a6: ADD 000043a7: SWAP1 000043a8: SSTORE 000043a9: ADDRESS 000043aa: SWAP1 000043ab: CALLER 000043ac: SWAP1 000043ad: PUSH2 0x4424 000043b0: JUMP 000043b1: JUMPDEST 000043b2: PUSH1 0x40 000043b4: MLOAD 000043b5: PUSH16 0xffffffffffffffffffffffffffffffff 000043c6: SWAP1 000043c7: SWAP3 000043c8: AND 000043c9: DUP3 000043ca: MSTORE 000043cb: CALLER 000043cc: SWAP2 000043cd: PUSH32 0xa06c1466b3c9751408a5ac337a2e8808e5ee0ceed1fd70635d041b21174eb6b4 000043ee: SWAP1 000043ef: DUP1 000043f0: PUSH1 0x20 000043f2: DUP2 000043f3: ADD 000043f4: PUSH2 0x404f 000043f7: JUMP 000043f8: JUMPDEST 000043f9: POP 000043fa: PUSH32 0x33f2df5a00000000000000000000000000000000000000000000000000000000 0000441b: PUSH0 0000441c: MSTORE 0000441d: PUSH1 0x04 0000441f: MSTORE 00004420: PUSH1 0x24 00004422: PUSH0 00004423: REVERT 00004424: JUMPDEST 00004425: SWAP1 00004426: SWAP2 00004427: SWAP3 00004428: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000443d: PUSH2 0x2c98 00004440: SWAP5 00004441: DUP2 00004442: PUSH1 0x40 00004444: MLOAD 00004445: SWAP6 00004446: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000 00004467: PUSH1 0x20 00004469: DUP9 0000446a: ADD 0000446b: MSTORE 0000446c: AND 0000446d: PUSH1 0x24 0000446f: DUP7 00004470: ADD 00004471: MSTORE 00004472: AND 00004473: PUSH1 0x44 00004475: DUP5 00004476: ADD 00004477: MSTORE 00004478: PUSH1 0x64 0000447a: DUP4 0000447b: ADD 0000447c: MSTORE 0000447d: PUSH1 0x64 0000447f: DUP3 00004480: MSTORE 00004481: PUSH2 0x448b 00004484: PUSH1 0x84 00004486: DUP4 00004487: PUSH2 0x2c47 0000448a: JUMP 0000448b: JUMPDEST 0000448c: PUSH2 0x555d 0000448f: JUMP 00004490: JUMPDEST 00004491: SWAP1 00004492: DUP2 00004493: PUSH1 0x20 00004495: SWAP2 00004496: SUB 00004497: SLT 00004498: PUSH2 0x03fe 0000449b: JUMPI 0000449c: MLOAD 0000449d: PUSH1 0xff 0000449f: DUP2 000044a0: AND 000044a1: DUP2 000044a2: SUB 000044a3: PUSH2 0x03fe 000044a6: JUMPI 000044a7: SWAP1 000044a8: JUMP 000044a9: JUMPDEST 000044aa: SWAP1 000044ab: PUSH2 0x0120 000044ae: PUSH1 0x03 000044b0: SWAP2 000044b1: PUSH2 0x450a 000044b4: PUSH2 0x44cd 000044b7: DUP3 000044b8: MLOAD 000044b9: PUSH16 0xffffffffffffffffffffffffffffffff 000044ca: AND 000044cb: SWAP1 000044cc: JUMP 000044cd: JUMPDEST 000044ce: DUP6 000044cf: SWAP1 000044d0: PUSH16 0xffffffffffffffffffffffffffffffff 000044e1: AND 000044e2: PUSH32 0xffffffffffffffffffffffffffffffff00000000000000000000000000000000 00004503: DUP3 00004504: SLOAD 00004505: AND 00004506: OR 00004507: SWAP1 00004508: SSTORE 00004509: JUMP 0000450a: JUMPDEST 0000450b: PUSH2 0x456b 0000450e: PUSH2 0x452a 00004511: PUSH1 0x20 00004513: DUP4 00004514: ADD 00004515: MLOAD 00004516: PUSH16 0xffffffffffffffffffffffffffffffff 00004527: AND 00004528: SWAP1 00004529: JUMP 0000452a: JUMPDEST 0000452b: DUP6 0000452c: SLOAD 0000452d: PUSH16 0xffffffffffffffffffffffffffffffff 0000453e: AND 0000453f: PUSH1 0x80 00004541: SWAP2 00004542: SWAP1 00004543: SWAP2 00004544: SHL 00004545: PUSH32 0xffffffffffffffffffffffffffffffff00000000000000000000000000000000 00004566: AND 00004567: OR 00004568: DUP6 00004569: SSTORE 0000456a: JUMP 0000456b: JUMPDEST 0000456c: PUSH2 0x4741 0000456f: PUSH1 0x01 00004571: DUP6 00004572: ADD 00004573: PUSH2 0x45d7 00004576: PUSH2 0x4596 00004579: PUSH1 0x40 0000457b: DUP6 0000457c: ADD 0000457d: MLOAD 0000457e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00004593: AND 00004594: SWAP1 00004595: JUMP 00004596: JUMPDEST 00004597: DUP3 00004598: SWAP1 00004599: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000045ae: AND 000045af: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 000045d0: DUP3 000045d1: SLOAD 000045d2: AND 000045d3: OR 000045d4: SWAP1 000045d5: SSTORE 000045d6: JUMP 000045d7: JUMPDEST 000045d8: PUSH2 0x4636 000045db: PUSH2 0x45ec 000045de: PUSH1 0x60 000045e0: DUP6 000045e1: ADD 000045e2: MLOAD 000045e3: PUSH5 0xffffffffff 000045e9: AND 000045ea: SWAP1 000045eb: JUMP 000045ec: JUMPDEST 000045ed: DUP3 000045ee: SLOAD 000045ef: PUSH32 0xffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff 00004610: AND 00004611: PUSH1 0xa0 00004613: SWAP2 00004614: SWAP1 00004615: SWAP2 00004616: SHL 00004617: PUSH25 0xffffffffff0000000000000000000000000000000000000000 00004631: AND 00004632: OR 00004633: DUP3 00004634: SSTORE 00004635: JUMP 00004636: JUMPDEST 00004637: PUSH2 0x4691 0000463a: PUSH2 0x4646 0000463d: PUSH1 0x80 0000463f: DUP6 00004640: ADD 00004641: MLOAD 00004642: ISZERO 00004643: ISZERO 00004644: SWAP1 00004645: JUMP 00004646: JUMPDEST 00004647: DUP3 00004648: SLOAD 00004649: PUSH32 0xffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff 0000466a: AND 0000466b: SWAP1 0000466c: ISZERO 0000466d: ISZERO 0000466e: PUSH1 0xc8 00004670: SHL 00004671: PUSH26 0xff00000000000000000000000000000000000000000000000000 0000468c: AND 0000468d: OR 0000468e: DUP3 0000468f: SSTORE 00004690: JUMP 00004691: JUMPDEST 00004692: PUSH2 0x46ed 00004695: PUSH2 0x46a1 00004698: PUSH1 0xa0 0000469a: DUP6 0000469b: ADD 0000469c: MLOAD 0000469d: ISZERO 0000469e: ISZERO 0000469f: SWAP1 000046a0: JUMP 000046a1: JUMPDEST 000046a2: DUP3 000046a3: SLOAD 000046a4: PUSH32 0xffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff 000046c5: AND 000046c6: SWAP1 000046c7: ISZERO 000046c8: ISZERO 000046c9: PUSH1 0xd0 000046cb: SHL 000046cc: PUSH27 0xff0000000000000000000000000000000000000000000000000000 000046e8: AND 000046e9: OR 000046ea: DUP3 000046eb: SSTORE 000046ec: JUMP 000046ed: JUMPDEST 000046ee: PUSH1 0xc0 000046f0: DUP4 000046f1: ADD 000046f2: MLOAD 000046f3: ISZERO 000046f4: ISZERO 000046f5: DUP2 000046f6: SLOAD 000046f7: PUSH32 0xffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff 00004718: AND 00004719: SWAP1 0000471a: ISZERO 0000471b: ISZERO 0000471c: PUSH1 0xd8 0000471e: SHL 0000471f: PUSH28 0xff000000000000000000000000000000000000000000000000000000 0000473c: AND 0000473d: OR 0000473e: SWAP1 0000473f: SSTORE 00004740: JUMP 00004741: JUMPDEST 00004742: PUSH2 0x47b8 00004745: PUSH1 0x02 00004747: DUP6 00004748: ADD 00004749: PUSH2 0x476c 0000474c: PUSH2 0x4596 0000474f: PUSH1 0xe0 00004751: DUP6 00004752: ADD 00004753: MLOAD 00004754: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00004769: AND 0000476a: SWAP1 0000476b: JUMP 0000476c: JUMPDEST 0000476d: PUSH2 0x0100 00004770: DUP4 00004771: ADD 00004772: MLOAD 00004773: DUP2 00004774: SLOAD 00004775: PUSH32 0xffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff 00004796: AND 00004797: PUSH1 0xa0 00004799: SWAP2 0000479a: SWAP1 0000479b: SWAP2 0000479c: SHL 0000479d: PUSH21 0xff0000000000000000000000000000000000000000 000047b3: AND 000047b4: OR 000047b5: SWAP1 000047b6: SSTORE 000047b7: JUMP 000047b8: JUMPDEST 000047b9: ADD 000047ba: MLOAD 000047bb: SWAP2 000047bc: ADD 000047bd: SSTORE 000047be: JUMP 000047bf: JUMPDEST 000047c0: SWAP4 000047c1: SWAP6 000047c2: SWAP5 000047c3: SWAP1 000047c4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000047d9: DUP6 000047da: AND 000047db: SWAP3 000047dc: DUP4 000047dd: ISZERO 000047de: PUSH2 0x4add 000047e1: JUMPI 000047e2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000047f7: DUP9 000047f8: AND 000047f9: SWAP6 000047fa: PUSH2 0x4818 000047fd: PUSH1 0x08 000047ff: SLOAD 00004800: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00004815: AND 00004816: SWAP1 00004817: JUMP 00004818: JUMPDEST 00004819: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000482e: DUP2 0000482f: AND 00004830: DUP9 00004831: EQ 00004832: PUSH2 0x4a9c 00004835: JUMPI 00004836: POP 00004837: PUSH1 0x40 00004839: MLOAD 0000483a: SWAP6 0000483b: PUSH32 0x313ce56700000000000000000000000000000000000000000000000000000000 0000485c: DUP8 0000485d: MSTORE 0000485e: PUSH1 0x20 00004860: DUP8 00004861: PUSH1 0x04 00004863: DUP2 00004864: DUP12 00004865: GAS 00004866: STATICCALL 00004867: SWAP7 00004868: DUP8 00004869: ISZERO 0000486a: PUSH2 0x1a70 0000486d: JUMPI 0000486e: PUSH0 0000486f: SWAP8 00004870: PUSH2 0x4a6b 00004873: JUMPI 00004874: JUMPDEST 00004875: POP 00004876: PUSH1 0x12 00004878: PUSH1 0xff 0000487a: DUP9 0000487b: AND 0000487c: GT 0000487d: PUSH2 0x4a29 00004880: JUMPI 00004881: PUSH5 0xffffffffff 00004887: TIMESTAMP 00004888: AND 00004889: SWAP1 0000488a: PUSH5 0xffffffffff 00004890: DUP2 00004891: AND 00004892: DUP3 00004893: DUP2 00004894: GT 00004895: DUP1 00004896: PUSH2 0x4a0f 00004899: JUMPI 0000489a: JUMPDEST 0000489b: PUSH2 0x49e7 0000489e: JUMPI 0000489f: PUSH2 0x49df 000048a2: JUMPI 000048a3: POP 000048a4: SWAP6 000048a5: JUMPDEST 000048a6: PUSH1 0x09 000048a8: SLOAD 000048a9: SWAP10 000048aa: PUSH2 0x48b1 000048ad: PUSH2 0x2c88 000048b0: JUMP 000048b1: JUMPDEST 000048b2: PUSH0 000048b3: DUP2 000048b4: MSTORE 000048b5: PUSH16 0xffffffffffffffffffffffffffffffff 000048c6: DUP6 000048c7: AND 000048c8: PUSH1 0x20 000048ca: DUP3 000048cb: ADD 000048cc: MSTORE 000048cd: SWAP3 000048ce: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000048e3: AND 000048e4: PUSH1 0x40 000048e6: DUP5 000048e7: ADD 000048e8: MSTORE 000048e9: PUSH5 0xffffffffff 000048ef: DUP9 000048f0: AND 000048f1: PUSH1 0x60 000048f3: DUP5 000048f4: ADD 000048f5: MSTORE 000048f6: PUSH1 0x01 000048f8: PUSH1 0x80 000048fa: DUP5 000048fb: ADD 000048fc: MSTORE 000048fd: DUP6 000048fe: ISZERO 000048ff: ISZERO 00004900: PUSH1 0xa0 00004902: DUP5 00004903: ADD 00004904: MSTORE 00004905: PUSH0 00004906: PUSH1 0xc0 00004908: DUP5 00004909: ADD 0000490a: MSTORE 0000490b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00004920: AND 00004921: PUSH1 0xe0 00004923: DUP4 00004924: ADD 00004925: MSTORE 00004926: PUSH1 0xff 00004928: AND 00004929: PUSH2 0x0100 0000492c: DUP3 0000492d: ADD 0000492e: MSTORE 0000492f: PUSH2 0x0120 00004932: DUP2 00004933: ADD 00004934: PUSH0 00004935: SWAP1 00004936: MSTORE 00004937: PUSH2 0x4948 0000493a: DUP10 0000493b: PUSH0 0000493c: MSTORE 0000493d: PUSH1 0x0b 0000493f: PUSH1 0x20 00004941: MSTORE 00004942: PUSH1 0x40 00004944: PUSH0 00004945: KECCAK256 00004946: SWAP1 00004947: JUMP 00004948: JUMPDEST 00004949: SWAP1 0000494a: PUSH2 0x4952 0000494d: SWAP2 0000494e: PUSH2 0x44a9 00004951: JUMP 00004952: JUMPDEST 00004953: PUSH2 0x495c 00004956: DUP9 00004957: DUP4 00004958: PUSH2 0x55e4 0000495b: JUMP 0000495c: JUMPDEST 0000495d: PUSH1 0x01 0000495f: DUP9 00004960: ADD 00004961: PUSH1 0x09 00004963: SSTORE 00004964: PUSH1 0x40 00004966: DUP1 00004967: MLOAD 00004968: DUP10 00004969: DUP2 0000496a: MSTORE 0000496b: CALLER 0000496c: PUSH1 0x20 0000496e: DUP3 0000496f: ADD 00004970: MSTORE 00004971: PUSH16 0xffffffffffffffffffffffffffffffff 00004982: SWAP3 00004983: SWAP1 00004984: SWAP3 00004985: AND 00004986: SWAP1 00004987: DUP3 00004988: ADD 00004989: MSTORE 0000498a: PUSH5 0xffffffffff 00004990: SWAP5 00004991: SWAP1 00004992: SWAP5 00004993: AND 00004994: PUSH1 0x60 00004996: DUP6 00004997: ADD 00004998: MSTORE 00004999: SWAP1 0000499a: ISZERO 0000499b: ISZERO 0000499c: PUSH1 0x80 0000499e: DUP5 0000499f: ADD 000049a0: MSTORE 000049a1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000049b6: AND 000049b7: SWAP2 000049b8: PUSH32 0xedec8afa4eeca64243a519c152eab5c4f9da1bded6fbb72cba74cd128de68369 000049d9: SWAP1 000049da: PUSH1 0xa0 000049dc: SWAP1 000049dd: LOG4 000049de: JUMP 000049df: JUMPDEST 000049e0: SWAP1 000049e1: POP 000049e2: SWAP6 000049e3: PUSH2 0x48a5 000049e6: JUMP 000049e7: JUMPDEST 000049e8: PUSH32 0xd6d8693d00000000000000000000000000000000000000000000000000000000 00004a09: PUSH0 00004a0a: MSTORE 00004a0b: PUSH1 0x04 00004a0d: PUSH0 00004a0e: REVERT 00004a0f: JUMPDEST 00004a10: POP 00004a11: PUSH16 0xffffffffffffffffffffffffffffffff 00004a22: DUP6 00004a23: AND 00004a24: ISZERO 00004a25: PUSH2 0x489a 00004a28: JUMP 00004a29: JUMPDEST 00004a2a: PUSH32 0xc9f5539200000000000000000000000000000000000000000000000000000000 00004a4b: PUSH0 00004a4c: MSTORE 00004a4d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00004a62: DUP9 00004a63: AND 00004a64: PUSH1 0x04 00004a66: MSTORE 00004a67: PUSH1 0x24 00004a69: PUSH0 00004a6a: REVERT 00004a6b: JUMPDEST 00004a6c: PUSH2 0x4a8e 00004a6f: SWAP2 00004a70: SWAP8 00004a71: POP 00004a72: PUSH1 0x20 00004a74: RETURNDATASIZE 00004a75: PUSH1 0x20 00004a77: GT 00004a78: PUSH2 0x4a95 00004a7b: JUMPI 00004a7c: JUMPDEST 00004a7d: PUSH2 0x4a86 00004a80: DUP2 00004a81: DUP4 00004a82: PUSH2 0x2c47 00004a85: JUMP 00004a86: JUMPDEST 00004a87: DUP2 00004a88: ADD 00004a89: SWAP1 00004a8a: PUSH2 0x4490 00004a8d: JUMP 00004a8e: JUMPDEST 00004a8f: SWAP6 00004a90: PUSH0 00004a91: PUSH2 0x4874 00004a94: JUMP 00004a95: JUMPDEST 00004a96: POP 00004a97: RETURNDATASIZE 00004a98: PUSH2 0x4a7c 00004a9b: JUMP 00004a9c: JUMPDEST 00004a9d: PUSH32 0x987f548900000000000000000000000000000000000000000000000000000000 00004abe: PUSH0 00004abf: MSTORE 00004ac0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00004ad5: AND 00004ad6: PUSH1 0x04 00004ad8: MSTORE 00004ad9: PUSH1 0x24 00004adb: PUSH0 00004adc: REVERT 00004add: JUMPDEST 00004ade: PUSH32 0xf9bb0fb300000000000000000000000000000000000000000000000000000000 00004aff: PUSH0 00004b00: MSTORE 00004b01: PUSH1 0x04 00004b03: PUSH0 00004b04: REVERT 00004b05: JUMPDEST 00004b06: DUP1 00004b07: PUSH0 00004b08: MSTORE 00004b09: PUSH1 0x0b 00004b0b: PUSH1 0x20 00004b0d: MSTORE 00004b0e: PUSH16 0xffffffffffffffffffffffffffffffff 00004b1f: PUSH1 0x40 00004b21: PUSH0 00004b22: KECCAK256 00004b23: SLOAD 00004b24: AND 00004b25: SWAP1 00004b26: DUP2 00004b27: ISZERO 00004b28: PUSH2 0x4b49 00004b2b: JUMPI 00004b2c: PUSH2 0x4b34 00004b2f: SWAP1 00004b30: PUSH2 0x3da6 00004b33: JUMP 00004b34: JUMPDEST 00004b35: DUP1 00004b36: DUP3 00004b37: LT 00004b38: PUSH2 0x4b45 00004b3b: JUMPI 00004b3c: PUSH2 0x059b 00004b3f: SWAP2 00004b40: POP 00004b41: PUSH2 0x56d8 00004b44: JUMP 00004b45: JUMPDEST 00004b46: POP 00004b47: SWAP1 00004b48: JUMP 00004b49: JUMPDEST 00004b4a: POP 00004b4b: POP 00004b4c: PUSH0 00004b4d: SWAP1 00004b4e: JUMP 00004b4f: JUMPDEST 00004b50: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00004b65: PUSH0 00004b66: SLOAD 00004b67: AND 00004b68: DUP1 00004b69: CALLER 00004b6a: SUB 00004b6b: PUSH2 0x4b71 00004b6e: JUMPI 00004b6f: POP 00004b70: JUMP 00004b71: JUMPDEST 00004b72: PUSH32 0xa7e1519e00000000000000000000000000000000000000000000000000000000 00004b93: PUSH0 00004b94: MSTORE 00004b95: PUSH1 0x04 00004b97: MSTORE 00004b98: CALLER 00004b99: PUSH1 0x24 00004b9b: MSTORE 00004b9c: PUSH1 0x44 00004b9e: PUSH0 00004b9f: REVERT 00004ba0: JUMPDEST 00004ba1: PUSH1 0x40 00004ba3: MLOAD 00004ba4: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000 00004bc5: PUSH1 0x20 00004bc7: DUP3 00004bc8: ADD 00004bc9: MSTORE 00004bca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00004bdf: SWAP3 00004be0: SWAP1 00004be1: SWAP3 00004be2: AND 00004be3: PUSH1 0x24 00004be5: DUP4 00004be6: ADD 00004be7: MSTORE 00004be8: PUSH1 0x44 00004bea: DUP1 00004beb: DUP4 00004bec: ADD 00004bed: SWAP4 00004bee: SWAP1 00004bef: SWAP4 00004bf0: MSTORE 00004bf1: SWAP2 00004bf2: DUP2 00004bf3: MSTORE 00004bf4: PUSH2 0x2c98 00004bf7: SWAP2 00004bf8: PUSH2 0x448b 00004bfb: PUSH1 0x64 00004bfd: DUP4 00004bfe: PUSH2 0x2c47 00004c01: JUMP 00004c02: JUMPDEST 00004c03: DUP1 00004c04: PUSH0 00004c05: MSTORE 00004c06: PUSH1 0x0b 00004c08: PUSH1 0x20 00004c0a: MSTORE 00004c0b: PUSH5 0xffffffffff 00004c11: PUSH1 0x01 00004c13: PUSH1 0x40 00004c15: PUSH0 00004c16: KECCAK256 00004c17: ADD 00004c18: SLOAD 00004c19: PUSH1 0xa0 00004c1b: SHR 00004c1c: AND 00004c1d: SWAP1 00004c1e: TIMESTAMP 00004c1f: DUP3 00004c20: LT 00004c21: ISZERO 00004c22: PUSH2 0x4b49 00004c25: JUMPI 00004c26: PUSH0 00004c27: MSTORE 00004c28: PUSH1 0x0b 00004c2a: PUSH1 0x20 00004c2c: MSTORE 00004c2d: PUSH16 0xffffffffffffffffffffffffffffffff 00004c3e: PUSH1 0x40 00004c40: PUSH0 00004c41: KECCAK256 00004c42: SLOAD 00004c43: PUSH1 0x80 00004c45: SHR 00004c46: AND 00004c47: SWAP1 00004c48: DUP2 00004c49: ISZERO 00004c4a: PUSH2 0x4b49 00004c4d: JUMPI 00004c4e: TIMESTAMP 00004c4f: SUB 00004c50: DUP2 00004c51: DUP2 00004c52: MUL 00004c53: SWAP2 00004c54: DUP2 00004c55: DUP4 00004c56: DIV 00004c57: EQ 00004c58: SWAP1 00004c59: ISZERO 00004c5a: OR 00004c5b: ISZERO 00004c5c: PUSH2 0x38e0 00004c5f: JUMPI 00004c60: SWAP1 00004c61: JUMP 00004c62: JUMPDEST 00004c63: SWAP1 00004c64: DUP2 00004c65: PUSH1 0x20 00004c67: SWAP2 00004c68: SUB 00004c69: SLT 00004c6a: PUSH2 0x03fe 00004c6d: JUMPI 00004c6e: MLOAD 00004c6f: PUSH2 0x059b 00004c72: DUP2 00004c73: PUSH2 0x1015 00004c76: JUMP 00004c77: JUMPDEST 00004c78: PUSH2 0x4c8f 00004c7b: PUSH2 0x399c 00004c7e: PUSH2 0x3995 00004c81: DUP4 00004c82: PUSH0 00004c83: MSTORE 00004c84: PUSH1 0x0b 00004c86: PUSH1 0x20 00004c88: MSTORE 00004c89: PUSH1 0x40 00004c8b: PUSH0 00004c8c: KECCAK256 00004c8d: SWAP1 00004c8e: JUMP 00004c8f: JUMPDEST 00004c90: PUSH16 0xffffffffffffffffffffffffffffffff 00004ca1: DUP4 00004ca2: AND 00004ca3: EQ 00004ca4: PUSH2 0x4d38 00004ca7: JUMPI 00004ca8: SWAP1 00004ca9: PUSH2 0x14bc 00004cac: PUSH2 0x2c98 00004caf: SWAP3 00004cb0: PUSH5 0xffffffffff 00004cb6: TIMESTAMP 00004cb7: AND 00004cb8: DUP1 00004cb9: PUSH5 0xffffffffff 00004cbf: PUSH2 0x4cd5 00004cc2: PUSH1 0x01 00004cc4: PUSH2 0x391e 00004cc7: DUP7 00004cc8: PUSH0 00004cc9: MSTORE 00004cca: PUSH1 0x0b 00004ccc: PUSH1 0x20 00004cce: MSTORE 00004ccf: PUSH1 0x40 00004cd1: PUSH0 00004cd2: KECCAK256 00004cd3: SWAP1 00004cd4: JUMP 00004cd5: JUMPDEST 00004cd6: AND 00004cd7: LT 00004cd8: PUSH2 0x4ceb 00004cdb: JUMPI 00004cdc: JUMPDEST 00004cdd: POP 00004cde: PUSH0 00004cdf: MSTORE 00004ce0: PUSH1 0x0b 00004ce2: PUSH1 0x20 00004ce4: MSTORE 00004ce5: PUSH1 0x40 00004ce7: PUSH0 00004ce8: KECCAK256 00004ce9: SWAP1 00004cea: JUMP 00004ceb: JUMPDEST 00004cec: PUSH2 0x4d13 00004cef: SWAP1 00004cf0: PUSH2 0x4cf8 00004cf3: DUP4 00004cf4: PUSH2 0x4c02 00004cf7: JUMP 00004cf8: JUMPDEST 00004cf9: DUP1 00004cfa: PUSH2 0x4d19 00004cfd: JUMPI 00004cfe: JUMPDEST 00004cff: POP 00004d00: PUSH1 0x01 00004d02: PUSH2 0x145b 00004d05: DUP5 00004d06: PUSH0 00004d07: MSTORE 00004d08: PUSH1 0x0b 00004d0a: PUSH1 0x20 00004d0c: MSTORE 00004d0d: PUSH1 0x40 00004d0f: PUSH0 00004d10: KECCAK256 00004d11: SWAP1 00004d12: JUMP 00004d13: JUMPDEST 00004d14: PUSH0 00004d15: PUSH2 0x4cdc 00004d18: JUMP 00004d19: JUMPDEST 00004d1a: PUSH2 0x4d30 00004d1d: PUSH1 0x03 00004d1f: PUSH2 0x164e 00004d22: DUP7 00004d23: PUSH0 00004d24: MSTORE 00004d25: PUSH1 0x0b 00004d27: PUSH1 0x20 00004d29: MSTORE 00004d2a: PUSH1 0x40 00004d2c: PUSH0 00004d2d: KECCAK256 00004d2e: SWAP1 00004d2f: JUMP 00004d30: JUMPDEST 00004d31: SWAP1 00004d32: SSTORE 00004d33: PUSH0 00004d34: PUSH2 0x4cfe 00004d37: JUMP 00004d38: JUMPDEST 00004d39: PUSH32 0xd2657d5a00000000000000000000000000000000000000000000000000000000 00004d5a: PUSH0 00004d5b: MSTORE 00004d5c: PUSH1 0x04 00004d5e: MSTORE 00004d5f: PUSH16 0xffffffffffffffffffffffffffffffff 00004d70: AND 00004d71: PUSH1 0x24 00004d73: MSTORE 00004d74: PUSH1 0x44 00004d76: PUSH0 00004d77: REVERT 00004d78: JUMPDEST 00004d79: DUP1 00004d7a: PUSH0 00004d7b: MSTORE 00004d7c: PUSH1 0x0b 00004d7e: PUSH1 0x20 00004d80: MSTORE 00004d81: PUSH2 0x4da0 00004d84: PUSH16 0xffffffffffffffffffffffffffffffff 00004d95: PUSH1 0x40 00004d97: PUSH0 00004d98: KECCAK256 00004d99: SLOAD 00004d9a: AND 00004d9b: SWAP2 00004d9c: PUSH2 0x3da6 00004d9f: JUMP 00004da0: JUMPDEST 00004da1: SWAP1 00004da2: DUP2 00004da3: DUP2 00004da4: LT 00004da5: ISZERO 00004da6: PUSH2 0x4b49 00004da9: JUMPI 00004daa: DUP2 00004dab: SUB 00004dac: SWAP1 00004dad: DUP2 00004dae: GT 00004daf: PUSH2 0x38e0 00004db2: JUMPI 00004db3: SWAP1 00004db4: JUMP 00004db5: JUMPDEST 00004db6: SWAP1 00004db7: SWAP3 00004db8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00004dcd: PUSH1 0x80 00004dcf: SWAP4 00004dd0: DUP2 00004dd1: PUSH2 0x059b 00004dd4: SWAP8 00004dd5: SWAP7 00004dd6: AND 00004dd7: DUP5 00004dd8: MSTORE 00004dd9: AND 00004dda: PUSH1 0x20 00004ddc: DUP4 00004ddd: ADD 00004dde: MSTORE 00004ddf: PUSH1 0x40 00004de1: DUP3 00004de2: ADD 00004de3: MSTORE 00004de4: DUP2 00004de5: PUSH1 0x60 00004de7: DUP3 00004de8: ADD 00004de9: MSTORE 00004dea: ADD 00004deb: SWAP1 00004dec: PUSH2 0x0547 00004def: JUMP 00004df0: JUMPDEST 00004df1: PUSH1 0x12 00004df3: PUSH1 0xff 00004df5: DUP3 00004df6: AND 00004df7: EQ 00004df8: PUSH2 0x4e07 00004dfb: JUMPI 00004dfc: PUSH1 0x12 00004dfe: SUB 00004dff: PUSH1 0xff 00004e01: AND 00004e02: PUSH1 0x0a 00004e04: EXP 00004e05: SWAP1 00004e06: JUMP 00004e07: JUMPDEST 00004e08: POP 00004e09: PUSH1 0x01 00004e0b: SWAP1 00004e0c: JUMP 00004e0d: JUMPDEST 00004e0e: SWAP1 00004e0f: PUSH1 0x12 00004e11: PUSH1 0xff 00004e13: DUP3 00004e14: AND 00004e15: EQ 00004e16: PUSH2 0x4b45 00004e19: JUMPI 00004e1a: PUSH1 0x12 00004e1c: SUB 00004e1d: PUSH1 0xff 00004e1f: AND 00004e20: PUSH1 0x0a 00004e22: EXP 00004e23: MUL 00004e24: SWAP1 00004e25: JUMP 00004e26: JUMPDEST 00004e27: ISZERO 00004e28: PUSH2 0x4e2d 00004e2b: JUMPI 00004e2c: JUMP 00004e2d: JUMPDEST 00004e2e: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00004e4f: PUSH0 00004e50: MSTORE 00004e51: PUSH1 0x01 00004e53: PUSH1 0x04 00004e55: MSTORE 00004e56: PUSH1 0x24 00004e58: PUSH0 00004e59: REVERT 00004e5a: JUMPDEST 00004e5b: PUSH2 0x4ef0 00004e5e: PUSH1 0x20 00004e60: PUSH2 0x4e80 00004e63: PUSH2 0x13d2 00004e66: PUSH0 00004e67: SLOAD 00004e68: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00004e7d: AND 00004e7e: SWAP1 00004e7f: JUMP 00004e80: JUMPDEST 00004e81: PUSH2 0x4e97 00004e84: PUSH1 0x01 00004e86: PUSH2 0x13b7 00004e89: DUP7 00004e8a: PUSH0 00004e8b: MSTORE 00004e8c: PUSH1 0x0b 00004e8e: PUSH1 0x20 00004e90: MSTORE 00004e91: PUSH1 0x40 00004e93: PUSH0 00004e94: KECCAK256 00004e95: SWAP1 00004e96: JUMP 00004e97: JUMPDEST 00004e98: SWAP1 00004e99: PUSH1 0x40 00004e9b: MLOAD 00004e9c: DUP1 00004e9d: DUP1 00004e9e: SWAP6 00004e9f: DUP2 00004ea0: SWAP5 00004ea1: PUSH32 0x419d289d00000000000000000000000000000000000000000000000000000000 00004ec2: DUP4 00004ec3: MSTORE 00004ec4: PUSH1 0x04 00004ec6: DUP4 00004ec7: ADD 00004ec8: SWAP2 00004ec9: SWAP1 00004eca: SWAP2 00004ecb: PUSH1 0x20 00004ecd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00004ee2: PUSH1 0x40 00004ee4: DUP4 00004ee5: ADD 00004ee6: SWAP5 00004ee7: PUSH1 0x01 00004ee9: DUP5 00004eea: MSTORE 00004eeb: AND 00004eec: SWAP2 00004eed: ADD 00004eee: MSTORE 00004eef: JUMP 00004ef0: JUMPDEST 00004ef1: SUB 00004ef2: SWAP2 00004ef3: GAS 00004ef4: STATICCALL 00004ef5: SWAP1 00004ef6: DUP2 00004ef7: ISZERO 00004ef8: PUSH2 0x1a70 00004efb: JUMPI 00004efc: PUSH0 00004efd: SWAP2 00004efe: PUSH2 0x52ff 00004f01: JUMPI 00004f02: JUMPDEST 00004f03: POP 00004f04: DUP1 00004f05: CALLVALUE 00004f06: LT 00004f07: PUSH2 0x52d0 00004f0a: JUMPI 00004f0b: POP 00004f0c: PUSH16 0xffffffffffffffffffffffffffffffff 00004f1d: DUP4 00004f1e: AND 00004f1f: SWAP2 00004f20: DUP3 00004f21: ISZERO 00004f22: PUSH2 0x52a3 00004f25: JUMPI 00004f26: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00004f3b: DUP2 00004f3c: AND 00004f3d: SWAP3 00004f3e: DUP4 00004f3f: ISZERO 00004f40: PUSH2 0x5276 00004f43: JUMPI 00004f44: PUSH2 0x4f58 00004f47: PUSH2 0x15bf 00004f4a: DUP5 00004f4b: PUSH0 00004f4c: MSTORE 00004f4d: PUSH1 0x03 00004f4f: PUSH1 0x20 00004f51: MSTORE 00004f52: PUSH1 0x40 00004f54: PUSH0 00004f55: KECCAK256 00004f56: SWAP1 00004f57: JUMP 00004f58: JUMPDEST 00004f59: DUP4 00004f5a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00004f6f: DUP3 00004f70: AND 00004f71: DUP7 00004f72: EQ 00004f73: ISZERO 00004f74: SWAP2 00004f75: DUP3 00004f76: PUSH2 0x525e 00004f79: JUMPI 00004f7a: JUMPDEST 00004f7b: POP 00004f7c: POP 00004f7d: PUSH2 0x5212 00004f80: JUMPI 00004f81: PUSH2 0x4f97 00004f84: PUSH1 0x02 00004f86: PUSH2 0x16b5 00004f89: DUP6 00004f8a: PUSH0 00004f8b: MSTORE 00004f8c: PUSH1 0x0b 00004f8e: PUSH1 0x20 00004f90: MSTORE 00004f91: PUSH1 0x40 00004f93: PUSH0 00004f94: KECCAK256 00004f95: SWAP1 00004f96: JUMP 00004f97: JUMPDEST 00004f98: SWAP1 00004f99: PUSH2 0x4fc0 00004f9c: PUSH2 0x4fa4 00004f9f: DUP6 00004fa0: PUSH2 0x4c02 00004fa3: JUMP 00004fa4: JUMPDEST 00004fa5: PUSH1 0x03 00004fa7: PUSH2 0x4fb8 00004faa: DUP8 00004fab: PUSH0 00004fac: MSTORE 00004fad: PUSH1 0x0b 00004faf: PUSH1 0x20 00004fb1: MSTORE 00004fb2: PUSH1 0x40 00004fb4: PUSH0 00004fb5: KECCAK256 00004fb6: SWAP1 00004fb7: JUMP 00004fb8: JUMPDEST 00004fb9: ADD 00004fba: SLOAD 00004fbb: SWAP1 00004fbc: PUSH2 0x3b6d 00004fbf: JUMP 00004fc0: JUMPDEST 00004fc1: SWAP1 00004fc2: PUSH2 0x4fcb 00004fc5: DUP4 00004fc6: DUP4 00004fc7: PUSH2 0x531e 00004fca: JUMP 00004fcb: JUMPDEST 00004fcc: SWAP2 00004fcd: PUSH2 0x4fe1 00004fd0: PUSH2 0x1677 00004fd3: DUP8 00004fd4: PUSH0 00004fd5: MSTORE 00004fd6: PUSH1 0x0b 00004fd8: PUSH1 0x20 00004fda: MSTORE 00004fdb: PUSH1 0x40 00004fdd: PUSH0 00004fde: KECCAK256 00004fdf: SWAP1 00004fe0: JUMP 00004fe1: JUMPDEST 00004fe2: SWAP4 00004fe3: DUP4 00004fe4: PUSH16 0xffffffffffffffffffffffffffffffff 00004ff5: DUP7 00004ff6: AND 00004ff7: LT 00004ff8: PUSH0 00004ff9: EQ 00004ffa: PUSH2 0x5204 00004ffd: JUMPI 00004ffe: DUP5 00004fff: JUMPDEST 00005000: PUSH16 0xffffffffffffffffffffffffffffffff 00005011: DUP2 00005012: AND 00005013: DUP5 00005014: GT 00005015: PUSH2 0x51bc 00005018: JUMPI 00005019: POP 0000501a: PUSH2 0x399c 0000501d: PUSH2 0x5138 00005020: PUSH32 0x864d728834a993d067a518141636724c1196e5f004565e5b2a7b174b7f74f997 00005041: SWAP8 00005042: SWAP6 00005043: PUSH2 0x5129 00005046: DUP7 00005047: PUSH2 0x50f4 0000504a: PUSH1 0x02 0000504c: DUP16 0000504d: DUP15 0000504e: PUSH2 0x50e6 00005051: PUSH2 0x13b7 00005054: SWAP3 00005055: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000506a: SWAP16 0000506b: SWAP13 0000506c: PUSH2 0x507c 0000506f: PUSH2 0x5154 00005072: SWAP16 00005073: SWAP14 00005074: PUSH2 0x514e 00005077: SWAP15 00005078: PUSH2 0x4e0d 0000507b: JUMP 0000507c: JUMPDEST 0000507d: SWAP1 0000507e: PUSH1 0x03 00005080: PUSH2 0x5091 00005083: DUP7 00005084: PUSH0 00005085: MSTORE 00005086: PUSH1 0x0b 00005088: PUSH1 0x20 0000508a: MSTORE 0000508b: PUSH1 0x40 0000508d: PUSH0 0000508e: KECCAK256 0000508f: SWAP1 00005090: JUMP 00005091: JUMPDEST 00005092: ADD 00005093: SLOAD 00005094: DUP3 00005095: GT 00005096: PUSH2 0x5181 00005099: JUMPI 0000509a: POP 0000509b: PUSH1 0x03 0000509d: PUSH2 0x50ae 000050a0: DUP6 000050a1: PUSH0 000050a2: MSTORE 000050a3: PUSH1 0x0b 000050a5: PUSH1 0x20 000050a7: MSTORE 000050a8: PUSH1 0x40 000050aa: PUSH0 000050ab: KECCAK256 000050ac: SWAP1 000050ad: JUMP 000050ae: JUMPDEST 000050af: ADD 000050b0: SWAP1 000050b1: DUP2 000050b2: SLOAD 000050b3: SUB 000050b4: SWAP1 000050b5: SSTORE 000050b6: JUMPDEST 000050b7: PUSH2 0x3fc0 000050ba: PUSH2 0x50cb 000050bd: DUP5 000050be: PUSH0 000050bf: MSTORE 000050c0: PUSH1 0x0b 000050c2: PUSH1 0x20 000050c4: MSTORE 000050c5: PUSH1 0x40 000050c7: PUSH0 000050c8: KECCAK256 000050c9: SWAP1 000050ca: JUMP 000050cb: JUMPDEST 000050cc: SWAP2 000050cd: PUSH2 0x3faa 000050d0: DUP4 000050d1: SLOAD 000050d2: PUSH16 0xffffffffffffffffffffffffffffffff 000050e3: AND 000050e4: SWAP1 000050e5: JUMP 000050e6: JUMPDEST 000050e7: PUSH0 000050e8: MSTORE 000050e9: PUSH1 0x0b 000050eb: PUSH1 0x20 000050ed: MSTORE 000050ee: PUSH1 0x40 000050f0: PUSH0 000050f1: KECCAK256 000050f2: SWAP1 000050f3: JUMP 000050f4: JUMPDEST 000050f5: SWAP9 000050f6: PUSH2 0x511d 000050f9: DUP11 000050fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000510f: AND 00005110: PUSH0 00005111: MSTORE 00005112: PUSH1 0x07 00005114: PUSH1 0x20 00005116: MSTORE 00005117: PUSH1 0x40 00005119: PUSH0 0000511a: KECCAK256 0000511b: SWAP1 0000511c: JUMP 0000511d: JUMPDEST 0000511e: DUP3 0000511f: DUP2 00005120: SLOAD 00005121: SUB 00005122: SWAP1 00005123: SSTORE 00005124: DUP10 00005125: PUSH2 0x4ba0 00005128: JUMP 00005129: JUMPDEST 0000512a: PUSH2 0x5132 0000512d: DUP11 0000512e: PUSH2 0x3da6 00005131: JUMP 00005132: JUMPDEST 00005133: SWAP1 00005134: PUSH2 0x38e5 00005137: JUMP 00005138: JUMPDEST 00005139: SWAP3 0000513a: PUSH2 0x3eac 0000513d: PUSH2 0x1677 00005140: DUP11 00005141: PUSH0 00005142: MSTORE 00005143: PUSH1 0x0b 00005145: PUSH1 0x20 00005147: MSTORE 00005148: PUSH1 0x40 0000514a: PUSH0 0000514b: KECCAK256 0000514c: SWAP1 0000514d: JUMP 0000514e: JUMPDEST 0000514f: EQ 00005150: PUSH2 0x4e26 00005153: JUMP 00005154: JUMPDEST 00005155: PUSH1 0x40 00005157: DUP1 00005158: MLOAD 00005159: CALLER 0000515a: DUP2 0000515b: MSTORE 0000515c: PUSH16 0xffffffffffffffffffffffffffffffff 0000516d: SWAP1 0000516e: SWAP8 0000516f: AND 00005170: PUSH1 0x20 00005172: DUP9 00005173: ADD 00005174: MSTORE 00005175: SWAP2 00005176: AND 00005177: SWAP5 00005178: SWAP1 00005179: DUP2 0000517a: SWAP1 0000517b: DUP2 0000517c: ADD 0000517d: PUSH2 0x41dd 00005180: JUMP 00005181: JUMPDEST 00005182: SUB 00005183: PUSH1 0x03 00005185: PUSH2 0x5196 00005188: DUP6 00005189: PUSH0 0000518a: MSTORE 0000518b: PUSH1 0x0b 0000518d: PUSH1 0x20 0000518f: MSTORE 00005190: PUSH1 0x40 00005192: PUSH0 00005193: KECCAK256 00005194: SWAP1 00005195: JUMP 00005196: JUMPDEST 00005197: ADD 00005198: SSTORE 00005199: PUSH2 0x51b7 0000519c: PUSH5 0xffffffffff 000051a2: TIMESTAMP 000051a3: AND 000051a4: PUSH1 0x01 000051a6: PUSH2 0x145b 000051a9: DUP7 000051aa: PUSH0 000051ab: MSTORE 000051ac: PUSH1 0x0b 000051ae: PUSH1 0x20 000051b0: MSTORE 000051b1: PUSH1 0x40 000051b3: PUSH0 000051b4: KECCAK256 000051b5: SWAP1 000051b6: JUMP 000051b7: JUMPDEST 000051b8: PUSH2 0x50b6 000051bb: JUMP 000051bc: JUMPDEST 000051bd: PUSH32 0xf9f2985900000000000000000000000000000000000000000000000000000000 000051de: PUSH0 000051df: MSTORE 000051e0: PUSH1 0x04 000051e2: DUP9 000051e3: SWAP1 000051e4: MSTORE 000051e5: PUSH16 0xffffffffffffffffffffffffffffffff 000051f6: DUP1 000051f7: DUP12 000051f8: AND 000051f9: PUSH1 0x24 000051fb: MSTORE 000051fc: AND 000051fd: PUSH1 0x44 000051ff: MSTORE 00005200: PUSH1 0x64 00005202: PUSH0 00005203: REVERT 00005204: JUMPDEST 00005205: PUSH2 0x520d 00005208: DUP5 00005209: PUSH2 0x56d8 0000520c: JUMP 0000520d: JUMPDEST 0000520e: PUSH2 0x4fff 00005211: JUMP 00005212: JUMPDEST 00005213: POP 00005214: PUSH32 0x4208ab4c00000000000000000000000000000000000000000000000000000000 00005235: PUSH0 00005236: MSTORE 00005237: PUSH1 0x04 00005239: SWAP2 0000523a: SWAP1 0000523b: SWAP2 0000523c: MSTORE 0000523d: CALLER 0000523e: PUSH1 0x24 00005240: MSTORE 00005241: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00005256: AND 00005257: PUSH1 0x44 00005259: MSTORE 0000525a: PUSH1 0x64 0000525c: PUSH0 0000525d: REVERT 0000525e: JUMPDEST 0000525f: PUSH2 0x526f 00005262: SWAP3 00005263: POP 00005264: SWAP1 00005265: PUSH2 0x1733 00005268: SWAP2 00005269: CALLER 0000526a: SWAP1 0000526b: PUSH2 0x573b 0000526e: JUMP 0000526f: JUMPDEST 00005270: DUP4 00005271: PUSH0 00005272: PUSH2 0x4f7a 00005275: JUMP 00005276: JUMPDEST 00005277: PUSH32 0x9f32c85800000000000000000000000000000000000000000000000000000000 00005298: PUSH0 00005299: MSTORE 0000529a: PUSH1 0x04 0000529c: DUP4 0000529d: SWAP1 0000529e: MSTORE 0000529f: PUSH1 0x24 000052a1: PUSH0 000052a2: REVERT 000052a3: JUMPDEST 000052a4: PUSH32 0xb485505200000000000000000000000000000000000000000000000000000000 000052c5: PUSH0 000052c6: MSTORE 000052c7: PUSH1 0x04 000052c9: DUP3 000052ca: SWAP1 000052cb: MSTORE 000052cc: PUSH1 0x24 000052ce: PUSH0 000052cf: REVERT 000052d0: JUMPDEST 000052d1: PUSH32 0x026dd37d00000000000000000000000000000000000000000000000000000000 000052f2: PUSH0 000052f3: MSTORE 000052f4: CALLVALUE 000052f5: PUSH1 0x04 000052f7: MSTORE 000052f8: PUSH1 0x24 000052fa: MSTORE 000052fb: PUSH1 0x44 000052fd: PUSH0 000052fe: REVERT 000052ff: JUMPDEST 00005300: PUSH2 0x5318 00005303: SWAP2 00005304: POP 00005305: PUSH1 0x20 00005307: RETURNDATASIZE 00005308: PUSH1 0x20 0000530a: GT 0000530b: PUSH2 0x1a69 0000530e: JUMPI 0000530f: PUSH2 0x1a5b 00005312: DUP2 00005313: DUP4 00005314: PUSH2 0x2c47 00005317: JUMP 00005318: JUMPDEST 00005319: PUSH0 0000531a: PUSH2 0x4f02 0000531d: JUMP 0000531e: JUMPDEST 0000531f: SWAP1 00005320: PUSH1 0x12 00005322: PUSH1 0xff 00005324: DUP3 00005325: AND 00005326: EQ 00005327: PUSH2 0x4b45 0000532a: JUMPI 0000532b: PUSH1 0x12 0000532d: SUB 0000532e: PUSH1 0xff 00005330: AND 00005331: PUSH1 0x0a 00005333: EXP 00005334: SWAP1 00005335: DUP2 00005336: ISZERO 00005337: PUSH2 0x3bb1 0000533a: JUMPI 0000533b: DIV 0000533c: SWAP1 0000533d: JUMP 0000533e: JUMPDEST 0000533f: PUSH2 0x5350 00005342: SWAP1 00005343: PUSH0 00005344: MSTORE 00005345: PUSH1 0x05 00005347: PUSH1 0x20 00005349: MSTORE 0000534a: PUSH1 0x40 0000534c: PUSH0 0000534d: KECCAK256 0000534e: SWAP1 0000534f: JUMP 00005350: JUMPDEST 00005351: DUP1 00005352: SLOAD 00005353: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00005374: AND 00005375: SWAP1 00005376: SSTORE 00005377: JUMP 00005378: JUMPDEST 00005379: DUP2 0000537a: PUSH0 0000537b: MSTORE 0000537c: PUSH1 0x03 0000537e: PUSH1 0x20 00005380: MSTORE 00005381: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00005396: PUSH1 0x40 00005398: PUSH0 00005399: KECCAK256 0000539a: SLOAD 0000539b: AND 0000539c: SWAP3 0000539d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000053b2: DUP2 000053b3: AND 000053b4: PUSH2 0x54c0 000053b7: JUMPI 000053b8: JUMPDEST 000053b9: POP 000053ba: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000053cf: DUP4 000053d0: AND 000053d1: DUP1 000053d2: PUSH2 0x5464 000053d5: JUMPI 000053d6: JUMPDEST 000053d7: PUSH2 0x5409 000053da: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000053ef: DUP4 000053f0: AND 000053f1: SWAP3 000053f2: DUP4 000053f3: PUSH2 0x5430 000053f6: JUMPI 000053f7: JUMPDEST 000053f8: PUSH2 0x0869 000053fb: DUP6 000053fc: PUSH0 000053fd: MSTORE 000053fe: PUSH1 0x03 00005400: PUSH1 0x20 00005402: MSTORE 00005403: PUSH1 0x40 00005405: PUSH0 00005406: KECCAK256 00005407: SWAP1 00005408: JUMP 00005409: JUMPDEST 0000540a: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef 0000542b: PUSH0 0000542c: DUP1 0000542d: LOG4 0000542e: SWAP1 0000542f: JUMP 00005430: JUMPDEST 00005431: PUSH2 0x5458 00005434: DUP2 00005435: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000544a: AND 0000544b: PUSH0 0000544c: MSTORE 0000544d: PUSH1 0x04 0000544f: PUSH1 0x20 00005451: MSTORE 00005452: PUSH1 0x40 00005454: PUSH0 00005455: KECCAK256 00005456: SWAP1 00005457: JUMP 00005458: JUMPDEST 00005459: PUSH1 0x01 0000545b: DUP2 0000545c: SLOAD 0000545d: ADD 0000545e: SWAP1 0000545f: SSTORE 00005460: PUSH2 0x53f7 00005463: JUMP 00005464: JUMPDEST 00005465: PUSH2 0x546d 00005468: DUP4 00005469: PUSH2 0x533e 0000546c: JUMP 0000546d: JUMPDEST 0000546e: PUSH2 0x5495 00005471: DUP5 00005472: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00005487: AND 00005488: PUSH0 00005489: MSTORE 0000548a: PUSH1 0x04 0000548c: PUSH1 0x20 0000548e: MSTORE 0000548f: PUSH1 0x40 00005491: PUSH0 00005492: KECCAK256 00005493: SWAP1 00005494: JUMP 00005495: JUMPDEST 00005496: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000054b7: DUP2 000054b8: SLOAD 000054b9: ADD 000054ba: SWAP1 000054bb: SSTORE 000054bc: PUSH2 0x53d6 000054bf: JUMP 000054c0: JUMPDEST 000054c1: PUSH2 0x54cb 000054c4: DUP4 000054c5: DUP3 000054c6: DUP7 000054c7: PUSH2 0x573b 000054ca: JUMP 000054cb: JUMPDEST 000054cc: PUSH2 0x53b8 000054cf: JUMPI 000054d0: SWAP1 000054d1: POP 000054d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000054e7: DUP4 000054e8: AND 000054e9: PUSH2 0x5518 000054ec: JUMPI 000054ed: POP 000054ee: PUSH32 0x7e27328900000000000000000000000000000000000000000000000000000000 0000550f: PUSH0 00005510: MSTORE 00005511: PUSH1 0x04 00005513: MSTORE 00005514: PUSH1 0x24 00005516: PUSH0 00005517: REVERT 00005518: JUMPDEST 00005519: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000552e: SWAP1 0000552f: PUSH32 0x177e802f00000000000000000000000000000000000000000000000000000000 00005550: PUSH0 00005551: MSTORE 00005552: AND 00005553: PUSH1 0x04 00005555: MSTORE 00005556: PUSH1 0x24 00005558: MSTORE 00005559: PUSH1 0x44 0000555b: PUSH0 0000555c: REVERT 0000555d: JUMPDEST 0000555e: SWAP1 0000555f: PUSH0 00005560: PUSH1 0x20 00005562: SWAP2 00005563: DUP3 00005564: DUP2 00005565: MLOAD 00005566: SWAP2 00005567: ADD 00005568: DUP3 00005569: DUP6 0000556a: GAS 0000556b: CALL 0000556c: ISZERO 0000556d: PUSH2 0x387b 00005570: JUMPI 00005571: PUSH0 00005572: MLOAD 00005573: RETURNDATASIZE 00005574: PUSH2 0x55db 00005577: JUMPI 00005578: POP 00005579: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000558e: DUP2 0000558f: AND 00005590: EXTCODESIZE 00005591: ISZERO 00005592: JUMPDEST 00005593: PUSH2 0x5599 00005596: JUMPI 00005597: POP 00005598: JUMP 00005599: JUMPDEST 0000559a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000055af: SWAP1 000055b0: PUSH32 0x5274afe700000000000000000000000000000000000000000000000000000000 000055d1: PUSH0 000055d2: MSTORE 000055d3: AND 000055d4: PUSH1 0x04 000055d6: MSTORE 000055d7: PUSH1 0x24 000055d9: PUSH0 000055da: REVERT 000055db: JUMPDEST 000055dc: PUSH1 0x01 000055de: EQ 000055df: ISZERO 000055e0: PUSH2 0x5592 000055e3: JUMP 000055e4: JUMPDEST 000055e5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000055fa: DUP2 000055fb: AND 000055fc: ISZERO 000055fd: PUSH2 0x3840 00005600: JUMPI 00005601: DUP2 00005602: PUSH0 00005603: MSTORE 00005604: PUSH1 0x03 00005606: PUSH1 0x20 00005608: MSTORE 00005609: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000561e: PUSH1 0x40 00005620: PUSH0 00005621: KECCAK256 00005622: SLOAD 00005623: AND 00005624: ISZERO 00005625: ISZERO 00005626: DUP1 00005627: PUSH2 0x56bb 0000562a: JUMPI 0000562b: JUMPDEST 0000562c: PUSH2 0x37f6 0000562f: JUMPI 00005630: SWAP1 00005631: PUSH32 0xf8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7 00005652: PUSH2 0x5685 00005655: PUSH2 0x5674 00005658: PUSH0 00005659: DUP5 0000565a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000566f: SWAP7 00005670: PUSH2 0x5378 00005673: JUMP 00005674: JUMPDEST 00005675: PUSH1 0x40 00005677: MLOAD 00005678: SWAP4 00005679: DUP5 0000567a: MSTORE 0000567b: SWAP3 0000567c: SWAP1 0000567d: DUP2 0000567e: SWAP1 0000567f: PUSH1 0x20 00005681: DUP3 00005682: ADD 00005683: SWAP1 00005684: JUMP 00005685: JUMPDEST 00005686: SUB 00005687: SWAP1 00005688: LOG1 00005689: AND 0000568a: PUSH2 0x568f 0000568d: JUMPI 0000568e: JUMP 0000568f: JUMPDEST 00005690: PUSH32 0x73c6ac6e00000000000000000000000000000000000000000000000000000000 000056b1: PUSH0 000056b2: MSTORE 000056b3: PUSH0 000056b4: PUSH1 0x04 000056b6: MSTORE 000056b7: PUSH1 0x24 000056b9: PUSH0 000056ba: REVERT 000056bb: JUMPDEST 000056bc: POP 000056bd: DUP2 000056be: PUSH0 000056bf: MSTORE 000056c0: PUSH1 0x0b 000056c2: PUSH1 0x20 000056c4: MSTORE 000056c5: PUSH1 0xff 000056c7: PUSH1 0x01 000056c9: PUSH1 0x40 000056cb: PUSH0 000056cc: KECCAK256 000056cd: ADD 000056ce: SLOAD 000056cf: PUSH1 0xd0 000056d1: SHR 000056d2: AND 000056d3: ISZERO 000056d4: PUSH2 0x562b 000056d7: JUMP 000056d8: JUMPDEST 000056d9: PUSH16 0xffffffffffffffffffffffffffffffff 000056ea: DUP2 000056eb: GT 000056ec: PUSH2 0x5704 000056ef: JUMPI 000056f0: PUSH16 0xffffffffffffffffffffffffffffffff 00005701: AND 00005702: SWAP1 00005703: JUMP 00005704: JUMPDEST 00005705: PUSH32 0x6dfcc65000000000000000000000000000000000000000000000000000000000 00005726: PUSH0 00005727: MSTORE 00005728: PUSH1 0x80 0000572a: PUSH1 0x04 0000572c: MSTORE 0000572d: PUSH1 0x24 0000572f: MSTORE 00005730: PUSH1 0x44 00005732: PUSH0 00005733: REVERT 00005734: JUMPDEST 00005735: PUSH2 0x059b 00005738: SWAP2 00005739: CALLER 0000573a: SWAP1 0000573b: JUMPDEST 0000573c: SWAP2 0000573d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00005752: DUP3 00005753: AND 00005754: SWAP1 00005755: DUP2 00005756: ISZERO 00005757: ISZERO 00005758: SWAP4 00005759: DUP5 0000575a: PUSH2 0x5765 0000575d: JUMPI 0000575e: JUMPDEST 0000575f: POP 00005760: POP 00005761: POP 00005762: POP 00005763: SWAP1 00005764: JUMP 00005765: JUMPDEST 00005766: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000577b: AND 0000577c: DUP1 0000577d: DUP4 0000577e: EQ 0000577f: SWAP5 00005780: POP 00005781: SWAP2 00005782: SWAP3 00005783: SWAP1 00005784: SWAP2 00005785: DUP5 00005786: ISZERO 00005787: PUSH2 0x57cc 0000578a: JUMPI 0000578b: JUMPDEST 0000578c: POP 0000578d: POP 0000578e: DUP3 0000578f: ISZERO 00005790: PUSH2 0x579f 00005793: JUMPI 00005794: JUMPDEST 00005795: POP 00005796: POP 00005797: PUSH0 00005798: DUP1 00005799: DUP1 0000579a: DUP1 0000579b: PUSH2 0x575e 0000579e: JUMP 0000579f: JUMPDEST 000057a0: SWAP1 000057a1: SWAP2 000057a2: POP 000057a3: PUSH0 000057a4: MSTORE 000057a5: PUSH1 0x05 000057a7: PUSH1 0x20 000057a9: MSTORE 000057aa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000057bf: PUSH1 0x40 000057c1: PUSH0 000057c2: KECCAK256 000057c3: SLOAD 000057c4: AND 000057c5: EQ 000057c6: PUSH0 000057c7: DUP1 000057c8: PUSH2 0x5794 000057cb: JUMP 000057cc: JUMPDEST 000057cd: PUSH1 0xff 000057cf: SWAP3 000057d0: SWAP5 000057d1: POP 000057d2: SWAP1 000057d3: PUSH2 0x5804 000057d6: SWAP2 000057d7: PUSH0 000057d8: MSTORE 000057d9: PUSH1 0x06 000057db: PUSH1 0x20 000057dd: MSTORE 000057de: PUSH1 0x40 000057e0: PUSH0 000057e1: KECCAK256 000057e2: SWAP1 000057e3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000057f8: AND 000057f9: PUSH0 000057fa: MSTORE 000057fb: PUSH1 0x20 000057fd: MSTORE 000057fe: PUSH1 0x40 00005800: PUSH0 00005801: KECCAK256 00005802: SWAP1 00005803: JUMP 00005804: JUMPDEST 00005805: SLOAD 00005806: AND 00005807: SWAP2 00005808: PUSH0 00005809: DUP1 0000580a: PUSH2 0x578b 0000580d: JUMP 0000580e: INVALID 0000580f: LOG2 00005810: PUSH5 0x6970667358 00005816: UNKNOWN(0x22) 00005817: SLT 00005818: KECCAK256 00005819: UNKNOWN(0x4B) 0000581a: UNKNOWN(0xBB) 0000581b: OR 0000581c: CHAINID 0000581d: STOP 0000581e: UNKNOWN(0x1F) 0000581f: JUMPDEST 00005820: UNKNOWN(0x21) 00005821: LOG3 00005822: PUSH18 0x4c8ecd69036975ac62d44e5029ba1dfedc71 00005835: UNKNOWN(0xB2) 00005836: UNKNOWN(0xBD) 00005837: UNKNOWN(0xB8) 00005838: DUP6 00005839: PUSH5 0x736f6c6343 0000583f: STOP 00005840: ADDMOD 00005841: SAR 00005842: STOP 00005843: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | upgradeability | detector | Untrusted DELEGATECALL target reachable | 55 | no | no |
viewtrace_id: 0x6a78a9e6c268296216c359cb606c8aab143ecb6b10d8adf5489882cd366f253e
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "unknown",
"attempts": 192,
"trace_id": "0x6a78a9e6c268296216c359cb606c8aab143ecb6b10d8adf5489882cd366f253e",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x081812fc",
"selector": "0x081812fc",
"calldata_variants": [
"0x081812fc",
"0x081812fc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x08b87923",
"selector": "0x08b87923",
"calldata_variants": [
"0x08b87923",
"0x08b879230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x095ea7b3",
"selector": "0x095ea7b3",
"calldata_variants": [
"0x095ea7b3",
"0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0c699624",
"selector": "0x0c699624",
"calldata_variants": [
"0x0c699624",
"0x0c6996240000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x136439dd",
"selector": "0x136439dd",
"calldata_variants": [
"0x136439dd",
"0x136439dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1400ecec",
"selector": "0x1400ecec",
"calldata_variants": [
"0x1400ecec",
"0x1400ecec0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3432,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 2356,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"delegatecall_count": 1,
"untrusted_delegatecall_count": 1
}
|
| high | other | slither | Comptrollerable.transferFeesToComptroller() (node_modules/@sablier/evm-utils/src/Comptrollerable.sol#62-74) sends eth to arbitrary user | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "arbitrary-send-eth",
"elements": [
{
"name": "transferFeesToComptroller",
"type": "function",
"source_mapping": {
"lines": [
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74
],
"start": 2716,
"length": 525,
"ending_column": 6,
"is_dependency": true,
"filename_short": "node_modules/@sablier/evm-utils/src/Comptrollerable.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-xhisbld2/node_modules/@sablier/evm-utils/src/Comptrollerable.sol",
"filename_relative": "node_modules/@sablier/evm-utils/src/Comptrollerable.sol"
},
"type_specific_fields": {
"parent": {
"name": "Comptrollerable",
"type": "contract",
"source_mapping": {
"lines": [
10,
11,
12,
13,
14,
15,
16,
17,
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
],
"start": 352,
"length": 4524,
"ending_column": 2,
"is_dependency": true,
"filename_short": "node_modules/@sablier/evm-utils/src/Comptrollerable.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-xhisbld2/node_modules/@sablier/evm-utils/src/Comptrollerable.sol",
"filename_relative": "node_modules/@sablier/evm-utils/src/Comptrollerable.sol"
}
},
"signature": "transferFeesToComptroller()"
}
},
{
"name": "(success,None) = address(comptroller).call{value: feeAmount}()",
"type": "node",
"source_mapping": {
"lines": [
66
],
"start": 2895,
"length": 67,
"ending_column": 76,
"is_dependency": true,
"filename_short": "node_modules/@sablier/evm-utils/src/Comptrollerable.sol",
"starting_column": 9,
"filename_absolute": "/tmp/slither-xhisbld2/node_modules/@sablier/evm-utils/src/Comptrollerable.sol",
"filename_relative": "node_modules/@sablier/evm-utils/src/Comptrollerable.sol"
},
"type_specific_fields": {
"parent": {
"name": "transferFeesToComptroller",
"type": "function",
"source_mapping": {
"lines": [
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74
],
"start": 2716,
"length": 525,
"ending_column": 6,
"is_dependency": true,
"filename_short": "node_modules/@sablier/evm-utils/src/Comptrollerable.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-xhisbld2/node_modules/@sablier/evm-utils/src/Comptrollerable.sol",
"filename_relative": "node_modules/@sablier/evm-utils/src/Comptrollerable.sol"
},
"type_specific_fields": {
"parent": {
"name": "Comptrollerable",
"type": "contract",
"source_mapping": {
"lines": [
10,
11,
12,
13,
14,
15,
16,
17,
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
],
"start": 352,
"length": 4524,
"ending_column": 2,
"is_dependency": true,
"filename_short": "node_modules/@sablier/evm-utils/src/Comptrollerable.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-xhisbld2/node_modules/@sablier/evm-utils/src/Comptrollerable.sol",
"filename_relative": "node_modules/@sablier/evm-utils/src/Comptrollerable.sol"
}
},
"signature": "transferFeesToComptroller()"
}
}
}
}
],
"locations": [
{
"file": "node_modules/@sablier/evm-utils/src/Comptrollerable.sol",
"name": "transferFeesToComptroller",
"type": "function",
"lines": [
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74
]
},
{
"file": "node_modules/@sablier/evm-utils/src/Comptrollerable.sol",
"name": "(success,None) = address(comptroller).call{value: feeAmount}()",
"type": "node",
"lines": [
66
]
}
],
"description": "Comptrollerable.transferFeesToComptroller() (node_modules/@sablier/evm-utils/src/Comptrollerable.sol#62-74) sends eth to arbitrary user\n\tDangerous calls:\n\t- (success,None) = address(comptroller).call{value: feeAmount}() (node_modules/@sablier/evm-utils/src/Comptrollerable.sol#66)"
}
|
| high | upgradeability | slither | Batch.batch(bytes[]) (node_modules/@sablier/evm-utils/src/Batch.sol#13-34) has delegatecall inside a loop in a payable function: (success,result) = address(this).delegatecall(ca... | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "delegatecall-loop",
"elements": [
{
"name": "batch",
"type": "function",
"source_mapping": {
"lines": [
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34
],
"start": 480,
"length": 900,
"ending_column": 6,
"is_dependency": true,
"filename_short": "node_modules/@sablier/evm-utils/src/Batch.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-xhisbld2/node_modules/@sablier/evm-utils/src/Batch.sol",
"filename_relative": "node_modules/@sablier/evm-utils/src/Batch.sol"
},
"type_specific_fields": {
"parent": {
"name": "Batch",
"type": "contract",
"source_mapping": {
"lines": [
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35
],
"start": 225,
"length": 1157,
"ending_column": 2,
"is_dependency": true,
"filename_short": "node_modules/@sablier/evm-utils/src/Batch.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-xhisbld2/node_modules/@sablier/evm-utils/src/Batch.sol",
"filename_relative": "node_modules/@sablier/evm-utils/src/Batch.sol"
}
},
"signature": "batch(bytes[])"
}
},
{
"name": "(success,result) = address(this).delegatecall(calls[i])",
"type": "node",
"source_mapping": {
"lines": [
18
],
"start": 723,
"length": 74,
"ending_column": 87,
"is_dependency": true,
"filename_short": "node_modules/@sablier/evm-utils/src/Batch.sol",
"starting_column": 13,
"filename_absolute": "/tmp/slither-xhisbld2/node_modules/@sablier/evm-utils/src/Batch.sol",
"filename_relative": "node_modules/@sablier/evm-utils/src/Batch.sol"
},
"type_specific_fields": {
"parent": {
"name": "batch",
"type": "function",
"source_mapping": {
"lines": [
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34
],
"start": 480,
"length": 900,
"ending_column": 6,
"is_dependency": true,
"filename_short": "node_modules/@sablier/evm-utils/src/Batch.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-xhisbld2/node_modules/@sablier/evm-utils/src/Batch.sol",
"filename_relative": "node_modules/@sablier/evm-utils/src/Batch.sol"
},
"type_specific_fields": {
"parent": {
"name": "Batch",
"type": "contract",
"source_mapping": {
"lines": [
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35
],
"start": 225,
"length": 1157,
"ending_column": 2,
"is_dependency": true,
"filename_short": "node_modules/@sablier/evm-utils/src/Batch.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-xhisbld2/node_modules/@sablier/evm-utils/src/Batch.sol",
"filename_relative": "node_modules/@sablier/evm-utils/src/Batch.sol"
}
},
"signature": "batch(bytes[])"
}
}
}
}
],
"locations": [
{
"file": "node_modules/@sablier/evm-utils/src/Batch.sol",
"name": "batch",
"type": "function",
"lines": [
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34
]
},
{
"file": "node_modules/@sablier/evm-utils/src/Batch.sol",
"name": "(success,result) = address(this).delegatecall(calls[i])",
"type": "node",
"lines": [
18
]
}
],
"description": "Batch.batch(bytes[]) (node_modules/@sablier/evm-utils/src/Batch.sol#13-34) has delegatecall inside a loop in a payable function: (success,result) = address(this).delegatecall(calls[i]) (node_modules/@sablier/evm-utils/src/Batch.sol#18)"
}
|
| high | other | slither | SablierFlowState.aggregateAmount (src/abstracts/SablierFlowState.sol#20) is never initialized. It is used in: | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "uninitialized-state",
"elements": [
{
"name": "aggregateAmount",
"type": "variable",
"source_mapping": {
"lines": [
20
],
"start": 852,
"length": 71,
"ending_column": 76,
"is_dependency": false,
"filename_short": "src/abstracts/SablierFlowState.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-xhisbld2/src/abstracts/SablierFlowState.sol",
"filename_relative": "src/abstracts/SablierFlowState.sol"
},
"type_specific_fields": {
"parent": {
"name": "SablierFlowState",
"type": "contract",
"source_mapping": {
"lines": [
14,
15,
16,
17,
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
],
"start": 539,
"length": 5649,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/abstracts/SablierFlowState.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-xhisbld2/src/abstracts/SablierFlowState.sol",
"filename_relative": "src/abstracts/SablierFlowState.sol"
}
}
}
},
{
"name": "recover",
"type": "function",
"source_mapping": {
"lines": [
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376
],
"start": 12776,
"length": 503,
"ending_column": 6,
"is_dependency": false,
"filename_short": "src/SablierFlow.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-xhisbld2/src/SablierFlow.sol",
"filename_relative": "src/SablierFlow.sol"
},
"type_specific_fields": {
"parent": {
"name": "SablierFlow",
"type": "contract",
"source_mapping": {
"lines": [
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,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433,
434,
435,
436,
437,
438,
439,
440,
441,
442,
443,
444,
445,
446,
447,
448,
449,
450,
451,
452,
453,
454,
455,
456,
457,
458,
459,
460,
461,
462,
463,
464,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
476,
477,
478,
479,
480,
481,
482,
483,
484,
485,
486,
487,
488,
489,
490,
491,
492,
493,
494,
495,
496,
497,
498,
499,
500,
501,
502,
503,
504,
505,
506,
507,
508,
509,
510,
511,
512,
513,
514,
515,
516,
517,
518,
519,
520,
521,
522,
523,
524,
525,
526,
527,
528,
529,
530,
531,
532,
533,
534,
535,
536,
537,
538,
539,
540,
541,
542,
543,
544,
545,
546,
547,
548,
549,
550,
551,
552,
553,
554,
555,
556,
557,
558,
559,
560,
561,
562,
563,
564,
565,
566,
567,
568,
569,
570,
571,
572,
573,
574,
575,
576,
577,
578,
579,
580,
581,
582,
583,
584,
585,
586,
587,
588,
589,
590,
591,
592,
593,
594,
595,
596,
597,
598,
599,
600,
601,
602,
603,
604,
605,
606,
607,
608,
609,
610,
611,
612,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632,
633,
634,
635,
636,
637,
638,
639,
640,
641,
642,
643,
644,
645,
646,
647,
648,
649,
650,
651,
652,
653,
654,
655,
656,
657,
658,
659,
660,
661,
662,
663,
664,
665,
666,
667,
668,
669,
670,
671,
672,
673,
674,
675,
676,
677,
678,
679,
680,
681,
682,
683,
684,
685,
686,
687,
688,
689,
690,
691,
692,
693,
694,
695,
696,
697,
698,
699,
700,
701,
702,
703,
704,
705,
706,
707,
708,
709,
710,
711,
712,
713,
714,
715,
716,
717,
718,
719,
720,
721,
722,
723,
724,
725,
726,
727,
728,
729,
730,
731,
732,
733,
734,
735,
736,
737,
738,
739,
740,
741,
742,
743,
744,
745,
746,
747,
748,
749,
750,
751,
752,
753,
754,
755,
756,
757,
758,
759,
760,
761,
762,
763,
764,
765,
766,
767,
768,
769,
770,
771,
772,
773,
774,
775,
776,
777,
778,
779,
780,
781,
782,
783,
784,
785,
786,
787,
788,
789,
790,
791,
792,
793,
794,
795,
796,
797,
798,
799,
800,
801,
802,
803,
804,
805,
806,
807,
808,
809,
810,
811,
812,
813,
814,
815,
816,
817,
818,
819,
820,
821,
822,
823,
824,
825,
826,
827,
828,
829,
830,
831,
832,
833,
834,
835,
836,
837,
838,
839,
840,
841,
842,
843,
844,
845,
846,
847,
848,
849,
850,
851,
852,
853,
854,
855,
856,
857,
858,
859,
860,
861,
862,
863,
864,
865,
866,
867,
868,
869,
870,
871,
872,
873,
874,
875,
876,
877,
878,
879,
880,
881,
882,
883,
884,
885,
886,
887,
888,
889,
890,
891,
892,
893,
894,
895,
896,
897,
898,
899,
900,
901,
902,
903,
904,
905,
906,
907,
908,
909,
910,
911,
912,
913,
914,
915,
916,
917,
918,
919,
920,
921,
922,
923,
924,
925,
926,
927,
928,
929,
930,
931,
932,
933,
934,
935,
936,
937,
938,
939,
940,
941,
942,
943,
944,
945,
946,
947,
948,
949,
950,
951,
952,
953,
954,
955,
956,
957,
958,
959,
960,
961,
962,
963,
964,
965,
966,
967,
968,
969,
970,
971,
972,
973,
974,
975,
976,
977,
978,
979,
980,
981,
982,
983,
984,
985,
986,
987,
988,
989,
990,
991,
992,
993,
994,
995,
996,
997,
998,
999,
1000,
1001,
1002,
1003,
1004,
1005,
1006,
1007,
1008,
1009,
1010,
1011,
1012,
1013,
1014,
1015,
1016,
1017,
1018,
1019,
1020,
1021,
1022,
1023,
1024,
1025,
1026,
1027,
1028,
1029,
1030,
1031,
1032,
1033,
1034,
1035,
1036,
1037,
1038,
1039,
1040,
1041,
1042,
1043,
1044,
1045,
1046,
1047,
1048,
1049,
1050,
1051,
1052,
1053,
1054,
1055,
1056,
1057,
1058,
1059,
1060,
1061,
1062,
1063,
1064,
1065,
1066,
1067
],
"start": 1534,
"length": 37148,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/SablierFlow.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-xhisbld2/src/SablierFlow.sol",
"filename_relative": "src/SablierFlow.sol"
}
},
"signature": "recover(IERC20,address)"
}
}
],
"locations": [
{
"file": "src/abstracts/SablierFlowState.sol",
"name": "aggregateAmount",
"type": "variable",
"lines": [
20
]
},
{
"file": "src/SablierFlow.sol",
"name": "recover",
"type": "function",
"lines": [
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376
]
}
],
"description": "SablierFlowState.aggregateAmount (src/abstracts/SablierFlowState.sol#20) is never initialized. It is used in:\n\t- SablierFlow.recover(IERC20,address) (src/SablierFlow.sol#364-376)"
}
|
| high | other | slither | SablierFlowState._streams (src/abstracts/SablierFlowState.sol#32) is never initialized. It is used in: | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "uninitialized-state",
"elements": [
{
"name": "_streams",
"type": "variable",
"source_mapping": {
"lines": [
32
],
"start": 1247,
"length": 59,
"ending_column": 64,
"is_dependency": false,
"filename_short": "src/abstracts/SablierFlowState.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-xhisbld2/src/abstracts/SablierFlowState.sol",
"filename_relative": "src/abstracts/SablierFlowState.sol"
},
"type_specific_fields": {
"parent": {
"name": "SablierFlowState",
"type": "contract",
"source_mapping": {
"lines": [
14,
15,
16,
17,
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
],
"start": 539,
"length": 5649,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/abstracts/SablierFlowState.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-xhisbld2/src/abstracts/SablierFlowState.sol",
"filename_relative": "src/abstracts/SablierFlowState.sol"
}
}
}
},
{
"name": "getBalance",
"type": "function",
"source_mapping": {
"lines": [
84,
85,
86
],
"start": 3247,
"length": 158,
"ending_column": 6,
"is_dependency": false,
"filename_short": "src/abstracts/SablierFlowState.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-xhisbld2/src/abstracts/SablierFlowState.sol",
"filename_relative": "src/abstracts/SablierFlowState.sol"
},
"type_specific_fields": {
"parent": {
"name": "SablierFlowState",
"type": "contract",
"source_mapping": {
"lines": [
14,
15,
16,
17,
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
],
"start": 539,
"length": 5649,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/abstracts/SablierFlowState.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-xhisbld2/src/abstracts/SablierFlowState.sol",
"filename_relative": "src/abstracts/SablierFlowState.sol"
}
},
"signature": "getBalance(uint256)"
}
},
{
"name": "getRatePerSecond",
"type": "function",
"source_mapping": {
"lines": [
89,
90,
91,
92,
93,
94,
95,
96,
97
],
"start": 3449,
"length": 226,
"ending_column": 6,
"is_dependency": false,
"filename_short": "src/abstracts/SablierFlowState.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-xhisbld2/src/abstracts/SablierFlowState.sol",
"filename_relative": "src/abstracts/SablierFlowState.sol"
},
"type_specific_fields": {
"parent": {
"name": "SablierFlowState",
"type": "contract",
"source_mapping": {
"lines": [
14,
15,
16,
17,
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
],
"start": 539,
"length": 5649,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/abstracts/SablierFlowState.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-xhisbld2/src/abstracts/SablierFlowState.sol",
"filename_relative": "src/abstracts/SablierFlowState.sol"
}
},
"signature": "getRatePerSecond(uint256)"
}
},
{
"name": "getSender",
"type": "function",
"source_mapping": {
"lines": [
100,
101,
102
],
"start": 3719,
"length": 154,
"ending_column": 6,
"is_dependency": false,
"filename_short": "src/abstracts/SablierFlowState.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-xhisbld2/src/abstracts/SablierFlowState.sol",
"filename_relative": "src/abstracts/SablierFlowState.sol"
},
"type_specific_fields": {
"parent": {
"name": "SablierFlowState",
"type": "contract",
"source_mapping": {
"lines": [
14,
15,
16,
17,
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
],
"start": 539,
"length": 5649,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/abstracts/SablierFlowState.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-xhisbld2/src/abstracts/SablierFlowState.sol",
"filename_relative": "src/abstracts/SablierFlowState.sol"
}
},
"signature": "getSender(uint256)"
}
},
{
"name": "getSnapshotDebtScaled",
"type": "function",
"source_mapping": {
"lines": [
105,
106,
107,
108,
109,
110,
111,
112,
113
],
"start": 3917,
"length": 246,
"ending_column": 6,
"is_dependency": false,
"filename_short": "src/abstracts/SablierFlowState.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-xhisbld2/src/abstracts/SablierFlowState.sol",
"filename_relative": "src/abstracts/SablierFlowState.sol"
},
"type_specific_fields": {
"parent": {
"name": "SablierFlowState",
"type": "contract",
"source_mapping": {
"lines": [
14,
15,
16,
17,
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
],
"start": 539,
"length": 5649,
"ending_column": 2,
"is_dependency": false,
"filename_short": "src/abstracts/SablierFlowState.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-xhisbld2/src/abstracts/SablierFlowState.sol",
"filename_relative": "src/abstracts/SablierFlowState.sol"
}
},
"signature": "getSnapshotDebtScaled(uint256)"
}
}
],
"locations": [
{
"file": "src/abstracts/SablierFlowState.sol",
"name": "_streams",
"type": "variable",
"lines": [
32
]
},
{
"file": "src/abstracts/SablierFlowState.sol",
"name": "getBalance",
"type": "function",
"lines": [
84,
85,
86
]
},
{
"file": "src/abstracts/SablierFlowState.sol",
"name": "getRatePerSecond",
"type": "function",
"lines": [
89,
90,
91,
92,
93,
94,
95,
96,
97
]
},
{
"file": "src/abstracts/SablierFlowState.sol",
"name": "getSender",
"type": "function",
"lines": [
100,
101,
102
]
},
{
"file": "src/abstracts/SablierFlowState.sol",
"name": "getSnapshotDebtScaled",
"type": "function",
"lines": [
105,
106,
107,
108,
109,
110,
111,
112,
113
]
},
{
"file": "src/abstracts/SablierFlowState.sol",
"name": "getSnapshotTime",
"type": "function",
"lines": [
116,
117,
118
]
},
{
"file": "src/abstracts/SablierFlowState.sol",
"name": "getStream",
"type": "function",
"lines": [
121,
122,
123
]
},
{
"file": "src/abstracts/SablierFlowState.sol",
"name": "getToken",
"type": "function",
"lines": [
126,
127,
128
]
},
{
"file": "src/abstracts/SablierFlowState.sol",
"name": "getTokenDecimals",
"type": "function",
"lines": [
131,
132,
133,
134,
135,
136,
137,
138,
139
]
},
{
"file": "src/abstracts/SablierFlowState.sol",
"name": "isStream",
"type": "function",
"lines": [
142,
143,
144
]
},
{
"file": "src/abstracts/SablierFlowState.sol",
"name": "isTransferable",
"type": "function",
"lines": [
147,
148,
149
]
},
{
"file": "src/abstracts/SablierFlowState.sol",
"name": "isVoided",
"type": "function",
"lines": [
152,
153,
154
]
},
{
"file": "src/abstracts/SablierFlowState.sol",
"name": "_notNull",
"type": "function",
"lines": [
162,
163,
164,
165,
166
]
},
{
"file": "src/SablierFlow.sol",
"name": "calculateMinFeeWei",
"type": "function",
"lines": [
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80
]
},
{
"file": "src/SablierFlow.sol",
"name": "depletionTimeOf",
"type": "function",
"lines": [
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
]
},
{
"file": "src/SablierFlow.sol",
"name": "statusOf",
"type": "function",
"lines": [
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
]
},
{
"file": "src/SablierFlow.sol",
"name": "_update",
"type": "function",
"lines": [
591,
592,
593,
594,
595,
596,
597,
598,
599,
600,
601,
602,
603,
604,
605,
606,
607,
608
]
},
{
"file": "src/SablierFlow.sol",
"name": "_coveredDebtOf",
"type": "function",
"lines": [
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
625,
626,
627,
628,
629,
630,
631,
632
]
},
{
"file": "src/SablierFlow.sol",
"name": "_ongoingDebtScaledOf",
"type": "function",
"lines": [
642,
643,
644,
645,
646,
647,
648,
649,
650,
651,
652,
653,
654,
655,
656,
657,
658,
659,
660,
661,
662,
663,
664,
665,
666,
667
]
},
{
"file": "src/SablierFlow.sol",
"name": "_refundableAmountOf",
"type": "function",
"lines": [
670,
671,
672
]
},
{
"file": "src/SablierFlow.sol",
"name": "_totalDebtOf",
"type": "function",
"lines": [
676,
677,
678,
679
]
},
{
"file": "src/SablierFlow.sol",
"name": "_uncoveredDebtOf",
"type": "function",
"lines": [
682,
683,
684,
685,
686,
687,
688,
689,
690,
691,
692
]
},
{
"file": "src/SablierFlow.sol",
"name": "_verifyStreamSenderRecipient",
"type": "function",
"lines": [
695,
696,
697,
698,
699,
700,
701,
702,
703
]
},
{
"file": "src/SablierFlow.sol",
"name": "_adjustRatePerSecond",
"type": "function",
"lines": [
710,
711,
712,
713,
714,
715,
716,
717,
718,
719,
720,
721,
722,
723,
724,
725,
726,
727,
728,
729,
730,
731,
732,
733,
734
]
},
{
"file": "src/SablierFlow.sol",
"name": "_pause",
"type": "function",
"lines": [
846,
847,
848,
849,
850,
851,
852,
853,
854,
855,
856,
857,
858,
859,
860,
861,
862
]
},
{
"file": "src/SablierFlow.sol",
"name": "_restart",
"type": "function",
"lines": [
905,
906,
907,
908,
909,
910,
911,
912,
913,
914,
915,
916
]
},
{
"file": "src/SablierFlow.sol",
"name": "_void",
"type": "function",
"lines": [
919,
920,
921,
922,
923,
924,
925,
926,
927,
928,
929,
930,
931,
932,
933,
934,
935,
936,
937,
938,
939,
940,
941,
942,
943,
944,
945,
946,
947,
948,
949,
950,
951,
952,
953,
954,
955,
956,
957,
958,
959,
960,
961,
962,
963
]
},
{
"file": "src/SablierFlow.sol",
"name": "_withdraw",
"type": "function",
"lines": [
966,
967,
968,
969,
970,
971,
972,
973,
974,
975,
976,
977,
978,
979,
980,
981,
982,
983,
984,
985,
986,
987,
988,
989,
990,
991,
992,
993,
994,
995,
996,
997,
998,
999,
1000,
1001,
1002,
1003,
1004,
1005,
1006,
1007,
1008,
1009,
1010,
1011,
1012,
1013,
1014,
1015,
1016,
1017,
1018,
1019,
1020,
1021,
1022,
1023,
1024,
1025,
1026,
1027,
1028,
1029,
1030,
1031,
1032,
1033,
1034,
1035,
1036,
1037,
1038,
1039,
1040,
1041,
1042,
1043,
1044,
1045,
1046,
1047,
1048,
1049,
1050,
1051,
1052,
1053,
1054,
1055,
1056,
1057,
1058,
1059,
1060,
1061,
1062,
1063,
1064,
1065,
1066
]
}
],
"description": "SablierFlowState._streams (src/abstracts/SablierFlowState.sol#32) is never initialized. It is used in:\n\t- SablierFlowState.getBalance(uint256) (src/abstracts/SablierFlowState.sol#84-86)\n\t- SablierFlowState.getRatePerSecond(uint256) (src/abstracts/SablierFlowState.sol#89-97)\n\t- SablierFlowState.getSender(uint256) (src/abstracts/SablierFlowState.sol#100-102)\n\t- SablierFlowState.getSnapshotDebtScaled(uint256) (src/abstracts/SablierFlowState.sol#105-113)\n\t- SablierFlowState.getSnapshotTime(uint256) (src/abstracts/SablierFlowState.sol#116-118)\n\t- SablierFlowState.getStream(uint256) (src/abstracts/SablierFlowState.sol#121-123)\n\t- SablierFlowState.getToken(uint256) (src/abstracts/SablierFlowState.sol#126-128)\n\t- SablierFlowState.getTokenDecimals(uint256) (src/abstracts/SablierFlowState.sol#131-139)\n\t- SablierFlowState.isStream(uint256) (src/abstracts/SablierFlowState.sol#142-144)\n\t- SablierFlowState.isTransferable(uint256) (src/abstracts/SablierFlowState.sol#147-149)\n\t- SablierFlowState.isVoided(uint256) (src/abstracts/SablierFlowState.sol#152-154)\n\t- SablierFlowState._notNull(uint256) (src/abstracts/SablierFlowState.sol#162-166)\n\t- SablierFlow.calculateMinFeeWei(uint256) (src/SablierFlow.sol#68-80)\n\t- SablierFlow.depletionTimeOf(uint256) (src/SablierFlow.sol#88-135)\n\t- SablierFlow.statusOf(uint256) (src/SablierFlow.sol#166-197)\n\t- SablierFlow._update(address,uint256,address) (src/SablierFlow.sol#591-608)\n\t- SablierFlow._coveredDebtOf(uint256) (src/SablierFlow.sol#615-632)\n\t- SablierFlow._ongoingDebtScaledOf(uint256) (src/SablierFlow.sol#642-667)\n\t- SablierFlow._refundableAmountOf(uint256) (src/SablierFlow.sol#670-672)\n\t- SablierFlow._totalDebtOf(uint256) (src/SablierFlow.sol#676-679)\n\t- SablierFlow._uncoveredDebtOf(uint256) (src/SablierFlow.sol#682-692)\n\t- SablierFlow._verifyStreamSenderRecipient(uint256,address,address) (src/SablierFlow.sol#695-703)\n\t- SablierFlow._adjustRatePerSecond(uint256,UD21x18) (src/SablierFlow.sol#710-734)\n\t- SablierFlow._pause(uint256) (src/SablierFlow.sol#846-862)\n\t- SablierFlow._restart(uint256,UD21x18) (src/SablierFlow.sol#905-916)\n\t- SablierFlow._void(uint256) (src/SablierFlow.sol#919-963)\n\t- SablierFlow._withdraw(uint256,address,uint128) (src/SablierFlow.sol#966-1066)"
}
|
| 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 | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x64219bfbaa00268732c651517255597098cd1fa9893ceb1afb0dfa2579a7df3b
call_targets:
0x7a86d3e6894f9c5b5f25ffbdaae658cfc7569623
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x64219bfbaa00268732c651517255597098cd1fa9893ceb1afb0dfa2579a7df3b",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x7a86d3e6894f9c5b5f25ffbdaae658cfc7569623"
],
"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": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x081812fc",
"selector": "0x081812fc",
"calldata_variants": [
"0x081812fc",
"0x081812fc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x08b87923",
"selector": "0x08b87923",
"calldata_variants": [
"0x08b87923",
"0x08b879230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x095ea7b3",
"selector": "0x095ea7b3",
"calldata_variants": [
"0x095ea7b3",
"0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0c699624",
"selector": "0x0c699624",
"calldata_variants": [
"0x0c699624",
"0x0c6996240000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x136439dd",
"selector": "0x136439dd",
"calldata_variants": [
"0x136439dd",
"0x136439dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1400ecec",
"selector": "0x1400ecec",
"calldata_variants": [
"0x1400ecec",
"0x1400ecec0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 7484,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 14928,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 21867,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 3,
"guards_detected": [
{
"pc": 2356,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"untrusted_call_count": 3
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x64219bfbaa00268732c651517255597098cd1fa9893ceb1afb0dfa2579a7df3b
call_targets:
0x7a86d3e6894f9c5b5f25ffbdaae658cfc7569623
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x64219bfbaa00268732c651517255597098cd1fa9893ceb1afb0dfa2579a7df3b",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x7a86d3e6894f9c5b5f25ffbdaae658cfc7569623"
],
"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": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x081812fc",
"selector": "0x081812fc",
"calldata_variants": [
"0x081812fc",
"0x081812fc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x08b87923",
"selector": "0x08b87923",
"calldata_variants": [
"0x08b87923",
"0x08b879230000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x095ea7b3",
"selector": "0x095ea7b3",
"calldata_variants": [
"0x095ea7b3",
"0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0c699624",
"selector": "0x0c699624",
"calldata_variants": [
"0x0c699624",
"0x0c6996240000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x136439dd",
"selector": "0x136439dd",
"calldata_variants": [
"0x136439dd",
"0x136439dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1400ecec",
"selector": "0x1400ecec",
"calldata_variants": [
"0x1400ecec",
"0x1400ecec0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 7484,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 14928,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 21867,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 3,
"guards_detected": [
{
"pc": 2356,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
}
|