Repository: pcaversaccio/snekmate (language: python)

Issue:
🔁 Upgrade Solidity Version to `0.8.24`
See the latest release: [`v0.8.24`](https://github.com/ethereum/solidity/releases/tag/v0.8.24).


Discussion / hints:

Fix patch:
diff --git a/.gas-snapshot b/.gas-snapshot
index 994774a5..6f51febe 100644
--- a/.gas-snapshot
+++ b/.gas-snapshot
@@ -7,9 +7,9 @@ AccessControlTest:testFuzzGrantRoleSuccess(address) (runs: 256, μ: 43797, ~: 43
 AccessControlTest:testFuzzRenounceRoleMultipleTimesSuccess(address) (runs: 256, μ: 44371, ~: 44356)
 AccessControlTest:testFuzzRenounceRoleNonMsgSender(address) (runs: 256, μ: 9556, ~: 9556)
 AccessControlTest:testFuzzRenounceRoleSuccess(address) (runs: 256, μ: 40866, ~: 40851)
-AccessControlTest:testFuzzRevokeRoleMultipleTimesSuccess(address) (runs: 256, μ: 40636, ~: 40620)
+AccessControlTest:testFuzzRevokeRoleMultipleTimesSuccess(address) (runs: 256, μ: 40637, ~: 40620)
 AccessControlTest:testFuzzRevokeRoleNonAdmin(address,address) (runs: 256, μ: 16498, ~: 16498)
-AccessControlTest:testFuzzRevokeRoleSuccess(address) (runs: 256, μ: 39480, ~: 39464)
+AccessControlTest:testFuzzRevokeRoleSuccess(address) (runs: 256, μ: 39481, ~: 39464)
 AccessControlTest:testFuzzSetRoleAdminPreviousAdminCallsGrantRole(address,address) (runs: 256, μ: 75747, ~: 75747)
 AccessControlTest:testFuzzSetRoleAdminPreviousAdminCallsRevokeRole(address,address) (runs: 256, μ: 101276, ~: 101276)
 AccessControlTest:testFuzzSetRoleAdminSuccess(address,address) (runs: 256, μ: 89648, ~: 89648)
@@ -60,8 +60,8 @@ BatchDistributorTest:testDistributeTokenMultipleAddressesSuccess() (gas: 616202)
 BatchDistributorTest:testDistributeTokenOneAddressSuccess() (gas: 578527)
 BatchDistributorTest:testDistributeTokenRevertWithInsufficientAllowance() (gas: 574268)
 BatchDistributorTest:testDistributeTokenRevertWithInsufficientBalance() (gas: 575054)
-BatchDistributorTest:testFuzzDistributeEtherMultipleAddressesSuccess(((address,uint256)[]),uint256) (runs: 256, μ: 1840920, ~: 1861320)
-BatchDistributorTest:testFuzzDistributeTokenMultipleAddressesSuccess(((address,uint256)[]),address,uint256) (runs: 256, μ: 1337465, ~: 1321455)
+BatchDistributorTest:testFuzzDistributeEtherMultipleAddressesSuccess(((address,uint256)[]),uint256) (runs: 256, μ: 1841554, ~: 1861320)
+BatchDistributorTest:testFuzzDistributeTokenMultipleAddressesSuccess(((address,uint256)[]),address,uint256) (runs: 256, μ: 1334694, ~: 1308136)
 Create2AddressTest:testComputeAddress() (gas: 550599)
 Create2AddressTest:testComputeAddressSelf() (gas: 558922)
 Create2AddressTest:testFuzzComputeAddress(bytes32,address) (runs: 256, μ: 551194, ~: 551194)
@@ -87,26 +87,26 @@ CreateAddressTest:testComputeAddressSelfNonceUint56() (gas: 539228)
 CreateAddressTest:testComputeAddressSelfNonceUint64() (gas: 539345)
 CreateAddressTest:testComputeAddressSelfNonceUint8() (gas: 538951)
 CreateAddressTest:testComputeAddressSelfRevertTooHighNonce() (gas: 8836)
-CreateAddressTest:testFuzzComputeAddressNonce0x7f(uint64,address) (runs: 256, μ: 537964, ~: 538066)
-CreateAddressTest:testFuzzComputeAddressNonceUint16(uint64,address) (runs: 256, μ: 537407, ~: 537680)
-CreateAddressTest:testFuzzComputeAddressNonceUint24(uint64,address) (runs: 256, μ: 537539, ~: 537657)
-CreateAddressTest:testFuzzComputeAddressNonceUint32(uint64,address) (runs: 256, μ: 537541, ~: 537664)
-CreateAddressTest:testFuzzComputeAddressNonceUint40(uint64,address) (runs: 256, μ: 537665, ~: 537756)
+CreateAddressTest:testFuzzComputeAddressNonce0x7f(uint64,address) (runs: 256, μ: 537944, ~: 538066)
+CreateAddressTest:testFuzzComputeAddressNonceUint16(uint64,address) (runs: 256, μ: 537412, ~: 537680)
+CreateAddressTest:testFuzzComputeAddressNonceUint24(uint64,address) (runs: 256, μ: 537536, ~: 537657)
+CreateAddressTest:testFuzzComputeAddressNonceUint32(uint64,address) (runs: 256, μ: 537547, ~: 537664)
+CreateAddressTest:testFuzzComputeAddressNonceUint40(uint64,address) (runs: 256, μ: 537662, ~: 537756)
 CreateAddressTest:testFuzzComputeAddressNonceUint48(uint64,address) (runs: 256, μ: 537642, ~: 537740)
-CreateAddressTest:testFuzzComputeAddressNonceUint56(uint64,address) (runs: 256, μ: 537685, ~: 537769)
-CreateAddressTest:testFuzzComputeAddressNonceUint64(uint64,address) (runs: 256, μ: 537670, ~: 537873)
-CreateAddressTest:testFuzzComputeAddressNonceUint8(uint64,address) (runs: 256, μ: 537453, ~: 537531)
-CreateAddressTest:testFuzzComputeAddressRevertTooHighNonce(uint256,address) (runs: 256, μ: 12920, ~: 12857)
+CreateAddressTest:testFuzzComputeAddressNonceUint56(uint64,address) (runs: 256, μ: 537690, ~: 537769)
+CreateAddressTest:testFuzzComputeAddressNonceUint64(uint64,address) (runs: 256, μ: 537674, ~: 537873)
+CreateAddressTest:testFuzzComputeAddressNonceUint8(uint64,address) (runs: 256, μ: 537454, ~: 537531)
+CreateAddressTest:testFuzzComputeAddressRevertTooHighNonce(uint256,address) (runs: 256, μ: 12923, ~: 12857)
 CreateAddressTest:testFuzzComputeAddressSelfNonce0x7f(uint64) (runs: 256, μ: 543801, ~: 543905)
-CreateAddressTest:testFuzzComputeAddressSelfNonceUint16(uint64) (runs: 256, μ: 543043, ~: 542941)
-CreateAddressTest:testFuzzComputeAddressSelfNonceUint24(uint64) (runs: 256, μ: 543302, ~: 543395)
-CreateAddressTest:testFuzzComputeAddressSelfNonceUint32(uint64) (runs: 256, μ: 543380, ~: 543491)
-CreateAddressTest:testFuzzComputeAddressSelfNonceUint40(uint64) (runs: 256, μ: 543394, ~: 543475)
-CreateAddressTest:testFuzzComputeAddressSelfNonceUint48(uint64) (runs: 256, μ: 543437, ~: 543549)
-CreateAddressTest:testFuzzComputeAddressSelfNonceUint56(uint64) (runs: 256, μ: 543525, ~: 543619)
-CreateAddressTest:testFuzzComputeAddressSelfNonceUint64(uint64) (runs: 256, μ: 543574, ~: 543749)
-CreateAddressTest:testFuzzComputeAddressSelfNonceUint8(uint64) (runs: 256, μ: 543109, ~: 543186)
-CreateAddressTest:testFuzzComputeAddressSelfRevertTooHighNonce(uint256) (runs: 256, μ: 12735, ~: 12696)
+CreateAddressTest:testFuzzComputeAddressSelfNonceUint16(uint64) (runs: 256, μ: 543032, ~: 542941)
+CreateAddressTest:testFuzzComputeAddressSelfNonceUint24(uint64) (runs: 256, μ: 543305, ~: 543395)
+CreateAddressTest:testFuzzComputeAddressSelfNonceUint32(uint64) (runs: 256, μ: 543383, ~: 543491)
+CreateAddressTest:testFuzzComputeAddressSelfNonceUint40(uint64) (runs: 256, μ: 543388, ~: 543475)
+CreateAddressTest:testFuzzComputeAddressSelfNonceUint48(uint64) (runs: 256, μ: 543440, ~: 543549)
+CreateAddressTest:testFuzzComputeAddressSelfNonceUint56(uint64) (runs: 256, μ: 543529, ~: 543619)
+CreateAddressTest:testFuzzComputeAddressSelfNonceUint64(uint64) (runs: 256, μ: 543576, ~: 543749)
+CreateAddressTest:testFuzzComputeAddressSelfNonceUint8(uint64) (runs: 256, μ: 543105, ~: 543186)
+CreateAddressTest:testFuzzComputeAddressSelfRevertTooHighNonce(uint256) (runs: 256, μ: 12727, ~: 12696)
 ECDSATest:testEthSignedMessageHash() (gas: 5846)
 ECDSATest:testFuzzEthSignedMessageHash(string) (runs: 256, μ: 6432, ~: 6426)
 ECDSATest:testFuzzRecoverWithInvalidSignature(bytes,string) (runs: 256, μ: 15159, ~: 15161)
@@ -133,7 +133,7 @@ EIP712DomainSeparatorTest:testCachedDomainSeparatorV4() (gas: 7562)
 EIP712DomainSeparatorTest:testDomainSeparatorV4() (gas: 11305)
 EIP712DomainSeparatorTest:testEIP712Domain() (gas: 13629)
 EIP712DomainSeparatorTest:testFuzzDomainSeparatorV4(uint8) (runs: 256, μ: 11460, ~: 11480)
-EIP712DomainSeparatorTest:testFuzzEIP712Domain(bytes1,uint8,bytes32,uint256[]) (runs: 256, μ: 19161, ~: 19122)
+EIP712DomainSeparatorTest:testFuzzEIP712Domain(bytes1,uint8,bytes32,uint256[]) (runs: 256, μ: 19157, ~: 19122)
 EIP712DomainSeparatorTest:testFuzzHashTypedDataV4(address,address,uint256,uint256,uint64) (runs: 256, μ: 7698, ~: 7698)
 EIP712DomainSeparatorTest:testHashTypedDataV4() (gas: 13017)
 ERC1155Invariants:invariantOwner() (runs: 256, calls: 3840, reverts: 3437)
@@ -163,37 +163,37 @@ ERC1155Test:testExistsAfterBatchMint() (gas: 143320)
 ERC1155Test:testExistsAfterSingleBurn() (gas: 137816)
 ERC1155Test:testExistsAfterSingleMint() (gas: 119400)
 ERC1155Test:testExistsBeforeMint() (gas: 7642)
-ERC1155Test:testFuzzBurnBatchSuccess(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 132334, ~: 132343)
-ERC1155Test:testFuzzBurnSuccess(address,address,uint256) (runs: 256, μ: 140114, ~: 140134)
+ERC1155Test:testFuzzBurnBatchSuccess(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 132322, ~: 132330)
+ERC1155Test:testFuzzBurnSuccess(address,address,uint256) (runs: 256, μ: 140124, ~: 140134)
 ERC1155Test:testFuzzRenounceOwnershipNonOwner(address) (runs: 256, μ: 13977, ~: 13977)
-ERC1155Test:testFuzzRenounceOwnershipSuccess(address) (runs: 256, μ: 48432, ~: 48416)
+ERC1155Test:testFuzzRenounceOwnershipSuccess(address) (runs: 256, μ: 48433, ~: 48416)
 ERC1155Test:testFuzzSafeBatchTransferFromByApprovedOperator(address,address,address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 225230, ~: 225191)
-ERC1155Test:testFuzzSafeBatchTransferFromEOAReceiver(address,address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 190347, ~: 190304)
+ERC1155Test:testFuzzSafeBatchTransferFromEOAReceiver(address,address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 190337, ~: 190304)
 ERC1155Test:testFuzzSafeBatchTransferFromNoData(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 564154, ~: 564164)
-ERC1155Test:testFuzzSafeBatchTransferFromWithData(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 564729, ~: 564321)
-ERC1155Test:testFuzzSafeMintBatchEOAReceiver(address,address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 152243, ~: 152222)
+ERC1155Test:testFuzzSafeBatchTransferFromWithData(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 564743, ~: 564321)
+ERC1155Test:testFuzzSafeMintBatchEOAReceiver(address,address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 152244, ~: 152222)
 ERC1155Test:testFuzzSafeMintBatchNoData(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 519951, ~: 519951)
 ERC1155Test:testFuzzSafeMintBatchNonMinter(address) (runs: 256, μ: 40926, ~: 40926)
-ERC1155Test:testFuzzSafeMintBatchWithData(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 520295, ~: 520066)
+ERC1155Test:testFuzzSafeMintBatchWithData(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 520293, ~: 520066)
 ERC1155Test:testFuzzSafeMintEOAReceiver(address,address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 151294, ~: 151259)
 ERC1155Test:testFuzzSafeMintNoData(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 520118, ~: 520118)
 ERC1155Test:testFuzzSafeMintNonMinter(address) (runs: 256, μ: 33132, ~: 33132)
 ERC1155Test:testFuzzSafeMintWithData(address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 521416, ~: 521009)
 ERC1155Test:testFuzzSafeTransferFromByApprovedOperator(address,address,address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 204239, ~: 204191)
-ERC1155Test:testFuzzSafeTransferFromEOAReceiver(address,address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 169443, ~: 169391)
-ERC1155Test:testFuzzSafeTransferFromNoData(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 606383, ~: 606383)
-ERC1155Test:testFuzzSafeTransferFromWithData(address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 608346, ~: 607645)
+ERC1155Test:testFuzzSafeTransferFromEOAReceiver(address,address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 169433, ~: 169391)
+ERC1155Test:testFuzzSafeTransferFromNoData(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 606373, ~: 606383)
+ERC1155Test:testFuzzSafeTransferFromWithData(address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 608355, ~: 607645)
 ERC1155Test:testFuzzSetApprovalForAllRevoke(address,address) (runs: 256, μ: 31053, ~: 31022)
 ERC1155Test:testFuzzSetApprovalForAllSuccess(address,address) (runs: 256, μ: 44181, ~: 44181)
 ERC1155Test:testFuzzSetMinterNonOwner(address,string) (runs: 256, μ: 15772, ~: 15699)
 ERC1155Test:testFuzzSetMinterSuccess(string) (runs: 256, μ: 33178, ~: 33178)
 ERC1155Test:testFuzzSetUriNonMinter(address) (runs: 256, μ: 14452, ~: 14452)
-ERC1155Test:testFuzzTotalSupplyAfterBatchBurn(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 126374, ~: 126383)
-ERC1155Test:testFuzzTotalSupplyAfterBatchMint(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 140991, ~: 141055)
-ERC1155Test:testFuzzTotalSupplyAfterSingleBurn(address,uint256,bytes) (runs: 256, μ: 138036, ~: 138007)
-ERC1155Test:testFuzzTotalSupplyAfterSingleMint(uint256,uint256,bytes) (runs: 256, μ: 93285, ~: 119839)
+ERC1155Test:testFuzzTotalSupplyAfterBatchBurn(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 126362, ~: 126370)
+ERC1155Test:testFuzzTotalSupplyAfterBatchMint(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 140985, ~: 140922)
+ERC1155Test:testFuzzTotalSupplyAfterSingleBurn(address,uint256,bytes) (runs: 256, μ: 138017, ~: 138007)
+ERC1155Test:testFuzzTotalSupplyAfterSingleMint(uint256,uint256,bytes) (runs: 256, μ: 92819, ~: 119839)
 ERC1155Test:testFuzzTransferOwnershipNonOwner(address,address) (runs: 256, μ: 14086, ~: 14086)
-ERC1155Test:testFuzzTransferOwnershipSuccess(address,address) (runs: 256, μ: 73957, ~: 73928)
+ERC1155Test:testFuzzTransferOwnershipSuccess(address,address) (runs: 256, μ: 73956, ~: 73928)
 ERC1155Test:testHasOwner() (gas: 9714)
 ERC1155Test:testInitialSetup() (gas: 2810217)
 ERC1155Test:testRenounceOwnershipNonOwner() (gas: 10918)
@@ -266,8 +266,8 @@ ERC1155Test:testUriBaseAndTokenUriNotSet() (gas: 2768301)
 ERC1155Test:testUriBaseAndTokenUriSet() (gas: 65517)
 ERC1155Test:testUriNoBaseURI() (gas: 2818373)
 ERC1155Test:testUriNoTokenUri() (gas: 17407)
-ERC20Invariants:invariantOwner() (runs: 256, calls: 3840, reverts: 3390)
-ERC20Invariants:invariantTotalSupply() (runs: 256, calls: 3840, reverts: 3390)
+ERC20Invariants:invariantOwner() (runs: 256, calls: 3840, reverts: 3393)
+ERC20Invariants:invariantTotalSupply() (runs: 256, calls: 3840, reverts: 3393)
 ERC20Test:testApproveExceedingBalanceCase1() (gas: 40223)
 ERC20Test:testApproveExceedingBalanceCase2() (gas: 46478)
 ERC20Test:testApproveFromZeroAddress() (gas: 13220)
@@ -290,26 +290,26 @@ ERC20Test:testCachedDomainSeparator() (gas: 7699)
 ERC20Test:testDomainSeparator() (gas: 11449)
 ERC20Test:testEIP712Domain() (gas: 13739)
 ERC20Test:testFuzzApproveSuccess(address,uint256) (runs: 256, μ: 39193, ~: 40437)
-ERC20Test:testFuzzBurnFromInsufficientAllowance(address,uint256,uint8) (runs: 256, μ: 175155, ~: 175280)
-ERC20Test:testFuzzBurnFromSuccess(address,uint256) (runs: 256, μ: 280125, ~: 281154)
+ERC20Test:testFuzzBurnFromInsufficientAllowance(address,uint256,uint8) (runs: 256, μ: 175100, ~: 175281)
+ERC20Test:testFuzzBurnFromSuccess(address,uint256) (runs: 256, μ: 280076, ~: 281323)
 ERC20Test:testFuzzBurnInvalidAmount(address,uint256) (runs: 256, μ: 16454, ~: 16454)
-ERC20Test:testFuzzBurnSuccessCase(uint256) (runs: 256, μ: 256021, ~: 255800)
+ERC20Test:testFuzzBurnSuccessCase(uint256) (runs: 256, μ: 256020, ~: 255800)
 ERC20Test:testFuzzDomainSeparator(uint8) (runs: 256, μ: 11665, ~: 11685)
-ERC20Test:testFuzzEIP712Domain(bytes1,uint8,bytes32,uint256[]) (runs: 256, μ: 19444, ~: 19409)
+ERC20Test:testFuzzEIP712Domain(bytes1,uint8,bytes32,uint256[]) (runs: 256, μ: 19448, ~: 19409)
 ERC20Test:testFuzzMintNonMinter(string,uint256) (runs: 256, μ: 13152, ~: 13080)
-ERC20Test:testFuzzMintSuccess(string,uint256) (runs: 256, μ: 54206, ~: 55192)
+ERC20Test:testFuzzMintSuccess(string,uint256) (runs: 256, μ: 53787, ~: 55192)
 ERC20Test:testFuzzPermitInvalid(string,string,uint16) (runs: 256, μ: 45279, ~: 45277)
 ERC20Test:testFuzzPermitSuccess(string,string,uint16) (runs: 256, μ: 70299, ~: 70295)
 ERC20Test:testFuzzRenounceOwnershipNonOwner(address) (runs: 256, μ: 13979, ~: 13979)
-ERC20Test:testFuzzRenounceOwnershipSuccess(address) (runs: 256, μ: 48361, ~: 48345)
+ERC20Test:testFuzzRenounceOwnershipSuccess(address) (runs: 256, μ: 48360, ~: 48345)
 ERC20Test:testFuzzSetMinterNonOwner(address,string) (runs: 256, μ: 15777, ~: 15704)
 ERC20Test:testFuzzSetMinterSuccess(string) (runs: 256, μ: 33196, ~: 33196)
-ERC20Test:testFuzzTransferFromInsufficientAllowance(address,address,uint256,uint8) (runs: 256, μ: 173482, ~: 173761)
-ERC20Test:testFuzzTransferFromSuccess(address,address,uint256) (runs: 256, μ: 200080, ~: 202152)
+ERC20Test:testFuzzTransferFromInsufficientAllowance(address,address,uint256,uint8) (runs: 256, μ: 173539, ~: 173761)
+ERC20Test:testFuzzTransferFromSuccess(address,address,uint256) (runs: 256, μ: 200205, ~: 202299)
 ERC20Test:testFuzzTransferInvalidAmount(address,address,uint256) (runs: 256, μ: 16849, ~: 16849)
 ERC20Test:testFuzzTransferOwnershipNonOwner(address,address) (runs: 256, μ: 14068, ~: 14068)
 ERC20Test:testFuzzTransferOwnershipSuccess(address,address) (runs: 256, μ: 73901, ~: 73874)
-ERC20Test:testFuzzTransferSuccess(address,uint256) (runs: 256, μ: 172825, ~: 173876)
+ERC20Test:testFuzzTransferSuccess(address,uint256) (runs: 256, μ: 172888, ~: 173876)
 ERC20Test:testHasOwner() (gas: 9758)
 ERC20Test:testInitialSetup() (gas: 1467701)
 ERC20Test:testMintNonMinter() (gas: 12639)
@@ -349,18 +349,18 @@ ERC2981Test:testDeleteDefaultRoyaltyNonOwner() (gas: 10537)
 ERC2981Test:testFuzzDeleteDefaultRoyaltyNonOwner(address) (runs: 256, μ: 13271, ~: 13271)
 ERC2981Test:testFuzzRenounceOwnershipNonOwner(address) (runs: 256, μ: 13972, ~: 13972)
 ERC2981Test:testFuzzRenounceOwnershipSuccess(address) (runs: 256, μ: 24598, ~: 24598)
-ERC2981Test:testFuzzResetTokenRoyalty(address,address,uint256,uint256,uint96,uint256) (runs: 256, μ: 93338, ~: 94699)
+ERC2981Test:testFuzzResetTokenRoyalty(address,address,uint256,uint256,uint96,uint256) (runs: 256, μ: 93351, ~: 94709)
 ERC2981Test:testFuzzResetTokenRoyaltyNonOwner(address) (runs: 256, μ: 13246, ~: 13246)
-ERC2981Test:testFuzzRoyaltyInfoDefaultRoyalty(address,uint256,uint256,uint96,uint256) (runs: 256, μ: 77900, ~: 79183)
-ERC2981Test:testFuzzRoyaltyInfoDeleteDefaultRoyalty(address,uint256,uint256,uint96,uint256) (runs: 256, μ: 61643, ~: 62573)
-ERC2981Test:testFuzzRoyaltyInfoSetTokenRoyalty(address,address,uint256,uint256,uint96,uint256) (runs: 256, μ: 118900, ~: 121030)
-ERC2981Test:testFuzzRoyaltyInfoSetTokenRoyaltyUpdate(address,address,uint256,uint256,uint96,uint256) (runs: 256, μ: 162152, ~: 165531)
-ERC2981Test:testFuzzRoyaltyInfoUpdateDefaultRoyalty(address,address,uint256,uint256,uint96,uint256) (runs: 256, μ: 83741, ~: 84678)
+ERC2981Test:testFuzzRoyaltyInfoDefaultRoyalty(address,uint256,uint256,uint96,uint256) (runs: 256, μ: 78058, ~: 79183)
+ERC2981Test:testFuzzRoyaltyInfoDeleteDefaultRoyalty(address,uint256,uint256,uint96,uint256) (runs: 256, μ: 61668, ~: 62595)
+ERC2981Test:testFuzzRoyaltyInfoSetTokenRoyalty(address,address,uint256,uint256,uint96,uint256) (runs: 256, μ: 119508, ~: 121030)
+ERC2981Test:testFuzzRoyaltyInfoSetTokenRoyaltyUpdate(address,address,uint256,uint256,uint96,uint256) (runs: 256, μ: 163562, ~: 165531)
+ERC2981Test:testFuzzRoyaltyInfoUpdateDefaultRoyalty(address,address,uint256,uint256,uint96,uint256) (runs: 256, μ: 83802, ~: 84678)
 ERC2981Test:testFuzzSetDefaultRoyaltyNonOwner(address) (runs: 256, μ: 15525, ~: 15525)
-ERC2981Test:testFuzzSetDefaultRoyaltyTooHighFeeNumerator(uint96) (runs: 256, μ: 21316, ~: 21125)
+ERC2981Test:testFuzzSetDefaultRoyaltyTooHighFeeNumerator(uint96) (runs: 256, μ: 21337, ~: 21125)
 ERC2981Test:testFuzzSetTokenRoyaltyInvalidReceiver(address) (runs: 256, μ: 18626, ~: 18626)
 ERC2981Test:testFuzzSetTokenRoyaltyNonOwner(address) (runs: 256, μ: 15565, ~: 15565)
-ERC2981Test:testFuzzSetTokenRoyaltyTooHighFeeNumerator(uint96) (runs: 256, μ: 21357, ~: 21166)
+ERC2981Test:testFuzzSetTokenRoyaltyTooHighFeeNumerator(uint96) (runs: 256, μ: 21378, ~: 21166)
 ERC2981Test:testFuzzTransferOwnershipNonOwner(address,address) (runs: 256, μ: 14039, ~: 14039)
 ERC2981Test:testFuzzTransferOwnershipSuccess(address,address) (runs: 256, μ: 29577, ~: 29577)
 ERC2981Test:testHasOwner() (gas: 9688)
@@ -388,8 +388,8 @@ ERC2981Test:testSupportsInterfaceSuccessGasCost() (gas: 6345)
 ERC2981Test:testTransferOwnershipNonOwner() (gas: 12649)
 ERC2981Test:testTransferOwnershipSuccess() (gas: 22091)
 ERC2981Test:testTransferOwnershipToZeroAddress() (gas: 15557)
-ERC4626VaultInvariants:invariantTotalAssets() (runs: 256, calls: 3840, reverts: 3242)
-ERC4626VaultInvariants:invariantTotalSupply() (runs: 256, calls: 3840, reverts: 3242)
+ERC4626VaultInvariants:invariantTotalAssets() (runs: 256, calls: 3840, reverts: 3244)
+ERC4626VaultInvariants:invariantTotalSupply() (runs: 256, calls: 3840, reverts: 3244)
 ERC4626VaultTest:testCachedDomainSeparator() (gas: 7676)
 ERC4626VaultTest:testDepositInsufficientAllowance() (gas: 82425)
 ERC4626VaultTest:testDepositWithNoApproval() (gas: 24740)
@@ -400,10 +400,10 @@ ERC4626VaultTest:testEmptyVaultDeposit() (gas: 556789)
 ERC4626VaultTest:testEmptyVaultMint() (gas: 557600)
 ERC4626VaultTest:testEmptyVaultRedeem() (gas: 191988)
 ERC4626VaultTest:testEmptyVaultwithdraw() (gas: 204833)
-ERC4626VaultTest:testFail_redeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 554223, ~: 558247)
-ERC4626VaultTest:testFail_withdraw((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 556033, ~: 560088)
-ERC4626VaultTest:testFuzzDomainSeparator(uint8) (runs: 256, μ: 11557, ~: 11577)
-ERC4626VaultTest:testFuzzEIP712Domain(bytes1,uint8,bytes32,uint256[]) (runs: 256, μ: 19367, ~: 19328)
+ERC4626VaultTest:testFail_redeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 554108, ~: 557131)
+ERC4626VaultTest:testFail_withdraw((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 556124, ~: 560088)
+ERC4626VaultTest:testFuzzDomainSeparator(uint8) (runs: 256, μ: 11555, ~: 11577)
+ERC4626VaultTest:testFuzzEIP712Domain(bytes1,uint8,bytes32,uint256[]) (runs: 256, μ: 19366, ~: 19328)
 ERC4626VaultTest:testFuzzPermitInvalid(string,string,uint16) (runs: 256, μ: 45211, ~: 45209)
 ERC4626VaultTest:testFuzzPermitSuccess(string,string,uint16) (runs: 256, μ: 70194, ~: 70190)
 ERC4626VaultTest:testInitialSetup() (gas: 5784605)
@@ -424,30 +424,30 @@ ERC4626VaultTest:testVaultInteractionsForSomeoneElse() (gas: 221714)
 ERC4626VaultTest:testWithdrawInsufficientAllowance() (gas: 122543)
 ERC4626VaultTest:testWithdrawInsufficientAssets() (gas: 117830)
 ERC4626VaultTest:testWithdrawWithNoAssets() (gas: 21327)
-ERC4626VaultTest:test_RT_deposit_redeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 473608, ~: 475944)
-ERC4626VaultTest:test_RT_deposit_withdraw((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 475389, ~: 477933)
-ERC4626VaultTest:test_RT_mint_redeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 474274, ~: 476284)
-ERC4626VaultTest:test_RT_mint_withdraw((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 476630, ~: 478151)
-ERC4626VaultTest:test_RT_redeem_deposit((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 473670, ~: 476737)
-ERC4626VaultTest:test_RT_redeem_mint((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 473963, ~: 476539)
-ERC4626VaultTest:test_RT_withdraw_deposit((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 475427, ~: 478372)
-ERC4626VaultTest:test_RT_withdraw_mint((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 476380, ~: 478560)
-ERC4626VaultTest:test_asset((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 422368, ~: 427654)
-ERC4626VaultTest:test_convertToAssets((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 429078, ~: 432395)
-ERC4626VaultTest:test_convertToShares((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 428584, ~: 432529)
-ERC4626VaultTest:test_deposit((address[4],uint256[4],uint256[4],int256),uint256,uint256) (runs: 256, μ: 468672, ~: 472487)
-ERC4626VaultTest:test_maxDeposit((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 422381, ~: 427667)
-ERC4626VaultTest:test_maxMint((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 422406, ~: 427692)
-ERC4626VaultTest:test_maxRedeem((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 422521, ~: 427806)
-ERC4626VaultTest:test_maxWithdraw((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 424074, ~: 429427)
-ERC4626VaultTest:test_mint((address[4],uint256[4],uint256[4],int256),uint256,uint256) (runs: 256, μ: 469793, ~: 472627)
-ERC4626VaultTest:test_previewDeposit((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 465930, ~: 468818)
-ERC4626VaultTest:test_previewMint((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 467656, ~: 469248)
-ERC4626VaultTest:test_previewRedeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 468133, ~: 470638)
-ERC4626VaultTest:test_previewWithdraw((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 470392, ~: 471970)
-ERC4626VaultTest:test_redeem((address[4],uint256[4],uint256[4],int256),uint256,uint256) (runs: 256, μ: 472120, ~: 474925)
-ERC4626VaultTest:test_totalAssets((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 422971, ~: 428256)
-ERC4626VaultTest:test_withdraw((address[4],uint256[4],uint256[4],int256),uint256,uint256) (runs: 256, μ: 473584, ~: 476530)
+ERC4626VaultTest:test_RT_deposit_redeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 473526, ~: 476185)
+ERC4626VaultTest:test_RT_deposit_withdraw((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 475160, ~: 477653)
+ERC4626VaultTest:test_RT_mint_redeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 474813, ~: 476581)
+ERC4626VaultTest:test_RT_mint_withdraw((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 476634, ~: 478214)
+ERC4626VaultTest:test_RT_redeem_deposit((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 473604, ~: 476586)
+ERC4626VaultTest:test_RT_redeem_mint((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 474039, ~: 476816)
+ERC4626VaultTest:test_RT_withdraw_deposit((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 475286, ~: 478384)
+ERC4626VaultTest:test_RT_withdraw_mint((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 476468, ~: 478675)
+ERC4626VaultTest:test_asset((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 423394, ~: 427770)
+ERC4626VaultTest:test_convertToAssets((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 429102, ~: 432564)
+ERC4626VaultTest:test_convertToShares((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 429207, ~: 432461)
+ERC4626VaultTest:test_deposit((address[4],uint256[4],uint256[4],int256),uint256,uint256) (runs: 256, μ: 468538, ~: 472319)
+ERC4626VaultTest:test_maxDeposit((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 423407, ~: 427783)
+ERC4626VaultTest:test_maxMint((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 423432, ~: 427808)
+ERC4626VaultTest:test_maxRedeem((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 423546, ~: 427922)
+ERC4626VaultTest:test_maxWithdraw((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 425118, ~: 429612)
+ERC4626VaultTest:test_mint((address[4],uint256[4],uint256[4],int256),uint256,uint256) (runs: 256, μ: 469734, ~: 472550)
+ERC4626VaultTest:test_previewDeposit((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 465833, ~: 468641)
+ERC4626VaultTest:test_previewMint((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 467426, ~: 468887)
+ERC4626VaultTest:test_previewRedeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 468054, ~: 470493)
+ERC4626VaultTest:test_previewWithdraw((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 470461, ~: 472090)
+ERC4626VaultTest:test_redeem((address[4],uint256[4],uint256[4],int256),uint256,uint256) (runs: 256, μ: 472207, ~: 475074)
+ERC4626VaultTest:test_totalAssets((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 423996, ~: 428372)
+ERC4626VaultTest:test_withdraw((address[4],uint256[4],uint256[4],int256),uint256,uint256) (runs: 256, μ: 473588, ~: 475995)
 ERC721Invariants:invariantOwner() (runs: 256, calls: 3840, reverts: 3469)
 ERC721Invariants:invariantTotalSupply() (runs: 256, calls: 3840, reverts: 3469)
 ERC721Test:testApproveClearingApprovalWithNoPriorApproval() (gas: 177294)
@@ -469,31 +469,31 @@ ERC721Test:testBurnSuccessViaApproveAndSetApprovalForAll() (gas: 371421)
 ERC721Test:testCachedDomainSeparator() (gas: 7699)
 ERC721Test:testDomainSeparator() (gas: 11450)
 ERC721Test:testEIP712Domain() (gas: 13877)
-ERC721Test:testFuzzApproveClearingApprovalWithNoPriorApproval(address,address) (runs: 256, μ: 196789, ~: 196799)
+ERC721Test:testFuzzApproveClearingApprovalWithNoPriorApproval(address,address) (runs: 256, μ: 196799, ~: 196799)
 ERC721Test:testFuzzApproveClearingApprovalWithPriorApproval(address,address) (runs: 256, μ: 184072, ~: 184072)
 ERC721Test:testFuzzApproveFromNonOwner(address) (runs: 256, μ: 172895, ~: 172895)
 ERC721Test:testFuzzApproveFromOperatorAddress(address,address,address) (runs: 256, μ: 222958, ~: 222958)
-ERC721Test:testFuzzApproveWithNoPriorApproval(address,address) (runs: 256, μ: 196744, ~: 196754)
-ERC721Test:testFuzzApproveWithPriorApproval(address,address) (runs: 256, μ: 203874, ~: 203884)
-ERC721Test:testFuzzBurnSuccess(address) (runs: 256, μ: 305615, ~: 305600)
+ERC721Test:testFuzzApproveWithNoPriorApproval(address,address) (runs: 256, μ: 196754, ~: 196754)
+ERC721Test:testFuzzApproveWithPriorApproval(address,address) (runs: 256, μ: 203884, ~: 203884)
+ERC721Test:testFuzzBurnSuccess(address) (runs: 256, μ: 305607, ~: 305600)
 ERC721Test:testFuzzDomainSeparator(uint8) (runs: 256, μ: 11643, ~: 11663)
-ERC721Test:testFuzzEIP712Domain(bytes1,uint8,bytes32,uint256[]) (runs: 256, μ: 19581, ~: 19542)
-ERC721Test:testFuzzGetApprovedApprovedTokenId(address,address) (runs: 256, μ: 194375, ~: 194385)
+ERC721Test:testFuzzEIP712Domain(bytes1,uint8,bytes32,uint256[]) (runs: 256, μ: 19582, ~: 19542)
+ERC721Test:testFuzzGetApprovedApprovedTokenId(address,address) (runs: 256, μ: 194385, ~: 194385)
 ERC721Test:testFuzzPermitInvalid(string,string,uint16) (runs: 256, μ: 201667, ~: 201665)
 ERC721Test:testFuzzPermitSuccess(string,string,uint16) (runs: 256, μ: 227137, ~: 227133)
 ERC721Test:testFuzzRenounceOwnershipNonOwner(address) (runs: 256, μ: 13938, ~: 13938)
-ERC721Test:testFuzzRenounceOwnershipSuccess(address) (runs: 256, μ: 48379, ~: 48364)
+ERC721Test:testFuzzRenounceOwnershipSuccess(address) (runs: 256, μ: 48380, ~: 48364)
 ERC721Test:testFuzzSafeMintNonMinter(address) (runs: 256, μ: 15894, ~: 15894)
-ERC721Test:testFuzzSafeMintSuccess(address[]) (runs: 256, μ: 20855146, ~: 20004472)
-ERC721Test:testFuzzSafeTransferFromWithData(address,address,address,bytes) (runs: 256, μ: 1429054, ~: 1429893)
+ERC721Test:testFuzzSafeMintSuccess(address[]) (runs: 256, μ: 21093782, ~: 20702624)
+ERC721Test:testFuzzSafeTransferFromWithData(address,address,address,bytes) (runs: 256, μ: 1428999, ~: 1429883)
 ERC721Test:testFuzzSetApprovalForAllSuccess(address,address) (runs: 256, μ: 188481, ~: 188481)
 ERC721Test:testFuzzSetMinterNonOwner(address,string) (runs: 256, μ: 15822, ~: 15749)
 ERC721Test:testFuzzSetMinterSuccess(string) (runs: 256, μ: 33217, ~: 33216)
-ERC721Test:testFuzzTokenByIndex(address,string[]) (runs: 256, μ: 21399845, ~: 21253069)
-ERC721Test:testFuzzTotalSupply(address,string[]) (runs: 256, μ: 21270507, ~: 21123504)
+ERC721Test:testFuzzTokenByIndex(address,string[]) (runs: 256, μ: 21137630, ~: 21161157)
+ERC721Test:testFuzzTotalSupply(address,string[]) (runs: 256, μ: 21009881, ~: 21033698)
 ERC721Test:testFuzzTransferFrom(address,address,address) (runs: 256, μ: 560097, ~: 560080)
 ERC721Test:testFuzzTransferOwnershipNonOwner(address,address) (runs: 256, μ: 14090, ~: 14090)
-ERC721Test:testFuzzTransferOwnershipSuccess(address,address) (runs: 256, μ: 73922, ~: 73892)
+ERC721Test:testFuzzTransferOwnershipSuccess(address,address) (runs: 256, μ: 73920, ~: 73892)
 ERC721Test:testGetApprovedApprovedTokenId() (gas: 194287)
 ERC721Test:testGetApprovedInvalidTokenId() (gas: 11097)
 ERC721Test:testGetApprovedNotApprovedTokenId() (gas: 170525)
@@ -556,19 +556,19 @@ ERC721Test:testTransferOwnershipToZeroAddress() (gas: 15608)
 MathTest:testCbrtRoundDown() (gas: 41159)
 MathTest:testCbrtRoundUp() (gas: 41806)
 MathTest:testCeilDiv() (gas: 12481)
-MathTest:testFuzzCbrt(uint256,bool) (runs: 256, μ: 19443, ~: 19288)
+MathTest:testFuzzCbrt(uint256,bool) (runs: 256, μ: 19434, ~: 19245)
 MathTest:testFuzzCeilDiv(uint256,uint256) (runs: 256, μ: 8962, ~: 8979)
 MathTest:testFuzzInt256Average(int256,int256) (runs: 256, μ: 5683, ~: 5683)
-MathTest:testFuzzLog10(uint256,bool) (runs: 256, μ: 6971, ~: 6961)
-MathTest:testFuzzLog2(uint256,bool) (runs: 256, μ: 6826, ~: 6803)
-MathTest:testFuzzLog256(uint256,bool) (runs: 256, μ: 6849, ~: 6827)
+MathTest:testFuzzLog10(uint256,bool) (runs: 256, μ: 6972, ~: 6961)
+MathTest:testFuzzLog2(uint256,bool) (runs: 256, μ: 6825, ~: 6803)
+MathTest:testFuzzLog256(uint256,bool) (runs: 256, μ: 6854, ~: 6836)
 MathTest:testFuzzMulDiv(uint256,uint256,uint256) (runs: 256, μ: 13038, ~: 12781)
 MathTest:testFuzzMulDivDomain(uint256,uint256,uint256) (runs: 256, μ: 10488, ~: 10570)
 MathTest:testFuzzSignum(int256) (runs: 256, μ: 5578, ~: 5570)
 MathTest:testFuzzUint256Average(uint256,uint256) (runs: 256, μ: 5763, ~: 5763)
-MathTest:testFuzzWadCbrt(uint256) (runs: 256, μ: 18982, ~: 18667)
-MathTest:testFuzzWadExp(int256) (runs: 256, μ: 14484, ~: 14597)
-MathTest:testFuzzWadLn(int256) (runs: 256, μ: 15982, ~: 15766)
+MathTest:testFuzzWadCbrt(uint256) (runs: 256, μ: 18989, ~: 18681)
+MathTest:testFuzzWadExp(int256) (runs: 256, μ: 14490, ~: 14597)
+MathTest:testFuzzWadLn(int256) (runs: 256, μ: 15994, ~: 15784)
 MathTest:testInt256Average() (gas: 12010)
 MathTest:testLog10RoundDown() (gas: 17685)
 MathTest:testLog10RoundUp() (gas: 18866)
@@ -589,8 +589,8 @@ MathTest:testWadExp() (gas: 24809)
 MathTest:testWadExpOverflow() (gas: 11127)
 MathTest:testWadLn() (gas: 24196)
 MathTest:testWadLnNegativeValues() (gas: 11130)
-MerkleProofVerificationTest:testFuzzMultiProofVerifySingleLeaf(bytes32[],uint256) (runs: 256, μ: 1649976152, ~: 1649972613)
-MerkleProofVerificationTest:testFuzzVerify(bytes32[],uint256) (runs: 256, μ: 135974864, ~: 135971401)
+MerkleProofVerificationTest:testFuzzMultiProofVerifySingleLeaf(bytes32[],uint256) (runs: 256, μ: 1649976162, ~: 1649972673)
+MerkleProofVerificationTest:testFuzzVerify(bytes32[],uint256) (runs: 256, μ: 135974873, ~: 135971461)
 MerkleProofVerificationTest:testFuzzVerifyMultiProofMultipleLeaves(bool,bool,bool) (runs: 256, μ: 412472467, ~: 412472462)
 MerkleProofVerificationTest:testInvalidMerkleMultiProof() (gas: 412478415)
 MerkleProofVerificationTest:testInvalidMerkleProof() (gas: 33970390)
@@ -658,13 +658,13 @@ SignatureCheckerTest:testFuzzEOAWithInvalidSignature(bytes,string) (runs: 256, 
 SignatureCheckerTest:testFuzzEOAWithInvalidSigner(string,string) (runs: 256, μ: 21466, ~: 21527)
 SignatureCheckerTest:testFuzzEOAWithValidSignature(string,string) (runs: 256, μ: 20585, ~: 20646)
 SignatureCheckerTest:testInitialSetup() (gas: 5415)
-TimelockControllerInvariants:invariantExecutedLessThanOrEqualToScheduled() (runs: 256, calls: 3840, reverts: 1528)
-TimelockControllerInvariants:invariantExecutedProposalCancellation() (runs: 256, calls: 3840, reverts: 1531)
-TimelockControllerInvariants:invariantExecutingCancelledProposal() (runs: 256, calls: 3840, reverts: 1528)
+TimelockControllerInvariants:invariantExecutedLessThanOrEqualToScheduled() (runs: 256, calls: 3840, reverts: 1544)
+TimelockControllerInvariants:invariantExecutedProposalCancellation() (runs: 256, calls: 3840, reverts: 1499)
+TimelockControllerInvariants:invariantExecutingCancelledProposal() (runs: 256, calls: 3840, reverts: 1543)
 TimelockControllerInvariants:invariantExecutingNotReadyProposal() (runs: 256, calls: 3840, reverts: 1535)
-TimelockControllerInvariants:invariantOnceProposalExecution() (runs: 256, calls: 3840, reverts: 1485)
-TimelockControllerInvariants:invariantProposalsExecutedMatchCount() (runs: 256, calls: 3840, reverts: 1528)
-TimelockControllerInvariants:invariantSumOfProposals() (runs: 256, calls: 3840, reverts: 1528)
+TimelockControllerInvariants:invariantOnceProposalExecution() (runs: 256, calls: 3840, reverts: 1549)
+TimelockControllerInvariants:invariantProposalsExecutedMatchCount() (runs: 256, calls: 3840, reverts: 1544)
+TimelockControllerInvariants:invariantSumOfProposals() (runs: 256, calls: 3840, reverts: 1544)
 TimelockControllerTest:testAdminCannotBatchExecute() (gas: 750573)
 TimelockControllerTest:testAdminCannotBatchSchedule() (gas: 748359)
 TimelockControllerTest:testAdminCannotCancel() (gas: 13280)
@@ -702,10 +702,10 @@ TimelockControllerTest:testExecutorCanExecute() (gas: 29920)
 TimelockControllerTest:testExecutorCannotBatchSchedule() (gas: 1485375)
 TimelockControllerTest:testExecutorCannotCancel() (gas: 15281)
 TimelockControllerTest:testExecutorCannotSchedule() (gas: 19073)
-TimelockControllerTest:testFuzzBatchValue(uint256) (runs: 256, μ: 4652693, ~: 4652826)
+TimelockControllerTest:testFuzzBatchValue(uint256) (runs: 256, μ: 4652716, ~: 4652826)
 TimelockControllerTest:testFuzzHashOperation(address,uint256,bytes,bytes32,bytes32) (runs: 256, μ: 8261, ~: 8159)
 TimelockControllerTest:testFuzzHashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32) (runs: 256, μ: 1881454, ~: 1889945)
-TimelockControllerTest:testFuzzOperationValue(uint256) (runs: 256, μ: 113151, ~: 113263)
+TimelockControllerTest:testFuzzOperationValue(uint256) (runs: 256, μ: 113179, ~: 113263)
 TimelockControllerTest:testHandleERC1155() (gas: 41505969)
 TimelockControllerTest:testHandleERC721() (gas: 7056837)
 TimelockControllerTest:testHashOperation() (gas: 10233)
diff --git a/foundry.toml b/foundry.toml
index d1bae026..8d6d93ea 100644
--- a/foundry.toml
+++ b/foundry.toml
@@ -13,7 +13,7 @@ invariant = { runs = 256 }                                  # the number of runs
 ffi = true                                                  # whether to enable foreign function interface (ffi) cheatcodes or not
 verbosity = 3                                               # the verbosity of tests
 fs_permissions = [{ access = "read-write", path = "./"}]    # set read-write access to project root
-solc_version = '0.8.23'                                     # override for the solc version
+solc_version = '0.8.24'                                     # override for the solc version
 evm_version = 'shanghai'                                    # set the EVM target version
 
 ## default overrides for the CI runs
diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts
index 7eba10dd..cc431f53 160000
--- a/lib/openzeppelin-contracts
+++ b/lib/openzeppelin-contracts
@@ -1,1 +1,1 @@
-Subproject commit 7eba10dd1e4899f5ca93e3ec3a0b3dafff9b1f03
+Subproject commit cc431f53e03cffb71a0d08c91f934e3251807eb6
diff --git a/lib/solady b/lib/solady
index 8919f61d..54ea1543 160000
--- a/lib/solady
+++ b/lib/solady
@@ -1,1 +1,1 @@
-Subproject commit 8919f61d14a5e7b32f3d809c9f5fe3ea2ebcbc50
+Subproject commit 54ea1543a229b88b44ccb6ec5ea570135811a7d9
diff --git a/lib/utils/VyperDeployer.sol b/lib/utils/VyperDeployer.sol
index f1ec872f..55b0b6f3 100644
--- a/lib/utils/VyperDeployer.sol
+++ b/lib/utils/VyperDeployer.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Create} from "create-util/Create.sol";
 
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0cea5c5b..ce631397 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -112,7 +112,7 @@ packages:
       debug: 4.3.4
       espree: 9.6.1
       globals: 13.24.0
-      ignore: 5.3.0
+      ignore: 5.3.1
       import-fresh: 3.3.0
       js-yaml: 4.1.0
       minimatch: 3.1.2
@@ -1134,7 +1134,7 @@ packages:
       glob-parent: 6.0.2
       globals: 13.24.0
       graphemer: 1.4.0
-      ignore: 5.3.0
+      ignore: 5.3.1
       imurmurhash: 0.1.4
       is-glob: 4.0.3
       is-path-inside: 3.0.3
@@ -1506,10 +1506,10 @@ packages:
       }
     dev: true
 
-  /ignore@5.3.0:
+  /ignore@5.3.1:
     resolution:
       {
-        integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==,
+        integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==,
       }
     engines: { node: ">= 4" }
     dev: true
@@ -2286,7 +2286,7 @@ packages:
       cosmiconfig: 8.3.6
       fast-diff: 1.3.0
       glob: 8.1.0
-      ignore: 5.3.0
+      ignore: 5.3.1
       js-yaml: 4.1.0
       latest-version: 7.0.0
       lodash: 4.17.21


Test patch:
diff --git a/test/auth/AccessControl.t.sol b/test/auth/AccessControl.t.sol
index 43eae8ab..a4bd9582 100644
--- a/test/auth/AccessControl.t.sol
+++ b/test/auth/AccessControl.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {VyperDeployer} from "utils/VyperDeployer.sol";
diff --git a/test/auth/Ownable.t.sol b/test/auth/Ownable.t.sol
index 6e74b347..aff574f1 100644
--- a/test/auth/Ownable.t.sol
+++ b/test/auth/Ownable.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {VyperDeployer} from "utils/VyperDeployer.sol";
diff --git a/test/auth/Ownable2Step.t.sol b/test/auth/Ownable2Step.t.sol
index e26d0ed7..727604a9 100644
--- a/test/auth/Ownable2Step.t.sol
+++ b/test/auth/Ownable2Step.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {VyperDeployer} from "utils/VyperDeployer.sol";
diff --git a/test/auth/interfaces/IAccessControlExtended.sol b/test/auth/interfaces/IAccessControlExtended.sol
index ff9419cf..6538bd63 100644
--- a/test/auth/interfaces/IAccessControlExtended.sol
+++ b/test/auth/interfaces/IAccessControlExtended.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {IERC165} from "openzeppelin/utils/introspection/IERC165.sol";
 import {IAccessControl} from "openzeppelin/access/IAccessControl.sol";
diff --git a/test/auth/interfaces/IOwnable.sol b/test/auth/interfaces/IOwnable.sol
index 629dbcb2..af87635e 100644
--- a/test/auth/interfaces/IOwnable.sol
+++ b/test/auth/interfaces/IOwnable.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 interface IOwnable {
     event OwnershipTransferred(
diff --git a/test/auth/interfaces/IOwnable2Step.sol b/test/auth/interfaces/IOwnable2Step.sol
index 18c98f85..a7ac160c 100644
--- a/test/auth/interfaces/IOwnable2Step.sol
+++ b/test/auth/interfaces/IOwnable2Step.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 interface IOwnable2Step {
     event OwnershipTransferStarted(
diff --git a/test/extensions/ERC2981.t.sol b/test/extensions/ERC2981.t.sol
index 9327b1bf..ae8525ab 100644
--- a/test/extensions/ERC2981.t.sol
+++ b/test/extensions/ERC2981.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {VyperDeployer} from "utils/VyperDeployer.sol";
diff --git a/test/extensions/ERC4626.t.sol b/test/extensions/ERC4626.t.sol
index e1e8e3d1..1d317620 100644
--- a/test/extensions/ERC4626.t.sol
+++ b/test/extensions/ERC4626.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {ERC4626Test} from "erc4626-tests/ERC4626.test.sol";
diff --git a/test/extensions/interfaces/IERC2981Extended.sol b/test/extensions/interfaces/IERC2981Extended.sol
index 043302c0..29973feb 100644
--- a/test/extensions/interfaces/IERC2981Extended.sol
+++ b/test/extensions/interfaces/IERC2981Extended.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {IERC2981} from "openzeppelin/interfaces/IERC2981.sol";
 
diff --git a/test/extensions/interfaces/IERC4626Extended.sol b/test/extensions/interfaces/IERC4626Extended.sol
index 1c225583..1a9e662c 100644
--- a/test/extensions/interfaces/IERC4626Extended.sol
+++ b/test/extensions/interfaces/IERC4626Extended.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {IERC20Metadata} from "openzeppelin/token/ERC20/extensions/IERC20Metadata.sol";
 import {IERC20Permit} from "openzeppelin/token/ERC20/extensions/IERC20Permit.sol";
diff --git a/test/extensions/mocks/ERC20ExcessDecimalsMock.sol b/test/extensions/mocks/ERC20ExcessDecimalsMock.sol
index e4b4e7d8..8e9519ee 100644
--- a/test/extensions/mocks/ERC20ExcessDecimalsMock.sol
+++ b/test/extensions/mocks/ERC20ExcessDecimalsMock.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: MIT
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 /**
  * @title ERC20ExcessDecimalsMock
diff --git a/test/governance/TimelockController.t.sol b/test/governance/TimelockController.t.sol
index 21ab477e..07ce8cbe 100644
--- a/test/governance/TimelockController.t.sol
+++ b/test/governance/TimelockController.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {VyperDeployer} from "utils/VyperDeployer.sol";
diff --git a/test/governance/interfaces/ITimelockController.sol b/test/governance/interfaces/ITimelockController.sol
index da07566b..2a9f1c08 100644
--- a/test/governance/interfaces/ITimelockController.sol
+++ b/test/governance/interfaces/ITimelockController.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {IERC721Receiver} from "openzeppelin/token/ERC721/IERC721Receiver.sol";
 import {IERC1155Receiver} from "openzeppelin/token/ERC1155/IERC1155Receiver.sol";
diff --git a/test/governance/mocks/CallReceiverMock.sol b/test/governance/mocks/CallReceiverMock.sol
index c6be49e3..e2c95ecc 100644
--- a/test/governance/mocks/CallReceiverMock.sol
+++ b/test/governance/mocks/CallReceiverMock.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: MIT
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 /**
  * @title CallReceiverMock
diff --git a/test/tokens/ERC1155.t.sol b/test/tokens/ERC1155.t.sol
index ac4ae342..021067f6 100644
--- a/test/tokens/ERC1155.t.sol
+++ b/test/tokens/ERC1155.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {VyperDeployer} from "utils/VyperDeployer.sol";
diff --git a/test/tokens/ERC20.t.sol b/test/tokens/ERC20.t.sol
index 0c3f3a21..340e1da2 100644
--- a/test/tokens/ERC20.t.sol
+++ b/test/tokens/ERC20.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {VyperDeployer} from "utils/VyperDeployer.sol";
diff --git a/test/tokens/ERC721.t.sol b/test/tokens/ERC721.t.sol
index e47f9fa2..4237e91f 100644
--- a/test/tokens/ERC721.t.sol
+++ b/test/tokens/ERC721.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {stdError} from "forge-std/StdError.sol";
diff --git a/test/tokens/interfaces/IERC1155Extended.sol b/test/tokens/interfaces/IERC1155Extended.sol
index bf87c467..b2a681ca 100644
--- a/test/tokens/interfaces/IERC1155Extended.sol
+++ b/test/tokens/interfaces/IERC1155Extended.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {IERC1155MetadataURI} from "openzeppelin/token/ERC1155/extensions/IERC1155MetadataURI.sol";
 
diff --git a/test/tokens/interfaces/IERC20Extended.sol b/test/tokens/interfaces/IERC20Extended.sol
index f678cdb1..ed391792 100644
--- a/test/tokens/interfaces/IERC20Extended.sol
+++ b/test/tokens/interfaces/IERC20Extended.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {IERC20Metadata} from "openzeppelin/token/ERC20/extensions/IERC20Metadata.sol";
 import {IERC20Permit} from "openzeppelin/token/ERC20/extensions/IERC20Permit.sol";
diff --git a/test/tokens/interfaces/IERC4494.sol b/test/tokens/interfaces/IERC4494.sol
index 2d99b238..6239a8c4 100644
--- a/test/tokens/interfaces/IERC4494.sol
+++ b/test/tokens/interfaces/IERC4494.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {IERC165} from "openzeppelin/utils/introspection/IERC165.sol";
 
diff --git a/test/tokens/interfaces/IERC721Extended.sol b/test/tokens/interfaces/IERC721Extended.sol
index b3d737b0..abc14af8 100644
--- a/test/tokens/interfaces/IERC721Extended.sol
+++ b/test/tokens/interfaces/IERC721Extended.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {IERC721Metadata} from "openzeppelin/token/ERC721/extensions/IERC721Metadata.sol";
 import {IERC721Enumerable} from "openzeppelin/token/ERC721/extensions/IERC721Enumerable.sol";
diff --git a/test/tokens/mocks/ERC1155ReceiverMock.sol b/test/tokens/mocks/ERC1155ReceiverMock.sol
index 9185f95f..e1560b1e 100644
--- a/test/tokens/mocks/ERC1155ReceiverMock.sol
+++ b/test/tokens/mocks/ERC1155ReceiverMock.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: MIT
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {ERC165} from "openzeppelin/utils/introspection/ERC165.sol";
 import {IERC1155Receiver} from "openzeppelin/token/ERC1155/IERC1155Receiver.sol";
diff --git a/test/tokens/mocks/ERC721ReceiverMock.sol b/test/tokens/mocks/ERC721ReceiverMock.sol
index 6e327c20..7f1b3c7d 100644
--- a/test/tokens/mocks/ERC721ReceiverMock.sol
+++ b/test/tokens/mocks/ERC721ReceiverMock.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: MIT
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {IERC721Receiver} from "openzeppelin/token/ERC721/IERC721Receiver.sol";
 
diff --git a/test/utils/Base64.t.sol b/test/utils/Base64.t.sol
index 6a35ebf4..10668f36 100644
--- a/test/utils/Base64.t.sol
+++ b/test/utils/Base64.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {PRBTest} from "prb/test/PRBTest.sol";
 import {VyperDeployer} from "utils/VyperDeployer.sol";
diff --git a/test/utils/BatchDistributor.t.sol b/test/utils/BatchDistributor.t.sol
index 18c9b11b..89596ddf 100644
--- a/test/utils/BatchDistributor.t.sol
+++ b/test/utils/BatchDistributor.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {VyperDeployer} from "utils/VyperDeployer.sol";
diff --git a/test/utils/Create2Address.t.sol b/test/utils/Create2Address.t.sol
index 52ad90f0..43281524 100644
--- a/test/utils/Create2Address.t.sol
+++ b/test/utils/Create2Address.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {VyperDeployer} from "utils/VyperDeployer.sol";
diff --git a/test/utils/CreateAddress.t.sol b/test/utils/CreateAddress.t.sol
index c9116943..ab6a8fc9 100644
--- a/test/utils/CreateAddress.t.sol
+++ b/test/utils/CreateAddress.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {VyperDeployer} from "utils/VyperDeployer.sol";
diff --git a/test/utils/ECDSA.t.sol b/test/utils/ECDSA.t.sol
index b224dc6b..28a62b92 100644
--- a/test/utils/ECDSA.t.sol
+++ b/test/utils/ECDSA.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {VyperDeployer} from "utils/VyperDeployer.sol";
diff --git a/test/utils/EIP712DomainSeparator.t.sol b/test/utils/EIP712DomainSeparator.t.sol
index b09f66ad..3621b1c8 100644
--- a/test/utils/EIP712DomainSeparator.t.sol
+++ b/test/utils/EIP712DomainSeparator.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {VyperDeployer} from "utils/VyperDeployer.sol";
diff --git a/test/utils/Math.t.sol b/test/utils/Math.t.sol
index 325f911d..11af7648 100644
--- a/test/utils/Math.t.sol
+++ b/test/utils/Math.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {VyperDeployer} from "utils/VyperDeployer.sol";
diff --git a/test/utils/MerkleProofVerification.t.sol b/test/utils/MerkleProofVerification.t.sol
index e5cd347e..667180e5 100644
--- a/test/utils/MerkleProofVerification.t.sol
+++ b/test/utils/MerkleProofVerification.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {VyperDeployer} from "utils/VyperDeployer.sol";
diff --git a/test/utils/Multicall.t.sol b/test/utils/Multicall.t.sol
index 62b7294d..07e9fbd4 100644
--- a/test/utils/Multicall.t.sol
+++ b/test/utils/Multicall.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {VyperDeployer} from "utils/VyperDeployer.sol";
diff --git a/test/utils/SignatureChecker.t.sol b/test/utils/SignatureChecker.t.sol
index 4af8cd5d..9fd89602 100644
--- a/test/utils/SignatureChecker.t.sol
+++ b/test/utils/SignatureChecker.t.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Test} from "forge-std/Test.sol";
 import {VyperDeployer} from "utils/VyperDeployer.sol";
diff --git a/test/utils/interfaces/IBase64.sol b/test/utils/interfaces/IBase64.sol
index 69f5c047..51190e1a 100644
--- a/test/utils/interfaces/IBase64.sol
+++ b/test/utils/interfaces/IBase64.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 interface IBase64 {
     function encode(
diff --git a/test/utils/interfaces/IBatchDistributor.sol b/test/utils/interfaces/IBatchDistributor.sol
index 1026e084..9f72ec07 100644
--- a/test/utils/interfaces/IBatchDistributor.sol
+++ b/test/utils/interfaces/IBatchDistributor.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {IERC20} from "openzeppelin/token/ERC20/IERC20.sol";
 
diff --git a/test/utils/interfaces/ICreate2Address.sol b/test/utils/interfaces/ICreate2Address.sol
index ad829609..c658f8bb 100644
--- a/test/utils/interfaces/ICreate2Address.sol
+++ b/test/utils/interfaces/ICreate2Address.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 interface ICreate2Address {
     function compute_address_self(
diff --git a/test/utils/interfaces/ICreateAddress.sol b/test/utils/interfaces/ICreateAddress.sol
index dd002989..61ce4799 100644
--- a/test/utils/interfaces/ICreateAddress.sol
+++ b/test/utils/interfaces/ICreateAddress.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 interface ICreateAddress {
     function compute_address_rlp_self(
diff --git a/test/utils/interfaces/IECDSA.sol b/test/utils/interfaces/IECDSA.sol
index b6588e43..52986c03 100644
--- a/test/utils/interfaces/IECDSA.sol
+++ b/test/utils/interfaces/IECDSA.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 interface IECDSA {
     function recover_sig(
diff --git a/test/utils/interfaces/IEIP712DomainSeparator.sol b/test/utils/interfaces/IEIP712DomainSeparator.sol
index cf2ffa0b..ac8abe82 100644
--- a/test/utils/interfaces/IEIP712DomainSeparator.sol
+++ b/test/utils/interfaces/IEIP712DomainSeparator.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {IERC5267} from "openzeppelin/interfaces/IERC5267.sol";
 
diff --git a/test/utils/interfaces/IMath.sol b/test/utils/interfaces/IMath.sol
index 41a33c8c..83f7e193 100644
--- a/test/utils/interfaces/IMath.sol
+++ b/test/utils/interfaces/IMath.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 interface IMath {
     function uint256_average(
diff --git a/test/utils/interfaces/IMerkleProofVerification.sol b/test/utils/interfaces/IMerkleProofVerification.sol
index b740cbbe..c3531ac1 100644
--- a/test/utils/interfaces/IMerkleProofVerification.sol
+++ b/test/utils/interfaces/IMerkleProofVerification.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 interface IMerkleProofVerification {
     function verify(
diff --git a/test/utils/interfaces/IMulticall.sol b/test/utils/interfaces/IMulticall.sol
index 4afa886b..b607fcb4 100644
--- a/test/utils/interfaces/IMulticall.sol
+++ b/test/utils/interfaces/IMulticall.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 interface IMulticall {
     struct Batch {
diff --git a/test/utils/interfaces/ISignatureChecker.sol b/test/utils/interfaces/ISignatureChecker.sol
index 74aabe2d..5a266d0e 100644
--- a/test/utils/interfaces/ISignatureChecker.sol
+++ b/test/utils/interfaces/ISignatureChecker.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: WTFPL
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 interface ISignatureChecker {
     function IERC1271_ISVALIDSIGNATURE_SELECTOR()
diff --git a/test/utils/mocks/Create2Impl.sol b/test/utils/mocks/Create2Impl.sol
index 3afdd15b..90c514c2 100644
--- a/test/utils/mocks/Create2Impl.sol
+++ b/test/utils/mocks/Create2Impl.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: MIT
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Create2} from "openzeppelin/utils/Create2.sol";
 
diff --git a/test/utils/mocks/ERC1271MaliciousMock.sol b/test/utils/mocks/ERC1271MaliciousMock.sol
index c4a39baf..1cec58e0 100644
--- a/test/utils/mocks/ERC1271MaliciousMock.sol
+++ b/test/utils/mocks/ERC1271MaliciousMock.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: MIT
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {IERC1271} from "openzeppelin/interfaces/IERC1271.sol";
 
diff --git a/test/utils/mocks/ERC1271WalletMock.sol b/test/utils/mocks/ERC1271WalletMock.sol
index 433c8d2c..273e4077 100644
--- a/test/utils/mocks/ERC1271WalletMock.sol
+++ b/test/utils/mocks/ERC1271WalletMock.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: MIT
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {Ownable} from "openzeppelin/access/Ownable.sol";
 import {IERC1271} from "openzeppelin/interfaces/IERC1271.sol";
diff --git a/test/utils/mocks/ERC20Mock.sol b/test/utils/mocks/ERC20Mock.sol
index b7d91b4f..f6aa89ef 100644
--- a/test/utils/mocks/ERC20Mock.sol
+++ b/test/utils/mocks/ERC20Mock.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: MIT
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 import {ERC20} from "openzeppelin/token/ERC20/ERC20.sol";
 
diff --git a/test/utils/mocks/EtherReceiver.sol b/test/utils/mocks/EtherReceiver.sol
index c9dae227..2740fae4 100644
--- a/test/utils/mocks/EtherReceiver.sol
+++ b/test/utils/mocks/EtherReceiver.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: MIT
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 /**
  * @title EtherReceiver
diff --git a/test/utils/mocks/MockCallee.sol b/test/utils/mocks/MockCallee.sol
index 129883c7..8a9765a2 100644
--- a/test/utils/mocks/MockCallee.sol
+++ b/test/utils/mocks/MockCallee.sol
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: MIT
-pragma solidity ^0.8.23;
+pragma solidity ^0.8.24;
 
 /**
  * @dev Error that occurs when a method reverts.