{"assessments":[],"deployments":[],"fuzz":[],"identity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"interpretation":"Records acceptance and evidence. Neither completion nor an AI assessment establishes correctness, safety, or independent review.","jobId":"f64613df-3cf0-474d-ae55-cee34ff496ca","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"2b9447c7c9d53f9999acb3b4079a780a19f903290836196ef79f907b5ea4691e","dependsOn":["audit_imported_code"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"2d7d84a1a9972f1497e5bc68a704cbf42294d08c62d2868f102ffe3b909b9b51","skillId":"adapt-contract-project","tools":[]},"key":"adapt_contract_project","kind":"code","role":"implement","skillHash":"2d7d84a1a9972f1497e5bc68a704cbf42294d08c62d2868f102ffe3b909b9b51","skillId":"adapt-contract-project","state":"accepted"},{"acceptedSubmissionHash":"96175e8ac0eb0adee14a270c0e55dd39475dac442cc850e416bd0d23e3041e01","dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_economics","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"0c330438d4f5a2d24970eef778424e0934d66c7c1d628529d588ad118f7190b8","dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_flow","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"af442875b62536d3def988a32d89ac1ce021f39a22d7857eaa66e175504ddbd3","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"9897597976b0e72440db7ca402d225aea20f3d37205ba53e7df2400ff80f29cc","skillId":"audit-imported-code","tools":[]},"key":"audit_imported_code","kind":"code","role":"review","skillHash":"9897597976b0e72440db7ca402d225aea20f3d37205ba53e7df2400ff80f29cc","skillId":"audit-imported-code","state":"accepted"},{"acceptedSubmissionHash":"670c32f3235a9775a32cd97798ecf70ec71abdb27eb2f076d90e024bdf7f54dd","dependsOn":["adapt_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"af7077e7006d35b265ddf62961f9d627c422c32eeec5bf348c49fcb56c10566f","dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_math","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"72d2af2c00b8529b849a234b7e2cb07bbca8b47b3bb098cac0b4df654a386688","dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_permissions","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"375ba7171c4ff5a047015db07e4ca04ee57fbba83821c72032ccddf152dac8e0","dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"b368536cbc7cfff157d172432def564c80aa7a3832e32253cbb64188214878d7","dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"4c76766b00591dfe982fe85d3de589fdb2f810e5137c301155d1c5e36a1d3b23","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"4c76766b00591dfe982fe85d3de589fdb2f810e5137c301155d1c5e36a1d3b23","skillId":"write-foundry-tests","state":"accepted"}],"objective":"Continue from the delivered OG Club repo identity-md-launches/launch-2382-continue-delivered-og-club at commit 20430cbddd7e849fadf64e07f0173eccc8f6f747 and launch it on ETHEREUM MAINNET (chain 1). It has been tested end to end on Sepolia with the live game (mint by Pepe, room upgrades, permanent floor and wall pieces, raffles). Keep every application's behaviour and ABI as it is, except the two small fixes below. Do not deploy any mock.\n \nAPPLICATIONS TO DEPLOY ON MAINNET (constructor-only, in dependency order)\n1. OGClubFurniture(owner, royaltyReceiver)\n2. OGClubFarmVault(OG token, owner)\n3. OGClubStaking(OG token, vault, owner, pointsPerTokenDay = 1000000000000000000)\n4. OGClubRaffle(staking, furniture, owner, raffleNotice = 604800)\n5. OGClubClubs(OG token, vault, price = 100000000000000000000000, furniture, owner, royaltyReceiver, Swarm Pepes, delegate registry, 200000000000000000000000, 400000000000000000000000, 800000000000000000000000)\n \nMAINNET INPUTS (use exactly these; do not deploy MockOG or MockSwarmPepe)\n- OG token (existing ERC-20, 18 decimals): 0xce7eb1ad9e2e1c784ea05f7ea4a0fe625923d10a\n- Swarm Pepes (existing ERC-721): 0x999ce0CE8C5f7661e0c74a568FfE27CEB9177bDB\n- delegate.xyz v2 registry: 0x00000000000000447e69651d841bD8D104Bed493\n- owner and royalty receiver of every contract: $owner (the job creator's wallet, as in the Sepolia launch.json). Ownership will later move to a Safe through Ownable2Step (transferOwnership, then acceptOwnership from the Safe); document that step in the README and keep it working for all five contracts.\nUpdate launch.json for mainnet: five applications, these values, MockOG and MockSwarmPepe removed, notes describing the owner handoff below.\n \nFIX 1 (judge low: constructor vault sentinels)\nOGClubClubs' constructor must also reject vault == pepes, and vault == delegates when delegates is nonzero (same UnexpectedTokenDebit error as the existing token/furniture/burn checks). Add both cases to the constructor rejection tests.\n \nFIX 2 (judge low: pending placement reinterpreted after a footprint edit)\nMake a footprint final once set: setFootprint reverts (FootprintLocked) for an id whose footprint is already set, whether or not it has been placed. This removes the race where an owner edit changes a pending placement's size or floor/wall kind, without changing the placement data format. Also add an owner-only batch setter setFootprints(uint256[] ids, uint8[] w, uint8[] h, bool[] wall) with the same per-item rules (lengths must match, all-or-nothing), so the owner can set the whole catalogue in one transaction. Keep footprintOf and the FootprintSet event unchanged. Update tests: a second setFootprint on the same id reverts; a pending placement keeps its kind and size; the batch setter's validation and atomicity.\n \nDO NOT CHANGE (the live game depends on these exactly)\n- mintClub(uint256 pepeId), clubsMinted(uint256), upgradeClub(uint256), upgradePrice(uint256), levelOf(uint256), piecesOf(uint256) returning Piece{furnitureId, x, y, rot, wall}, footprintOf(uint256), hasDesign, wallTaken, tileTaken, pepes(), delegates(), price(), token(), vault(), furniture(), saleOpen(), tokenURI = baseURI + id + \".json\".\n- Placement data abi.encode(clubId, uint8 x, uint8 y, uint8 rot); wall pieces use (start along wall, 0, side).\n- Floor masks, wall lengths (side 0: 10,14,14,16; side 1: 10,10,16,16), door rules, one of each design per club, MAX_PIECES 285, the 50/50 burn/vault split, every custom error name and selector.\n- Raffle, staking, vault and furniture behaviour, including the 7-day minter/spender delay after the first grant.\n \nOWNER HANDOFF (the factory cannot do these; document them in the notes and README; $owner does them after deployment, in this order)\n1. furniture.grantMinter(raffle) and staking.grantSpender(raffle) as each contract's FIRST grant.\n2. furniture.setBaseURI(\"https://world.ogclub.online/nft/\") and clubs.setBaseURI(\"https://world.ogclub.online/club/\").\n3. clubs.setFootprints with this catalogue ([id, w, h, wall]):\n[[1,1,1,0],[2,1,1,0],[3,2,1,0],[4,1,1,0],[5,2,2,0],[6,1,1,0],[7,1,1,0],[8,1,1,0],[9,1,1,0],[10,1,1,0],[11,1,1,0],[12,2,1,0],[13,1,1,0],[14,1,1,0],[15,1,1,0],[16,1,1,0],[17,1,1,0],[18,2,1,0],[19,1,1,0],[20,2,1,0],[21,1,1,0],[22,1,1,0],[23,2,1,1],[24,1,1,0]]\n   Print this exact calldata (and the grant/URI calldata) in the deploy script output and in the README so the owner can send it from a wallet or a Safe.\n4. clubs.setSaleOpen(true) when the launch is announced.\n \nVERIFY\nforge build, forge test (all suites), forge fmt --check, the Python manifest tests, and a constructor-only rehearsal of the five mainnet applications. Verify every contract's source on Etherscan. Report all five deployed addresses.","parentJobId":null,"planHash":"4d86889271e1cb1ce13a5bf3aec758b2ebd7ee00c44865cc495c4c64316ef903","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"f64613df-3cf0-474d-ae55-cee34ff496ca","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2398-continue-delivered-og-club"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51013","feedbackHash":"b6c273121cd33682c2520fcf64492d6e536f11edaf6897810b15ecbe37e1b1b5","nodeKey":"adapt_contract_project","submissionHash":"2b9447c7c9d53f9999acb3b4079a780a19f903290836196ef79f907b5ea4691e","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"50985","feedbackHash":"c78c3f569c1965101d1e61872eb56914fd36a8a5f31d4f079fb65d4517715da6","nodeKey":"audit_economics","submissionHash":"96175e8ac0eb0adee14a270c0e55dd39475dac442cc850e416bd0d23e3041e01","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51346","feedbackHash":"d45bc130030a8f24fc86ce1bd9168bac6a330ac0607ff67ea6802a4f874c772a","nodeKey":"audit_flow","submissionHash":"0c330438d4f5a2d24970eef778424e0934d66c7c1d628529d588ad118f7190b8","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51419","feedbackHash":"8625e9a7d78afd923e2ca58c61546424156b9e54821fc7ae3ff356a3dd30dcca","nodeKey":"audit_imported_code","submissionHash":"af442875b62536d3def988a32d89ac1ce021f39a22d7857eaa66e175504ddbd3","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"50939","feedbackHash":"b5b43a9643a83a6a436175461b07fe530d43fcae7ca460e81f21822d758dc4a6","nodeKey":"audit_judge","submissionHash":"670c32f3235a9775a32cd97798ecf70ec71abdb27eb2f076d90e024bdf7f54dd","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52599","feedbackHash":"03919eacf143f2cde9b24f22760b0775f4455d1364dd2b527245b587d62c9a14","nodeKey":"audit_math","submissionHash":"af7077e7006d35b265ddf62961f9d627c422c32eeec5bf348c49fcb56c10566f","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52603","feedbackHash":"eb651185064bc66ea0258933c300f0b57dd8f2f10152f4e6b8eb0d92915eebc9","nodeKey":"audit_permissions","submissionHash":"72d2af2c00b8529b849a234b7e2cb07bbca8b47b3bb098cac0b4df654a386688","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52179","feedbackHash":"7e3554cdf4dbbf87b7068d843b9367d7f966d7ab07d28f1a4b283f5db5df7ed6","nodeKey":"manifest","submissionHash":"375ba7171c4ff5a047015db07e4ca04ee57fbba83821c72032ccddf152dac8e0","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"50976","feedbackHash":"6a8f4534ba9a753feba0cddac2867a6fca09574560638c77dece80ac174d96db","nodeKey":"write_foundry_tests","submissionHash":"b368536cbc7cfff157d172432def564c80aa7a3832e32253cbb64188214878d7","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"54a303070fb6687fe0574cf7461808b82d0ea3ef94ea53624f6106338c5c7c69","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"78d8eb9b16352a18","findings":[],"hash":"0c330438d4f5a2d24970eef778424e0934d66c7c1d628529d588ad118f7190b8","nodeId":"d3761f7d-05b5-4210-a630-d4440c901389","outcome":"completed","summary":"Review complete. The findings file holds an empty findings list and a full coverage record of 63 rows (all 59 listed entry points plus four invariants). The scratch tests are removed and the working tree is clean.\n\n**Result: no reproducible defect in my area** (Execution Trace, Periphery, First Principles). Everything I traced behaves as the brief specifies, including both requested fixes.\n\n**What I verified, beyond reading**\n\n- Built the project and ran every suite locally: 259 unit and fuzz tests plus 14 invariant tests pass, `forge fmt --check` is clean, and the 10 Python manifest tests pass.\n- Fork-tested the five contracts against the live mainnet dependencies. The real OG token is a 2.2 KB plain ERC-20 with 18 decimals and no pause, blacklist or proxy, so the 50/50 burn and vault split and the receipt checks succeed. A real Swarm Pepe holder minted and upgraded a club, a delegate registered through the real delegate.xyz v2 registry minted on the holder's behalf, and staking accrued and exited correctly.\n- Probed the edges I traced by hand: mixed-wallet `claimTo` reverts, a single-win redirect into the Clubs contract reverts without consuming the win, multi-id furniture batches into Clubs are refused while a single-id batch follows the placement rules, and 1 wei stakes accrue and exit as designed.\n- Confirmed Fix 1 (vault equal to Pepes or registry is rejected) and Fix 2 (footprints final once set, atomic batch setter) are implemented and tested, and that the manifest lists exactly the five applications with static mainnet addresses, `$owner`, no mocks, and notes under the 4,000 character limit.\n\n**Periphery checked**: the RLP header parser only accepts canonical encodings (my hand-built non-canonical header was rejected), and the keyed Feistel permutation is a bijection onto the ticket and prize ranges.\n\n**Not reached**: statistical uniformity of the permutation and header parsing under a future header format are covered only by the existing fixture and fuzz tests, not by independent proofs. The one-bit proposer bias on the draw seed and the permissionless prize push to rejecting receivers are documented design limits, not defects, so I did not report them.","treeHash":null,"usage":{"cachedInputTokens":1876319,"inputTokens":514,"model":"claude-fable-5-1","outputTokens":41091,"runtime":"claude","turns":38,"wallClockMs":806333}},{"artifacts":[],"attempt":1,"bundleHash":"78d543fdd70e14ab2a4f3cb38d53362918eb94a073de17f550e879d88dbbcfa8","device":"84a29c6575331b77","findings":[],"hash":"2b9447c7c9d53f9999acb3b4079a780a19f903290836196ef79f907b5ea4691e","nodeId":"92576691-ce83-4173-bcaa-ad0e7427e912","outcome":"completed","summary":"Implemented both fixes, the reproduced staking constructor guard, and the five-application mainnet manifest. Added exact setup calldata, Safe handoff documentation, and ADAPTATION.md.\n\nValidation passed: `forge build`, all 273 Solidity tests with the supplied seed, 10 Python tests, formatting, and the five-contract constructor rehearsal.\n\nLive deployment and Etherscan verification remain launch-service steps. No transactions were broadcast; confirmed deployed addresses are not yet available.","treeHash":"84bf8f78d0f6009c04f17040867a612b5245ed72","usage":{"cachedInputTokens":2768000,"inputTokens":144875,"model":"gpt-6-astra","outputTokens":34735,"runtime":"codex","turns":8,"wallClockMs":857251}},{"artifacts":[],"attempt":1,"bundleHash":"cb42ef6d6422279c0803e41a04b23f6bc55feb0de02f944f56a11b501ee10fdc","device":"02f22d6f13810ca8","findings":[],"hash":"375ba7171c4ff5a047015db07e4ca04ee57fbba83821c72032ccddf152dac8e0","nodeId":"fb4156e1-e12a-4614-a569-596560db8919","outcome":"completed","summary":"The mainnet launch.json is complete and verified. No file changes were needed: the working tree at the pinned commit already carries the correct manifest, and the tree is clean.\n\n**What the manifest contains**\n\n- Five applications in constructor dependency order: OGClubFurniture, OGClubFarmVault, OGClubStaking, OGClubRaffle, OGClubClubs.\n- Argument counts match each constructor's parameter list and declaration order, including the eleven-argument clubs constructor.\n- Owner and royalty receiver on every contract are $owner. No msg.sender or factory ownership anywhere.\n- Mainnet inputs are the existing OG token, Swarm Pepes and delegate.xyz v2 registry addresses from the brief. No MockOG or MockSwarmPepe is listed.\n- Prices, points per token day and the raffle notice are the exact values from the brief.\n- Only the keys kind, contracts and notes are present. The notes run to about 3,100 characters and document the four owner handoff steps in order, the footprint catalogue, and the Ownable2Step transfer to a Safe for all five contracts.\n\n**Verification run on this machine**\n\n- forge build succeeded.\n- forge test with the verifier's fuzz seed: 273 tests across 42 suites passed, 0 failed.\n- forge fmt --check passed.\n- A scratch rehearsal deployed all five contracts on an empty chain with chain id 1 using the manifest's exact arguments, confirmed owner, vault, pepes, delegates and price on each, and confirmed the clubs runtime fits the size limit. The scratch test was removed afterward.\n- The protected harness itself could not be run locally because it needs verifier-supplied environment values and a floor directory not in this tree. The scratch rehearsal covers the same constructor path.\n\n**Not done here, by design**\n\nEtherscan verification and the five deployed addresses come from the launch service after deployment. The manifest step writes only launch.json and claims no live deployment.","treeHash":"84bf8f78d0f6009c04f17040867a612b5245ed72","usage":{"cachedInputTokens":257303,"inputTokens":194,"model":"claude-fable-5-1","outputTokens":4382,"runtime":"claude","turns":7,"wallClockMs":316896}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"72b617d4b615473a","findings":[],"hash":"670c32f3235a9775a32cd97798ecf70ec71abdb27eb2f076d90e024bdf7f54dd","nodeId":"39eeda45-2003-4132-b046-394e335da22b","outcome":"completed","summary":"I found no defects I could reproduce. `.imd-findings.json` holds `{\"findings\":[]}` and a coverage record with 60 rows: all 58 listed entry points marked `holds`, each with a one-line reason, plus two invariant rows. I changed no tracked files. The Python tests left `__pycache__` folders behind and I deleted them; `git status` is clean.\n\n**What I ran**\n- **Build and tests:** `forge build` passes, and `forge test` passes 279 of 279 tests across 44 suites. `forge fmt --check` passes, and the 10 Python manifest tests pass (run with `unittest`, since pytest isn't installed).\n- **Rehearsal:** `forge script script/DeployMainnet.s.sol:DeployMainnet --chain-id 1` deploys all five contracts locally using only constructors and prints the handoff. The constructors make no calls to other contracts, so they would also run on an empty chain.\n- **Calldata:** I re-encoded the README's calls with `cast` and compared them byte for byte. Both `setBaseURI` calls, `setSaleOpen(true)` and the 3,332-byte `setFootprints` call all match. The catalogue in `script/club-footprints.json` and in `DeployMainnet.catalogue()` matches the brief exactly. The grant selectors `0x261707fa` and `0x5a4b6198` are correct.\n- **Size:** `OGClubClubs`, the largest contract, is 16,089 bytes deployed and 17,844 bytes of creation code, well under both limits.\n\n**The two fixes**\n- **Fix 1:** At `src/OGClubClubs.sol:133-139`, the constructor now also rejects `vault == pepes`, and `vault == delegates` when `delegates` is nonzero, with `UnexpectedTokenDebit`. Tests for both cases are at `test/ClubsReview.t.sol:625-628`.\n- **Fix 2:** `_setFootprint` reverts with `FootprintLocked` whenever the footprint is already set, placed or not. `setFootprints` is owner-only, rejects mismatched lengths with `BadFootprint`, applies the same rules to each item, and rolls back the whole batch on any failure. A duplicate id inside one batch reverts too. `footprintOf`, the `FootprintSet` event and the placement data format are unchanged. Tests in `test/ClubsFootprints.t.sol` cover a second set on the same id, pending floor and wall placements keeping their size and kind, and the batch rules.\n\n**`launch.json`**\n- It has only the keys `kind`, `contracts` and `notes`, and lists five applications with no mocks.\n- The arguments follow each constructor's declaration order and use the brief's addresses and values, with `$owner` for every owner and royalty receiver.\n- The notes are 3,109 characters and describe the ordered owner handoff and the later Safe transfer.\n\n**Leads I dropped**\n- **Specialists:** all four reported no findings, so there was nothing to merge.\n- **Static analysis:** none of the slither or aderyn leads reproduced:\n  - \"weak PRNG\" is ordinary modulo arithmetic.\n  - The reentrancy warnings are covered by `nonReentrant` guards and balance checks after each transfer, against the standard OG token.\n  - The flagged local variables start at zero on purpose.\n  - The \"storage array edited with memory\" warning points at a read-only view.\n  - The `uint48` casts are bounded by `MAX_TICKETS`.\n- **Unrequested staking change:** the staking constructor now also rejects a vault equal to the token. That goes beyond the two requested fixes. It only refuses an invalid setup and leaves staking behaviour unchanged, and `ADAPTATION.md` records it as an earlier reproduced finding, so I didn't report it.\n\n**Not done here**\n- Etherscan source verification and the five live mainnet addresses can't be produced by a review; they come from the launch service after deployment. The README says so and gives `forge verify-contract` commands with the correct constructor arguments for each contract.\n\nA clean review is not proof the code has no defects.","treeHash":null,"usage":{"cachedInputTokens":1339041,"inputTokens":32,"model":"claude-opus-5-5","outputTokens":12432,"runtime":"claude","turns":18,"wallClockMs":269565}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"7e64d4917fa814e6","findings":[],"hash":"72d2af2c00b8529b849a234b7e2cb07bbca8b47b3bb098cac0b4df654a386688","nodeId":"22239c35-9a51-4266-b102-b0ac6853b96b","outcome":"completed","summary":"The review is complete and the tree is clean apart from the findings file.\n\n**Outcome: no reproducible defects in the Access Control, Trust Gap or Asymmetry area.** `.imd-findings.json` holds an empty findings list and 63 coverage rows, one for each of the 59 listed entry points plus four invariants, every row marked `holds` with a reason.\n\n**What I verified**\n\n- **Permission map.** Every owner-only setter on all five contracts is guarded, no storage variable has a weaker second writer, and no constructor uses msg.sender or tx.origin for ownership. The only permissionless writers of role state are the two activate functions, which need an owner-made proposal inside its 7 to 14 day window. There is no path to a minter or spender role that skips the bootstrap-or-delay rule.\n- **Asymmetry pairs.** grant/activate/cancel/revoke mirror exactly between Furniture and Staking. setFootprint and setFootprints share one private setter, so the batch has identical per-item rules and is all-or-nothing. claim and claimTo share one consume path, and claimTo checks msg.sender against every wallet group. Vault claim and releaseSeason use complementary boundary checks at opensAt plus 90 days. commitDraw retargeting is only possible once draw is already impossible, so the two never overlap.\n- **Trust gaps.** The raffle, as privileged minter and spender, only spends msg.sender's points and only mints owner-defined prize ids to the entry wallet or the wallet's own redirect. Approved club operators and furniture operators gain only powers weaker than the transfer right they already hold, matching the README.\n- **Fix 1 and Fix 2.** Both constructor sentinels are present and tested. Footprints are final once set, and the legacy locked flag and footprintOf ABI are unchanged.\n- **Deliverable consistency.** launch.json has only the schema keys, five unique names, correct argument counts and the brief's mainnet addresses, with notes at 3,109 characters. The README selectors and the 3,332 byte footprint calldata decode to the exact 24-entry catalogue.\n- **Verify list.** forge build, all 273 Foundry tests, forge fmt --check, the ten Python tests under unittest, and the offline five-contract rehearsal all pass. On a mainnet fork, OG transfers debit and credit exactly with 18 decimals, Swarm Pepe reports ERC-721, and the delegate registry has code.\n\n**Not covered.** pytest is not installed, so the Python suites ran through unittest instead. Etherscan source verification and reporting deployed addresses need a live deployment that does not exist yet. Economic and randomness analysis beyond the permission lens was left to the other specialists.","treeHash":null,"usage":{"cachedInputTokens":1875134,"inputTokens":482,"model":"claude-fable-5-1","outputTokens":38057,"runtime":"claude","turns":42,"wallClockMs":821317}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"410247426ec5a6df","findings":[],"hash":"96175e8ac0eb0adee14a270c0e55dd39475dac442cc850e416bd0d23e3041e01","nodeId":"cdaa3a9c-3fa9-4fe3-a454-d7b1a716917b","outcome":"completed","summary":"The review is complete. The findings file at `.imd-findings.json` holds an empty findings list and a 64-row coverage record (all 59 listed entry points plus five invariants). The untracked files git shows are the sandbox's device-node placeholders, not files I created.\n\n**Result: no reproducible defect in the economics area.** Every entry point was traced against the Economic Security, Invariant and Flow Gap guides, and the value flows behave as specified.\n\nWhat I verified, beyond reading the code:\n\n- **Live dependencies on chain 1.** The OG token at the manifest address is a plain fixed-balance ERC-20 (verified source via Sourcify, decimals 18, supply 1e9). It has no fee, blacklist, hook or rebasing, so the exact-receipt checks in the club payment path and the staking and vault balance deltas cannot be tripped by the token. Swarm Pepes answers `ownerOf`, and the delegate registry has code.\n- **Owner handoff calldata.** The README and deploy script bytes decode to exactly the brief's 24-entry catalogue (id 23 is the only wall piece), the two base URIs and the right selectors. This matters because FIX 2 makes a wrong catalogue irreversible.\n- **Conservation invariants.** Club payments move floor(p/2) to the dead address and the rest to the vault with before/after receipts; staking balance equals total staked and points change only by time-weighted accrual or spends; the vault's balance always covers its reservations; points spent equal tickets times price, and prizes mint exactly once per consumed win bit. All 13 invariant suites and the 259 unit tests pass locally.\n- **Flow seams.** Placement into clubs cannot strand furniture (mint-into-clubs and multi-element batches revert), floor masks and wall lengths are supersets across levels so upgrades never invalidate pieces, raffle entries roll back fully on a failed spend, and claims stay retryable after receiver failures.\n\n**Trust assumptions, not defects**, already documented in the README: the withhold-until-expiry re-commit bias of the future-block randomness, validator influence on prevRandao, a spender's power over any account's points, the irreversible one-step renounce, and the immediate first grant consuming each contract's bootstrap.\n\n**Not reached:** statistical uniformity of the Feistel permutation and a quantified proposer-lookahead bias. Both are noted as accepted limitations in the README.","treeHash":null,"usage":{"cachedInputTokens":1245652,"inputTokens":354,"model":"claude-fable-5-1","outputTokens":37346,"runtime":"claude","turns":35,"wallClockMs":703441}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"fea57d3e9d0ca7bf","findings":[{"citation":"resolved","description":"The manifest in the tree is the Sepolia recipe: it lists seven applications, deploys MockOG (unrestricted public mint, 1e12 tokens to $owner) and MockSwarmPepe (anyone mints any pepeId, no owner), wires OGClubFarmVault, OGClubStaking and OGClubClubs to $contract:MockOG, wires OGClubClubs.pepes to $contract:MockSwarmPepe, and passes raffleNotice \"0\" to OGClubRaffle. Its notes say 'Sepolia only'. Deployed as-is on chain 1 the club sale is free for anyone and the vault, staking points and raffles are denominated in a worthless mock. The brief requires five applications on the existing OG token 0xce7eb1ad9e2e1c784ea05f7ea4a0fe625923d10a (verified on Sourcify as a fixed-supply, fee-free, ownerless ERC-20 with 18 decimals, so it is compatible with _pay, stake/unstake and the vault), Swarm Pepes 0x999ce0CE8C5f7661e0c74a568FfE27CEB9177bDB (ERC-721, has code), delegate registry 0x00000000000000447e69651d841bD8D104Bed493 (has code) and raffleNotice 604800. test/test_launch.py asserts the Sepolia argument list verbatim and the phrase 'MockOG is Sepolia-only', so it must be updated with the manifest. The notes also describe setFootprint and 'Footprints lock globally after first placement', which FIX 2 changes (footprints final once set, batch setFootprints). script/DeployClubs.s.sol DeployClubsMainnet deploys only OGClubClubs and reads DEPLOYER_KEY; it prints per-id setFootprint calldata, not the batch call the brief asks the README to carry.","line":5,"path":"launch.json","reproduction":"State: contracts deployed exactly as launch.json lists them, owner has called clubs.setSaleOpen(true). Attacker mallory (no OG, no Pepe) calls MockOG.mint(mallory, 100000e18); MockOG.approve(clubs, 100000e18); MockSwarmPepe.mint(mallory, 777); clubs.mintClub(777). Expected on mainnet: mint fails for lack of a Swarm Pepe and real OG. Actual: clubs.ownerOf(777) == mallory and the vault receives 50000e18 mock tokens. Reproduced by test_manifestMocks_anyoneMintsClubForFree in test/scratch/ReviewRepro.t.sol. Also: OGClubRaffle.raffleNotice() == 0 so createRaffle(opensAt = block.timestamp, ...) is accepted with no notice, where the brief requires 604800.","severity":"medium","snippet":"      \"contract\": \"MockOG\",","title":"Delivered launch.json deploys public-mint mocks as the payment token and Pepe collection, with raffleNotice 0"},{"citation":"resolved","description":"The constructor rejects a vault equal to the predicted self address, the burn sink, the token and the furniture with UnexpectedTokenDebit, but not a vault equal to the Swarm Pepes collection or the delegate registry. Both are external contracts that cannot spend ERC-20 balances, so half of every mint and upgrade payment would be irrecoverable if the manifest ever swapped the two address arguments. The requester asked for both cases to be added with the same error and covered by the constructor rejection tests; none of the existing constructor tests (test/OGClubClubs.t.sol, test/ClubsDeployment.t.sol) exercise them.","line":134,"path":"src/OGClubClubs.sol","reproduction":"new OGClubClubs(token, address(pepes), 100000e18, furniture, owner, owner, pepes, delegates, 200000e18, 400000e18, 800000e18) and new OGClubClubs(token, 0x00000000000000447e69651d841bD8D104Bed493, 100000e18, furniture, owner, owner, pepes, IDelegateRegistry(0x00000000000000447e69651d841bD8D104Bed493), ...). Expected: revert UnexpectedTokenDebit(). Actual: both deploy and vault() returns the Pepe collection / registry address; a later mintClub sends 50000e18 OG to that contract permanently. Reproduced by test_fix1_constructorAcceptsVaultEqualToPepes and test_fix1_constructorAcceptsVaultEqualToDelegates in test/scratch/ReviewRepro.t.sol.","severity":"low","snippet":"            vault_ == address(this) || vault_ == BURN_ADDRESS || vault_ == address(token_)","title":"OGClubClubs constructor accepts vault == pepes and vault == delegates (FIX 1)"},{"citation":"resolved","description":"setFootprint only refuses ids that have already been placed somewhere (locked). Until the first placement of an id, the owner can change w, h and the wall flag at will. A holder's safeTransferFrom carrying abi.encode(clubId, x, y, rot) is interpreted against whatever footprint is current when it executes, not when it was signed. If the owner's edit lands first in the same block, the placement either reverts (OutOfRoom / TileTaken / BlocksDoor) or, worse, succeeds with a different meaning: a floor piece at (x, 0) with rotation 1 becomes a wall piece at position x on side 1, permanently and non-removably. There is no batch setter, so loading the 24-item catalogue takes 24 transactions during which this window is open. The existing suite asserts the opposite behaviour ('wall flag can flip before lock', test/ClubsReview.t.sol:458), so tests must be updated with the fix: second setFootprint on a set id reverts FootprintLocked; a pending placement keeps its kind and size; setFootprints length/validation/atomicity.","line":348,"path":"src/OGClubClubs.sol","reproduction":"Owner: setFootprint(5, 1, 1, false). Alice owns club 1 and one furniture #5 and broadcasts furniture.safeTransferFrom(alice, clubs, 5, 1, abi.encode(uint256(1), uint8(3), uint8(0), uint8(1))) meaning floor tile (3,0), rotation 1. Owner's setFootprint(5, 1, 1, true) is mined first (no revert, footprint unplaced). Expected: the placement reverts FootprintLocked at the owner's step, or stores a floor piece at (3,0). Actual: piecesOf(1)[0].wall == true, wallTaken(1, 1, 3) == true and tileTaken(1, 3, 0) == false; the piece is now a side-1 wall piece forever. Second case: setFootprint(6, 2, 2, false), Alice sends a 2x2 placement at (8,8); owner setFootprint(6, 4, 4, false) lands first; Alice's transfer reverts OutOfRoom. Both reproduced by test_fix2_pendingFloorPlacementReinterpretedAsWall and test_fix2_pendingPlacementRevertsAfterSizeEdit in test/scratch/ReviewRepro.t.sol.","severity":"low","snippet":"        if (_footprints[id].locked) revert FootprintLocked();","title":"setFootprint can rewrite an unplaced footprint, so a pending placement is reinterpreted in size or floor/wall kind (FIX 2)"},{"citation":"resolved","description":"OGClubClubs rejects a vault equal to the token, the burn sink and its own address; OGClubStaking only rejects zero and itself. If the manifest's second and first arguments were ever swapped, or the OG token address pasted into the vault slot, the constructor runs on the empty factory chain without complaint and every unstake forwards its 1% fee to the token contract, which cannot spend it. The mainnet arguments in the brief are correct ($contract:OGClubFarmVault), so this is a deployment-guard gap rather than a live loss; it is listed because the requester asked for the same class of sentinel in OGClubClubs.","line":62,"path":"src/OGClubStaking.sol","reproduction":"new OGClubStaking(OG, address(OG), owner, 1e18) deploys. Alice stakes 1000e18 then unstake(1000e18). Expected: constructor revert InvalidAddress(). Actual: token.balanceOf(address(OG)) grows by 10e18 and Alice receives 990e18; the fee is unrecoverable. Reproduced by test_stakingAcceptsVaultEqualToToken_feeLost in test/scratch/ReviewRepro.t.sol.","severity":"low","snippet":"        if (address(token_) == address(0) || vault_ == address(0) || vault_ == address(this)) revert InvalidAddress();","title":"OGClubStaking constructor has no vault == token sentinel, so a misconfigured vault silently loses every unstake fee"},{"citation":"resolved","description":"Documented so the adapter and the final panel do not mistake intended powers for bypasses. OGClubFurniture: any address the owner grants (first grant immediate, later ones 7-day proposals activatable by anyone within a 7-day window) can mint unlimited furniture ids and quantities; owner sets baseURI until freezeMetadata, royalty receiver and up to 10%. OGClubStaking: owner grants spenders with the same bootstrap/delay; spenders can burn any account's points without consent (raffle.enter is the only intended spender); no owner withdrawal. OGClubFarmVault: owner chooses every Merkle root, so up to half the unreserved balance per 7 days can be directed to any accounts after a 3-day delay; no sweep. OGClubRaffle: owner defines pools, prices and prize ids; raffles cannot be cancelled once open and spent points are never refunded. OGClubClubs: owner toggles saleOpen, sets footprints (unplaced ids only today), baseURI until frozen, royalty up to 10%; no owner transfer, burn or free-mint path. All five use Ownable2Step; the Safe handoff (transferOwnership then acceptOwnership from the Safe) works unchanged on each. None of the contracts contains DELEGATECALL, CALLCODE, SELFDESTRUCT, a proxy or an initializer; the owner-only setters above are the brief's required handoff steps, not launch-forbidden initialization.","line":94,"path":"src/OGClubFurniture.sol","reproduction":"Call list, from $owner: furniture.grantMinter(x) then furniture.mintBatch from x mints arbitrary ids; staking.grantSpender(x) then staking.spendPoints(victim, pointsOf(victim)) from x drains points; vault.proposeSeason(root, total) with a root the owner built, then claim after 3 days. Each succeeds by design; expected and actual agree.","severity":"info","snippet":"    function mintBatch(address to, uint256[] calldata ids, uint256[] calldata amounts) external {","title":"Owner trust assumptions and post-deployment configuration the brief requires (not defects)"},{"citation":"resolved","description":"commitDraw fixes target = block.number + 3 and draw accepts the authenticated header of that block, using its mixHash as the seed. The proposer of the target block can withhold it to flip one bit of prevrandao (standard RANDAO bias, costs a block reward), and if nobody calls draw within 256 blocks anyone may commitDraw again for a fresh target, which lets a party able to censor draws for ~51 minutes choose between seeds. Both are acknowledged in the code comment and README and are acceptable for furniture prizes; recorded here so the final panel sees it was reviewed, not missed. The Feistel permutation itself is a bijection on [0, ticketsSold) and on [0, prizeCount), so each k yields a distinct ticket and a distinct prize position; duplicate claims are blocked by the _claimed bitmap.","line":202,"path":"src/OGClubRaffle.sol","reproduction":"Raffle closed, stranger calls commitDraw at block N (target N+3). If no draw(raffleId, header) is submitted through block N+259, commitDraw succeeds again at block N+260 and sets a new target, so the drawn winners differ from those blockhash(N+3) would have produced. Expected by design; no fix requested.","severity":"info","snippet":"    /// @dev Withholding all draws until expiry permits a new seed and selection bias; see README.","title":"Raffle seed is one block's prevrandao: the target proposer has one bit of bias and a 256-block draw blackout allows a re-roll"},{"citation":"resolved","description":"Read in full: src/OGClubClubs.sol, src/OGClubRaffle.sol, src/OGClubStaking.sol, src/OGClubFarmVault.sol, src/OGClubFurniture.sol, src/libraries/BlockHeader.sol, src/libraries/Permutation.sol, src/interfaces/IDelegateRegistry.sol, src/mocks/MockOG.sol, src/mocks/MockSwarmPepe.sol, script/Deploy.s.sol, script/DeployClubs.s.sol, launch.json, test/test_launch.py, test helpers and the setFootprint/FootprintLocked test sites. Checked over a public mainnet RPC: OG 0xce7eb1ad9e2e1c784ea05f7ea4a0fe625923d10a (1115-byte runtime, Sourcify full match, 18 decimals, 1e9 fixed supply, no fee/owner/pause/blacklist, reverts only on transfer to address(0)); Swarm Pepe 0x999ce0CE8C5f7661e0c74a568FfE27CEB9177bDB (has code, ERC-721 interface true, ownerOf(1) returns a holder); delegate registry 0x00000000000000447e69651d841bD8D104Bed493 (has code). Not read: the Swarm Pepe and registry source (only bytecode presence and interface probes), lib/openzeppelin-contracts beyond the inherited APIs. Verification run: forge build ok; forge test 246 unit/fuzz tests passed and 12 invariant tests passed; forge fmt --check clean; python3 test/test_launch.py 4 passed (against the Sepolia manifest). No loss-of-funds, reentrancy, access-control or accounting defect was found in the five applications; the pashov checklist passes on value flow (_pay exact-debit checks, CEI, nonReentrant), arithmetic (bounded factor < 2^144, mulDiv, ceilDiv fee, uint48/uint80 casts proven in range), access (every state-changing function enumerated: owner-only setters, minter/spender gates, msg.sender == furniture gate on onERC1155Received, permissionless commit/draw/claim by design), and randomness (above).","line":22,"path":"src/OGClubClubs.sol","reproduction":"Not a defect; coverage statement required by the acceptance criteria.","severity":"info","snippet":"contract OGClubClubs is ERC721Enumerable, ERC2981, IERC4906, ERC1155Holder, Ownable2Step, ReentrancyGuard {","title":"Review coverage: all five applications, both libraries, both mocks, scripts, manifest and tests read; mainnet dependencies reached"}],"hash":"af442875b62536d3def988a32d89ac1ce021f39a22d7857eaa66e175504ddbd3","nodeId":"0470d6e8-a946-4cdf-9c4b-8eb743fd8bef","outcome":"completed","summary":"The review is complete. The findings file is written, validated against the tree, and every reproduction runs green under test/scratch/ReviewRepro.t.sol.\n\n**Outcome:** no loss-of-funds, reentrancy, access-control or accounting defect in the five applications. The build, 246 unit and fuzz tests, 12 invariant tests, forge fmt and the Python manifest tests all pass as delivered. Seven entries are recorded in .imd-findings.json.\n\n**Findings**\n- **Medium, manifest.** launch.json is still the Sepolia recipe. It deploys MockOG and MockSwarmPepe, both public-mint, as the payment token and Pepe collection, and passes a zero raffle notice. On mainnet anyone would mint clubs for free. The Python test asserts that argument list verbatim, so it must change with the manifest.\n- **Low, FIX 1.** The OGClubClubs constructor accepts a vault equal to the Pepe collection or the delegate registry. Half of every payment would be stranded. Reproduced by deploying with those addresses.\n- **Low, FIX 2.** setFootprint only refuses placed ids, so an owner edit that lands before a holder's pending transfer changes its meaning. Reproduced: a floor placement at (3,0) rotation 1 becomes a permanent side-1 wall piece, and a size edit makes a valid 2x2 placement revert. The existing test at test/ClubsReview.t.sol:458 asserts the current behaviour and needs updating.\n- **Low.** OGClubStaking lacks a vault-equals-token sentinel. A swapped argument sends every unstake fee to the token contract.\n- **Info.** Owner trust assumptions across all five contracts, the acknowledged one-bit prevrandao bias with the 256-block re-roll window, and a coverage statement.\n\n**Coverage.** All five applications, both libraries, both mocks, both scripts, the manifest and the test sites were read in full. Over a public RPC, the mainnet OG token resolved to a Sourcify full match: fixed supply, 18 decimals, no fees, no owner, compatible with the exact-debit payment checks and staking. Swarm Pepes and the delegate registry have code and answer ERC-721 probes, but their source was not read. OpenZeppelin internals were trusted beyond the inherited interfaces.\n\n**Next for the adapter:** apply FIX 1 and FIX 2 with the batch setter, rewrite launch.json and test/test_launch.py for the five mainnet applications, and document the Safe handoff and setFootprints calldata in the README.","treeHash":null,"usage":{"cachedInputTokens":1267648,"inputTokens":418,"model":"claude-fable-5-1","outputTokens":35475,"runtime":"claude","turns":40,"wallClockMs":801912}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"a315ee4cb81c640c","findings":[],"hash":"af7077e7006d35b265ddf62961f9d627c422c32eeec5bf348c49fcb56c10566f","nodeId":"9b5791b1-8513-4d8a-8a7e-73a4a47811ee","outcome":"completed","summary":"Review complete. The findings file is written and validated, with no substantiated defects in the assigned area and a coverage row for every one of the 58 listed entry points plus five invariant rows.\n\n**What I checked, against the Math Precision, Boundary and Numerical Gap guides**\n\n- **Staking accrual arithmetic.** The denominator for 18 decimals is 8.64e22, which fits the 80-bit remainder slot. The two-slot accrual (mulDiv plus mulmod carry) is exact: a 1-wei stake earns exactly one point-wei after 86400 seconds, confirmed with a probe test. The unstake fee rounds up toward the vault, and the `amount > fee` guard prevents underflow. Intermediates cannot overflow with bounded time and rate.\n- **Club payments and geometry.** All four prices are even, so the burn and vault legs are equal. The placement mask's highest bit is 255, so no shift escapes the bitmap. I probed the level-1 floor, the level-3 L-shaped notch, level-4 corners, the door tiles, the side-1 door position, wall lengths per level, rotation swap, uint8-max coordinates and rotation values 4 and 255 with concrete inputs, and every case reverted with the specified error or succeeded as intended.\n- **Raffle counting.** Ticket, prize and wallet-cap values are bounded to 2^48 - 1 before every uint48 narrowing. The prize binary search stays in range because line ends are strictly increasing. The Feistel permutation is a bijection for every size from 1 to 70 by exhaustive probe, on top of the existing fuzz. The commit and draw windows meet at target + 256 without overlap.\n- **Vault budget.** Reserved can never exceed the balance because claims reduce both by the same amount and nothing else moves tokens out. Claim, cancel and release windows are disjoint at their boundaries.\n- **Live mainnet dependencies.** On a mainnet fork I confirmed the OG token has 18 decimals, is a minimal ERC-20 whose transfers to the dead address credit its balance (its `totalBurned` is only a counter), and that a full mint, upgrade, stake and unstake cycle succeeds against the real token, Swarm Pepes and delegate registry.\n- **Handoff calldata.** The README's URI, sale-open and 3,332-byte setFootprints calldata match cast's encoding of the catalogue byte for byte, and the launch.json numerics match the brief.\n\n**Not reached.** Nothing in my area was left unexamined. Access control, economics and ownership semantics outside the numeric lens were only read, not traced, and are recorded as holding only where no arithmetic touches them.\n\nThe scratch probe and fork test live under `test/scratch/` and are not part of the submission.","treeHash":null,"usage":{"cachedInputTokens":1515692,"inputTokens":450,"model":"claude-fable-5-1","outputTokens":43170,"runtime":"claude","turns":35,"wallClockMs":771428}},{"artifacts":[],"attempt":1,"bundleHash":"012f32c1ae91594e0da74ac237dcac7cd3120633fe6e182be81956c9d3b3b5f2","device":"a95efa5461cd9dc9","findings":[],"hash":"b368536cbc7cfff157d172432def564c80aa7a3832e32253cbb64188214878d7","nodeId":"219391fd-e003-4d70-b608-cba44dc58580","outcome":"completed","summary":"Added fuzz and invariant tests under `test/` covering batch atomicity, immutable footprints, queued placements, ownership handoffs, and furniture custody.\n\nValidation passed:\n\n- 279 Foundry tests with the required seed\n- 10 Python tests\n- `forge build` and `forge fmt --check`\n- Five-contract constructor rehearsal\n\nNo implementation or configuration files changed. Validation was local; no mainnet deployment was performed.","treeHash":"850cd7c7e0c9b01188658ecd604a2e0870e95969","usage":{"cachedInputTokens":2113792,"inputTokens":119475,"model":"gpt-6-astra","outputTokens":21769,"runtime":"codex","turns":7,"wallClockMs":663640}}],"verification":[{"checks":[{"durationMs":16072,"exitCode":0,"name":"build","output":"Compiling 108 files with Solc 0.8.26\nSolc 0.8.26 finished in 15.93s\nCompiler run successful!\n","passed":true},{"durationMs":39789,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 7 tests for test/OGClubClubs.t.sol:ClubsAdminTest\n[PASS] test_AllAdminFunctionsRequireOwner() (gas: 171202)\n[PASS] test_ConstructorRejectsEveryZeroValueAndStartsClosed() (gas: 16115)\n[PASS] test_MetadataFreezeIsPermanentButPlacementsContinue() (gas: 632156)\n[PASS] test_MissingTokensRevertInAllClubViews() (gas: 130959)\n[PASS] test_OwnerCannotMintFreeSeizeBurnOrWithdraw() (gas: 287595)\n[PASS] test_RoyaltyBoundsAndReceiver() (gas: 160927)\n[PASS] test_TwoStepOwnershipRetainsAllPermanentState() (gas: 477442)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 2.30ms (939.81µs CPU time)\n\nRan 6 tests for test/TokenFailureAtomicity.t.sol:TokenFailureAtomicityTest\n[PASS] test_FalseReturningPayoutPreservesEarlierClaimsAndAllReservations() (gas: 728445)\n[PASS] test_OneWeiExitDoesNotCallTheZeroNetRecipientTransfer() (gas: 294703)\n[PASS] test_PackedStakeOverflowRestoresTransferAndPendingPointState() (gas: 487274)\n[PASS] test_SecondUnstakeTransferFailureRestoresVaultFeeAndAccrualCheckpoint() (gas: 612686)\n[PASS] test_SenderSurchargeCannotConsumeAnotherSeasonsReservation() (gas: 1561673)\n[PASS] test_VaultAcceptsNoReturnTokensAndPaysOnlyTheProvenAccount() (gas: 644163)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 2.75ms (1.76ms CPU time)\n\nRan 7 tests for test/ClubsLaunch.t.sol:ClubsPepeTest\n[PASS] test_AuditMintEventPrecedesReceiverTransfer() (gas: 770245)\n[PASS] test_DelegatedWalletPaysAndReceivesAndRevocationAndTransferInvalidateDelegation() (gas: 1167527)\n[PASS] test_IdZeroAndMaxAreValidPepeIdsNoSequentialAllocation() (gas: 615789)\n[PASS] test_NewConstructorRejections() (gas: 241795)\n[PASS] test_NonexistentPepeAndNonHolderRevert() (gas: 188543)\n[PASS] test_OneClubPerPepeEverEvenAfterPepeAndClubTransfers() (gas: 245695)\n[PASS] test_ZeroRegistryDisablesDelegationButHolderWorks() (gas: 307121)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 2.81ms (1.33ms CPU time)\n\nRan 4 tests for test/ImportedAudit.t.sol:ImportedAuditTest\n[PASS] test_Audit07e7433_TargetExpiresAndCanBeReplacedButDrawnSeedIsFinal() (gas: 498289)\n[PASS] test_Audit1ecd3a7_AnyoneCanMintTestnetStakeAndBuyClubs() (gas: 810464)\n[PASS] test_Audit2fa7888_RaffleNeedsFirstGrantsWrongTargetConsumesBootstrap() (gas: 1384721)\n[PASS] test_Audit9dcac50_ClubsNowWorkWithoutRaffleBootstrapRoles() (gas: 553678)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 4.27ms (2.80ms CPU time)\n\nRan 9 tests for test/ClubsLaunch.t.sol:ClubsLevelsTest\n[PASS] test_ExpansionBoundariesEveryTileOfPieceAndOldTilesRemain() (gas: 2741095)\n[PASS] test_FloorDoorNeverOpensAtAnyLevel() (gas: 1274753)\n[PASS] test_FloorMasksExactlyMatchEveryCoordinateAndContainPreviousLevel() (gas: 359898)\n[PASS] test_NoReturnTokenUpgradesAndZeroBurnPriceOne() (gas: 912490)\n[PASS] test_OnlyClubHolderTokenApprovedOrOperatorCanUpgradeAndCallerPays() (gas: 767305)\n[PASS] test_UpgradeReceiptMutationsRevertEntirePaymentAndLevel() (gas: 1895525)\n[PASS] test_UpgradeReentrancyGuardAndTaxedTokenRejection() (gas: 2125761)\n[PASS] test_UpgradeShortAllowanceRollsBackBurnAndLevel() (gas: 191434)\n[PASS] test_UpgradesExactOddSplitsEventsAndPricesToMax() (gas: 698224)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 7.87ms (5.57ms CPU time)\n\nRan 6 tests for test/Gas.t.sol:GasTest\n[PASS] test_GasClaimOne() (gas: 954101)\nLogs:\n  Claim one win / fresh furniture wallet\n  Cancun call gas: 160885\n  New persistent slots: 4\n  EIP-8037 state gas: 391680\n  EIP-8037 storage-repriced call gas: 472565\nWarning: the following cheatcode(s) are deprecated and will be removed in future versions:\n  lastCallGas(): replaced by `lastFrameGas`\n\n[PASS] test_GasClaimTen() (gas: 2860761)\nLogs:\n  Claim ten distinct items / fresh furniture wallet\n  Cancun call gas: 816170\n  New persistent slots: 22\n  EIP-8037 state gas: 2154240\n  EIP-8037 storage-repriced call gas: 2530410\n\n[PASS] test_GasDraw() (gas: 418645)\nLogs:\n  Draw / 23-field synthetic header\n  Cancun call gas: 74312\n  New persistent slots: 1\n  EIP-8037 state gas: 97920\n  EIP-8037 storage-repriced call gas: 152232\n\n[PASS] test_GasEnter() (gas: 558676)\nLogs:\n  First entry / ten tickets / first points checkpoint\n  Cancun call gas: 155364\n  New persistent slots: 4\n  EIP-8037 state gas: 391680\n  EIP-8037 storage-repriced call gas: 467044\n\n[PASS] test_GasFirstStake() (gas: 200138)\nLogs:\n  First-ever stake / fresh staker\n  Cancun call gas: 120547\n  New persistent slots: 3\n  EIP-8037 state gas: 293760\n  EIP-8037 storage-repriced call gas: 354307\n\n[PASS] test_GasUnstake() (gas: 308132)\nLogs:\n  Partial unstake / first fee / first checkpoint\n  Cancun call gas: 110662\n  New persistent slots: 2\n  EIP-8037 state gas: 195840\n  EIP-8037 storage-repriced call gas: 266502\n\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 12.61ms (11.70ms CPU time)\n\nRan 13 tests for test/ClubsPlacement.t.sol:ClubsPlacementTest\n[PASS] test_BadAmountsAndBatchTransfersRejected() (gas: 264099)\n[PASS] test_ClubTokenApprovalAndApprovalForAllPermitOwnersOfFurnitureToPlace() (gas: 740772)\n[PASS] test_DirectAndFakeERC1155HooksRejected() (gas: 1158983)\n[PASS] test_FurnitureCannotLeaveForClubHolderOperatorOrContractOwner() (gas: 758633)\n[PASS] test_FurnitureOperatorCanPlaceFromClubHolder() (gas: 346998)\n[PASS] test_LevelOneAll98UsableTilesFillWithDistinctDesigns() (gas: 33635309)\n[PASS] test_MissingClubAndMalformedDataCannotLockFurniture() (gas: 743134)\n[PASS] test_NoFootprintBadFootprintsAndPerIdPermanentLock() (gas: 1327568)\n[PASS] test_OffGridRotationDoorAndOverlapRevertWithoutChangingAnything() (gas: 2659693)\n[PASS] test_RealFurnitureAllRotationsViewsAndEvents() (gas: 2071286)\n[PASS] test_StrangerCannotPlaceOwnFurnitureEvenIfCallerOwnsClub() (gas: 219715)\n[PASS] test_TransferCarriesLayoutAndRevokesOldHolderAndTokenApproval() (gas: 776468)\n[PASS] test_VendoredFurnitureSingletonBatchUsesSingleHookAndRecordsOnePiece() (gas: 203558)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 19.43ms (17.56ms CPU time)\n\nRan 1 test for test/ClubsReview.t.sol:ClubsReviewDesignTest\n[PASS] test_SecondCopyRevertsFloorAndWallOtherClubsUnaffectedAndSurvivesTransfer() (gas: 1730236)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.04ms (688.33µs CPU time)\n\nRan 10 tests for test/ClubsFootprints.t.sol:ClubsFootprintsTest\n[PASS] testFuzz_BatchFinalityAndAtomicity(uint256,uint8,uint8,bool) (runs: 256, μ: 145118, ~: 144114)\nLogs:\n  Bound result 1822\n  Bound result 3\n\n[PASS] test_BatchBadLastEntryRollsBackEarlierDefinitions() (gas: 1004091)\n[PASS] test_BatchDuplicateRollsBackAndCannotRewritePendingDefinition() (gas: 548076)\n[PASS] test_BatchOwnerOnlyIncludingEmptyAndEmptyOwnerBatchIsNoop() (gas: 143900)\n[PASS] test_BatchRejectsEveryLengthMismatchWithoutWrites() (gas: 523861)\n[PASS] test_BatchSetsAllEntriesEmitsUnchangedEventsAndLocksBothSetters() (gas: 580179)\n[PASS] test_DefinitionIsFinalBeforePlacementIncludingIdenticalAndInvalidReset() (gas: 158989)\n[PASS] test_PendingEdgePlacementKeepsOriginalSize() (gas: 445264)\n[PASS] test_PendingFloorPlacementKeepsKindSizeAndRotation() (gas: 449098)\n[PASS] test_PendingWallPlacementKeepsWidthAndSide() (gas: 435657)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 24.83ms (23.56ms CPU time)\n\nRan 7 tests for test/RoleLifecycle.t.sol:RoleLifecycleTest\n[PASS] testFuzz_ExpiredProposalsCannotActivateOrCancel(uint32) (runs: 256, μ: 558632, ~: 558520)\nLogs:\n  Bound result 5\n\n[PASS] test_ActivationAtMaturityAndLastSecond() (gas: 512088)\n[PASS] test_CancelRevokeRegrantAndReproposal() (gas: 800981)\n[PASS] test_InvalidGrantDoesNotSpendBootstrapAndZeroAddressesRejected() (gas: 147761)\n[PASS] test_OnlyOwnerProposesCancelsAndRevokes() (gas: 406632)\n[PASS] test_OwnershipHandoverDoesNotResetBootstrapAndRenunciationDoesNotBlockActivation() (gas: 568368)\n[PASS] test_SpenderLastSecondActivates() (gas: 378503)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 35.75ms (34.97ms CPU time)\n\nRan 7 tests for test/ClubsLaunch.t.sol:ClubsWallsTest\n[PASS] test_BothWallsAllWidthsDoorAndIndependentFloor() (gas: 4917697)\n[PASS] test_ClubFullReachableAt285DistinctDesignsWithoutStorageCheats() (gas: 90073666)\n[PASS] test_OneOfEachFloorAndWallPerClubSurvivesTransfer() (gas: 1519153)\n[PASS] test_WallDoorAtEveryLevel() (gas: 1153763)\n[PASS] test_WallDoorOverlapSideValidationAndFootprintFlagLock() (gas: 1424493)\n[PASS] test_WallEventsAndMissingAndOutOfBoundsViews() (gas: 402739)\n[PASS] test_WallLengthsAtEveryLevelAndExtensionAfterUpgrade() (gas: 6477944)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 50.78ms (56.09ms CPU time)\n\nRan 10 tests for test/BlockHeader.t.sol:BlockHeaderTest\n[PASS] testFuzz_AnyMalformedInputRevertsWithCustomError(bytes) (runs: 256, μ: 32435, ~: 32040)\n[PASS] testFuzz_ArbitraryTrailingFieldCount(uint8,uint256,bytes32) (runs: 256, μ: 92720, ~: 81054)\nLogs:\n  Bound result 3\n\n[PASS] test_MalformedAuthenticatedHeaderCannotMint() (gas: 321913)\n[PASS] test_MalformedRLPBoundsAndCanonicalLengths() (gas: 147737)\n[PASS] test_MissingFieldsAndInvalidNumberOrMixHash() (gas: 237524)\n[PASS] test_RealMainnetCancunHeader() (gas: 543993)\n[PASS] test_RealMainnetPragueHeader() (gas: 547036)\n[PASS] test_RealMainnetShanghaiHeader() (gas: 538038)\n[PASS] test_RealSepoliaHeaderWithAccessListHashAndSlotNumber() (gas: 550588)\n[PASS] test_ZeroNumberAndZeroMixHashAreValidRLP() (gas: 40712)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 52.85ms (51.37ms CPU time)\n\nRan 16 tests for test/OGClubFurniture.t.sol:FurnitureTest\n[PASS] testFuzz_AfterFirstMintMustWaitAndAnyoneCanActivate(uint32) (runs: 256, μ: 596110, ~: 595918)\nLogs:\n  Bound result 5\n\n[PASS] testFuzz_EveryGrantAfterTheFirstWaitsSevenDays(address,address,uint32) (runs: 256, μ: 169354, ~: 169450)\n[PASS] test_AllOwnerFunctionsProtected() (gas: 227178)\n[PASS] test_CancelStopsActivationEvenAfterDeadline() (gas: 394671)\n[PASS] test_IdentityInterfacesMintAndSupply() (gas: 448761)\n[PASS] test_InvalidAddressesAndBatchLengths() (gas: 3967)\n[PASS] test_MetadataFreezesPermanently() (gas: 195226)\n[PASS] test_NoOwnerSeizureOrBurn() (gas: 418561)\n[PASS] test_OnlyTheFirstGrantIsImmediateEvenBeforeAnyMint() (gas: 546001)\n[PASS] test_OwnershipTwoStepAndRenounce() (gas: 244214)\n[PASS] test_RegrantingTheRevokedFirstMinterWaitsWithZeroSupply() (gas: 569038)\n[PASS] test_RejectedGrantDoesNotSpendTheBootstrap() (gas: 173991)\n[PASS] test_ReproposalRestartsDelayAndCancelDoesNotRevokeExistingRole() (gas: 457168)\n[PASS] test_RevokeIsImmediateClearsProposalsAndRegrantWaitsAgain() (gas: 535486)\n[PASS] test_RoyaltyDefaultAndLimits() (gas: 161390)\n[PASS] test_ZeroAddressesAndLegacyMinterSelectorCannotGrant() (gas: 340672)\nSuite result: ok. 16 passed; 0 failed; 0 skipped; finished in 63.59ms (65.26ms CPU time)\n\nRan 16 tests for test/OGClubFarmVault.t.sol:FarmVaultTest\n[PASS] testFuzz_ReserveCapAndClaimConservation(uint96,uint96) (runs: 256, μ: 1352149, ~: 1352235)\nLogs:\n  Bound result 133686629344\n  Bound result 833086\n\n[PASS] test_CancelBeforeOpenOnlyReleasesReserveWithoutTransferring() (gas: 561805)\n[PASS] test_ClaimLastSecondBeforeExpirationAndPartialRelease() (gas: 397391)\n[PASS] test_DelayExactBoundaryAndPermissionlessClaimPaidToAccountOnly() (gas: 442808)\n[PASS] test_FailedTokenTransferRestoresClaimAndReservations() (gas: 727404)\n[PASS] test_HalfCapUsesOnlyUnreservedBalanceAndFloorsOddWei() (gas: 472822)\n[PASS] test_InvalidRecipientsAndZeroAllocation() (gas: 482033)\n[PASS] test_InvalidSeasonRootAndTotal() (gas: 164553)\n[PASS] test_OnlyOwnerCanProposeCancelAndNoSweepOrApprovalOrPause() (gas: 165634)\n[PASS] test_OwnerCallbackCannotReserveAgainstAnInFlightPayout() (gas: 625341)\n[PASS] test_OwnershipHandoverPreservesSeasons() (gas: 415758)\n[PASS] test_ProofRejectsWrongAccountAmountSeasonAndSingleHash() (gas: 898876)\n[PASS] test_ProposalIntervalAtExactBoundaryIncludingAfterCancel() (gas: 441729)\n[PASS] test_ReleaseExactly90DaysAfterOpeningAndNeverWithdrawsTokens() (gas: 562741)\n[PASS] test_TokenCallbackCannotClaimTwice() (gas: 521104)\n[PASS] test_TotalBudgetCapsEvenInconsistentMerkleTree() (gas: 355026)\nSuite result: ok. 16 passed; 0 failed; 0 skipped; finished in 64.96ms (64.96ms CPU time)\n\nRan 3 tests for test/ClubsReview.t.sol:ClubsReviewFixesTest\n[PASS] test_BadPlacementDataEveryShape() (gas: 742284)\n[PASS] test_ClubFullAt285() (gas: 83180661)\n[PASS] test_ConstructorRejections() (gas: 15440)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 44.57ms (43.55ms CPU time)\n\nRan 4 tests for test/Deployment.t.sol:DeploymentTest\n[PASS] test_ConstructorsDoNotCallDependenciesOrAssignFactoryOwner() (gas: 45432)\n[PASS] test_InvalidConfigurationAndConstructorBounds() (gas: 8014)\n[PASS] test_MockIsDeliberatelyUnlimitedTestnetOnly() (gas: 77458)\n[PASS] test_SepoliaDeploymentAndOwnerSetup() (gas: 34870838)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 76.76ms (75.99ms CPU time)\n\nRan 5 tests for test/MainnetDeployment.t.sol:MainnetDeploymentTest\n[PASS] test_AllFiveTwoStepHandoffsToContractWalletPreserveSetupAndRoyalty() (gas: 2801635)\n[PASS] test_MainnetFactoryConstructorsDependenciesOwnersRuntimeAndUnconfiguredState() (gas: 36155846)\n[PASS] test_MainnetNoticeRejectsEarlyOpeningAndAcceptsSevenDayBoundary() (gas: 261914)\n[PASS] test_MainnetScriptRehearsesFiveApplicationsAndRejectsWrongChain() (gas: 9769380)\nLogs:\n  LOCAL REHEARSAL ONLY: these addresses are not mainnet deployments.\n  Chain: Ethereum mainnet (1). Owner and initial royalty receiver: 0x5b95A971B4583A5f011E9DA082acdD679b870D06\n  OGClubFurniture 0x104fBc016F4bb334D775a19E8A6510109AC63E00\n  Constructor arguments (owner, royaltyReceiver):\n  0x0000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d060000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d06\n  OGClubFarmVault 0x037eDa3aDB1198021A9b2e88C22B464fD38db3f3\n  Constructor arguments (token, owner):\n  0x000000000000000000000000ce7eb1ad9e2e1c784ea05f7ea4a0fe625923d10a0000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d06\n  OGClubStaking 0xDDc10602782af652bB913f7bdE1fD82981Db7dd9\n  Constructor arguments (token, vault, owner, pointsPerTokenDay):\n  0x000000000000000000000000ce7eb1ad9e2e1c784ea05f7ea4a0fe625923d10a000000000000000000000000037eda3adb1198021a9b2e88c22b464fd38db3f30000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d060000000000000000000000000000000000000000000000000de0b6b3a7640000\n  OGClubRaffle 0x7FdB3132Ff7D02d8B9e221c61cC895ce9a4bb773\n  Constructor arguments (staking, furniture, owner, raffleNotice):\n  0x000000000000000000000000ddc10602782af652bb913f7bde1fd82981db7dd9000000000000000000000000104fbc016f4bb334d775a19e8a6510109ac63e000000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d060000000000000000000000000000000000000000000000000000000000093a80\n  OGClubClubs 0xfD07C974e33dd1626640bA3a5acF0418FaacCA7a\n  Constructor arguments (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x000000000000000000000000ce7eb1ad9e2e1c784ea05f7ea4a0fe625923d10a000000000000000000000000037eda3adb1198021a9b2e88c22b464fd38db3f300000000000000000000000000000000000000000000152d02c7e14af6800000000000000000000000000000104fbc016f4bb334d775a19e8a6510109ac63e000000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d060000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d06000000000000000000000000999ce0ce8c5f7661e0c74a568ffe27ceb9177bdb00000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  Owner setup in order; every call sends 0 ETH:\n  1a. FIRST furniture grantMinter(raffle)\n  to 0x104fBc016F4bb334D775a19E8A6510109AC63E00\n  0x261707fa0000000000000000000000007fdb3132ff7d02d8b9e221c61cc895ce9a4bb773\n  1b. FIRST staking grantSpender(raffle)\n  to 0xDDc10602782af652bB913f7bdE1fD82981Db7dd9\n  0x5a4b61980000000000000000000000007fdb3132ff7d02d8b9e221c61cc895ce9a4bb773\n  2a. furniture setBaseURI\n  to 0x104fBc016F4bb334D775a19E8A6510109AC63E00\n  0x55f804b30000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002068747470733a2f2f776f726c642e6f67636c75622e6f6e6c696e652f6e66742f\n  2b. clubs setBaseURI\n  to 0xfD07C974e33dd1626640bA3a5acF0418FaacCA7a\n  0x55f804b30000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f776f726c642e6f67636c75622e6f6e6c696e652f636c75622f00000000000000000000000000000000000000000000000000000000000000\n  3. clubs setFootprints (24 final definitions, one atomic batch)\n  to 0xfD07C974e33dd1626640bA3a5acF0418FaacCA7a\n  0xb16e1514000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000009e00000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001300000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000015000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000\n  4. ONLY WHEN LAUNCH IS ANNOUNCED: clubs setSaleOpen(true)\n  to 0xfD07C974e33dd1626640bA3a5acF0418FaacCA7a\n  0xaf979f250000000000000000000000000000000000000000000000000000000000000001\n  Later Safe handoff: current owner calls transferOwnership(Safe) on EACH of the five contracts;\n  the Safe calls acceptOwnership() on EACH. Accept calldata:\n  0x79ba5097\n\n[PASS] test_PrintedOwnerCallsConfigureExactCatalogueAndPreserveDelayedLaterGrants() (gas: 1740357)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 99.52ms (98.72ms CPU time)\n\nRan 2 tests for test/ClubsReviewDeploy.t.sol:ClubsReviewDeployTest\n[PASS] test_MainnetVaultCheckRejectsLookalikesAndAcceptsMatch() (gas: 10114346)\nLogs:\n  OGClubClubs 0xCF75462c9e7fFf4eEB0c50185087a0fb9A056d2b\n  OGClubClubs constructor args (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b000000000000000000000000a4ad4f68d0b91cfd19687c881e50f3a00242828c00000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000008b56398fc3f0ffecf106fbeb5a6661ce5284880f0000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b330000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b330000000000000000000000003d6c014d7df179a01c9f8f4bbaca599c1cb8076a00000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  token 0x2e234DAe75C793f67A35089C9d99245E1C58470b\n  vault 0xA4AD4f68d0b91CFD19687c881e50f3A00242828c\n  price (token base units) 100000000000000000000000\n  furniture 0x8b56398Fc3f0FfeCF106fBeb5A6661cE5284880F\n  owner 0x2aCEadD3329Ca7DAcED273E002C1Ef40c6ef4b33\n  royaltyReceiver 0x2aCEadD3329Ca7DAcED273E002C1Ef40c6ef4b33\n  Swarm Pepes 0x3D6c014d7Df179a01c9f8F4bBAca599C1cB8076a\n  delegate.xyz registry 0x00000000000000447e69651d841bD8D104Bed493\n  level 2 price 200000000000000000000000\n  level 3 price 400000000000000000000000\n  level 4 price 800000000000000000000000\n  saleOpen false\n  OWNER must send this setFootprints batch to OGClubClubs before opening the sale:\n  0xb16e1514000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001\n  OWNER must set the club metadata URI:\n  0x55f804b30000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f776f726c642e6f67636c75622e6f6e6c696e652f636c75622f00000000000000000000000000000000000000000000000000000000000000\n  After reviewing footprints and metadata, OWNER may open the sale with:\n  0xaf979f250000000000000000000000000000000000000000000000000000000000000001\n\n[PASS] test_SepoliaScriptWiresPepesRealRegistryPricesAndWallFootprints() (gas: 19260299)\nLogs:\n  MockOG (unrestricted testnet mint) 0x95CedE5e970fE74dEF7B443DAf6420440793dBb6\n  MockOG constructor args (initialRecipient):\n  0x0000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b33\n  OGClubFurniture 0x843567975C55c54C8213f73c4e282e110934C29D\n  OGClubFurniture constructor args (owner, royaltyReceiver):\n  0x0000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b330000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b33\n  OGClubFarmVault 0x95eD037F6A9b2931b15035E79d11A9747955FcDF\n  OGClubFarmVault constructor args (token, owner):\n  0x00000000000000000000000095cede5e970fe74def7b443daf6420440793dbb60000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b33\n  MockSwarmPepe (public mint, Sepolia/local only) 0xA7dD5b26F7a5D21902D555A7322567360816be13\n  MockSwarmPepe constructor args: none\n  OGClubClubs 0xE2dd2b018f0F61Ac83931E4de6cfd6398e49F692\n  OGClubClubs constructor args (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x00000000000000000000000095cede5e970fe74def7b443daf6420440793dbb600000000000000000000000095ed037f6a9b2931b15035e79d11a9747955fcdf00000000000000000000000000000000000000000000152d02c7e14af6800000000000000000000000000000843567975c55c54c8213f73c4e282e110934c29d0000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b330000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b33000000000000000000000000a7dd5b26f7a5d21902d555a7322567360816be1300000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  token 0x95CedE5e970fE74dEF7B443DAf6420440793dBb6\n  vault 0x95eD037F6A9b2931b15035E79d11A9747955FcDF\n  price (token base units) 100000000000000000000000\n  furniture 0x843567975C55c54C8213f73c4e282e110934C29D\n  owner 0x2aCEadD3329Ca7DAcED273E002C1Ef40c6ef4b33\n  royaltyReceiver 0x2aCEadD3329Ca7DAcED273E002C1Ef40c6ef4b33\n  Swarm Pepes 0xA7dD5b26F7a5D21902D555A7322567360816be13\n  delegate.xyz registry 0x00000000000000447e69651d841bD8D104Bed493\n  level 2 price 200000000000000000000000\n  level 3 price 400000000000000000000000\n  level 4 price 800000000000000000000000\n  saleOpen true\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 4.21ms (5.36ms CPU time)\n\nRan 10 tests for test/ClubsReview.t.sol:ClubsReviewPepeTest\n[PASS] test_ClosedSaleBlocksHolder() (gas: 64778)\n[PASS] test_ClubIdIsPepeIdNotSequential() (gas: 864010)\n[PASS] test_DelegatedHotWalletMintsPaysAndReceives() (gas: 500819)\n[PASS] test_DelegationFromPreviousHolderDiesWithPepeTransfer() (gas: 304535)\n[PASS] test_DelegationMustMatchHolderTokenCollectionAndRights() (gas: 889546)\n[PASS] test_HolderMintsClubWithPepeIdAndEventCarriesIt() (gas: 330691)\n[PASS] test_NonHolderAndApprovedPepeOperatorCannotMint() (gas: 196626)\n[PASS] test_NonexistentPepeReverts() (gas: 53875)\n[PASS] test_SecondMintForSamePepeRevertsEverAfterTransfers() (gas: 248262)\n[PASS] test_ZeroRegistryIgnoresDelegation() (gas: 460528)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 4.09ms (2.24ms CPU time)\n\nRan 13 tests for test/OGClubClubs.t.sol:ClubsMintTest\n[PASS] testFuzz_PaymentConservation(uint128,uint8) (runs: 256, μ: 2435771, ~: 1987173)\nLogs:\n  Bound result 365171547050976\n  Bound result 1\n\n[PASS] test_BurnSinkCannotAlsoBeVaultAndPayerCannotPayItself() (gas: 21192)\n[PASS] test_ClosedSaleAndNonHolder() (gas: 170614)\n[PASS] test_ExactOddSplitMintEventsAndEnumerationThroughTransfers() (gas: 767355)\n[PASS] test_IdentityInterfacesAndEmptyClub() (gas: 208278)\n[PASS] test_NonReceiverRollsBackPaymentAndPepeEligibility() (gas: 805099)\n[PASS] test_ReceiverCannotDoubleMintAndMayRejectAtomically() (gas: 1487824)\n[PASS] test_SecondRecipientAndFinalFirstRecipientBalancesMustBothMatch() (gas: 1821839)\n[PASS] test_ShortApprovalRollsBackFirstLeg() (gas: 242315)\n[PASS] test_ShortBalanceRollsBackFirstLeg() (gas: 388943)\n[PASS] test_TaxedTokensAndFalseReturnsRevertAtomically() (gas: 1787558)\n[PASS] test_TokenCallbackCannotReenterMintOrUpgrade() (gas: 1831691)\n[PASS] test_ZeroBurnAtPriceOneAndNoReturnToken() (gas: 702030)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 198.64ms (200.25ms CPU time)\n\nRan 3 tests for test/Permutation.t.sol:PermutationTest\n[PASS] testFuzz_LargeDomainsInRangeAndDistinct(uint48,uint48,uint48,bytes32) (runs: 256, μ: 19399, ~: 18133)\nLogs:\n  Bound result 89118135135\n\n[PASS] testFuzz_SmallDomainsAreBijections(uint8,bytes32) (runs: 256, μ: 544360, ~: 121719)\nLogs:\n  Bound result 122\n\n[PASS] test_InvalidDomainAndIndexRejected() (gas: 211485)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 294.04ms (294.02ms CPU time)\n\nRan 30 tests for test/ClubsAdversarial.t.sol:ClubsAdversarialTest\n[PASS] testFuzz_SingleTileDoorRuleIsExactlyTheTwoDoorTiles(uint8,uint8) (runs: 512, μ: 228575, ~: 231676)\nLogs:\n  Bound result 4\n  Bound result 0\n\n[PASS] testFuzz_SplitForAnyPrice(uint256,uint8) (runs: 512, μ: 1389378, ~: 1148660)\nLogs:\n  Bound result 327595911752326497029178240613551261955\n  Bound result 4\n\n[PASS] test_AmountZeroAndTwoRejected() (gas: 135003)\n[PASS] test_ApprovalForOneClubDoesNotExtendToAnother() (gas: 1061295)\n[PASS] test_ClubApprovalsGrantPlacementAndRevocationRemovesIt() (gas: 831708)\n[PASS] test_ContractHolderThatCannotReceiveReverts() (gas: 742400)\n[PASS] test_EveryShapeThatTouchesEitherDoorTileIsRejected() (gas: 1547282)\n[PASS] test_ExactRightAndBottomEdgesFitAndOneMoreDoesNot() (gas: 903478)\n[PASS] test_ExactlyPriceAllowanceAndBalanceSucceedOneWeiShortFails() (gas: 795370)\n[PASS] test_FootprintBoundsAndOwnerOnly() (gas: 249143)\n[PASS] test_FootprintIsFinalFromDefinitionAndPlacementStillMarksLegacyLock() (gas: 752176)\n[PASS] test_FullRoomRejectsEverythingElse() (gas: 28207981)\n[PASS] test_FurnitureOperatorOfAStrangerCannotPlaceIntoOperatorsOwnClub() (gas: 142507)\n[PASS] test_HookCalledDirectlyByAnyoneButFurnitureIsRejected() (gas: 73460)\n[PASS] test_InterfacesAndImmutables() (gas: 142297)\n[PASS] test_MalformedDataAlwaysReverts() (gas: 649467)\n[PASS] test_MetadataAndRoyaltyEdges() (gas: 360810)\n[PASS] test_MintPaysFromCallerAndClosingSaleStopsMinting() (gas: 627615)\n[PASS] test_MinterCannotPushFurnitureStraightIntoTheClubContract() (gas: 196893)\n[PASS] test_MissingClubIdsRejectedIncludingZeroAndMax() (gas: 489457)\n[PASS] test_NobodyCanMoveFurnitureOutOfTheContract() (gas: 359245)\n[PASS] test_OverlapAtASingleSharedTileIsRejected() (gas: 1204602)\n[PASS] test_PendingOwnerHasNoPowerUntilAcceptAndOldOwnerLosesIt() (gas: 239573)\n[PASS] test_ReentrantReceiverPlacesButCannotMintTwice() (gas: 1460687)\n[PASS] test_RenouncedOwnershipKeepsPlacementWorking() (gas: 282678)\n[PASS] test_RotationSwapsOnlyOnOddRotations() (gas: 1478988)\n[PASS] test_TileTakenViewBounds() (gas: 56614)\n[PASS] test_TransferredClubKeepsLayoutAndMovesPlacementRight() (gas: 1112467)\n[PASS] test_Uint8ExtremesAndRotFourAreOutOfRoom() (gas: 1014316)\n[PASS] test_UnfootprintedIdRejectedAndDoesNotLock() (gas: 448312)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 354.01ms (376.29ms CPU time)\n\nRan 23 tests for test/OGClubRaffle.t.sol:RaffleTest\n[PASS] testFuzz_ExactlyMinPrizesAndTicketsWinWithNoDuplicateTicket(uint8,uint8,bytes32) (runs: 256, μ: 1645776, ~: 1076919)\nLogs:\n  Bound result 3\n  Bound result 27\n\n[PASS] testFuzz_NoticeAlwaysMeasuredFromCreation(uint32) (runs: 256, μ: 241084, ~: 240936)\nLogs:\n  Bound result 5\n\n[PASS] test_ClaimToCannotRedirectAnotherWalletInTheSameBatch() (gas: 1239609)\n[PASS] test_ContractWalletCanRedirectButNobodyElseCan() (gas: 2015153)\n[PASS] test_DrawHeaderAndTargetExactBoundaries() (gas: 641712)\n[PASS] test_DuplicateWithinBatchRollsBackEverythingAndBitmapCrossesWords() (gas: 937264)\n[PASS] test_EntryFailureRollsBackRangesCapsAndPoints() (gas: 833603)\n[PASS] test_EntryWindowAndWalletCapExactBoundaries() (gas: 808341)\n[PASS] test_HugeTicketAndPrizeCountsDoNotRequireIterationToDrawOrClaim() (gas: 925425)\n[PASS] test_InvalidConfigurationPoolsLinesAndTickets() (gas: 941928)\n[PASS] test_Maximum32PoolsAnd128PrizeLines() (gas: 15557738)\n[PASS] test_MultiItemPoolMintsExactQuantitiesIncludingDuplicateAndZeroIds() (gas: 2370129)\n[PASS] test_NoticeExactBoundariesAndCancellation() (gas: 540021)\n[PASS] test_OwnerCannotModifyTermsPauseOrCancelStartedRaffle() (gas: 450829)\n[PASS] test_ReceiverCannotReenterEitherClaimPath() (gas: 1991045)\n[PASS] test_RejectingWalletDoesNotBlockOtherWinnersAndEmptyClaimRejected() (gas: 2030167)\n[PASS] test_RetargetOnlyAt257AndOldHeaderCannotDrawNewTarget() (gas: 560166)\n[PASS] test_RevokedMinterClaimIsRetryableAndDoesNotReroll() (gas: 1017518)\n[PASS] test_TicketPriceMultiplicationOverflowDoesNotSpendOrRecordEntry() (gas: 370843)\n[PASS] test_UnlimitedCapIsPerPoolAndRangesStayContiguous() (gas: 878602)\n[PASS] test_UnsoldPrizesAreRandomPositionsNotAlwaysTheTail() (gas: 3336643)\n[PASS] test_WrongKEntryAndDoubleClaimsRevertAtomically() (gas: 1332250)\n[PASS] test_WrongNumberInAuthenticatedHeaderRejected() (gas: 365306)\nSuite result: ok. 23 passed; 0 failed; 0 skipped; finished in 496.67ms (543.28ms CPU time)\n\nRan 10 tests for test/ClubsReview.t.sol:ClubsReviewLevelsTest\n[PASS] test_BadLevelViewsRevert() (gas: 49368)\n[PASS] test_DoorBlockedByMultiTilePiecesAtEveryLevel() (gas: 4152747)\n[PASS] test_EverySingleTileAtEveryLevelAgainstModel() (gas: 271242677)\n[PASS] test_ExpansionEdgesRevertBeforeAndWorkAfterAndPiecesKeepTiles() (gas: 2689418)\n[PASS] test_FloorMasksMatchCoordinateRulesBitForBit() (gas: 501808)\n[PASS] test_LevelFollowsClubTransfer() (gas: 378429)\n[PASS] test_MintAtLevelOnePricesAndViews() (gas: 46962)\n[PASS] test_OnlyHolderOrApprovedUpgradesAndCallerPays() (gas: 705504)\n[PASS] test_UpgradeOneWeiShortRevertsAtomically() (gas: 513539)\n[PASS] test_UpgradeToFourExactSplitsReceiptsEvents() (gas: 497786)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 332.66ms (335.40ms CPU time)\n\nRan 6 tests for test/RaffleAtomicity.t.sol:RaffleAtomicityTest\n[PASS] testFuzz_MultiItemClaimsCanBeShuffledAndFragmented(uint8[4],bytes32) (runs: 512, μ: 3823898, ~: 3775990)\nLogs:\n  Bound result 3\n  Bound result 1\n  Bound result 1\n  Bound result 1\n\n[PASS] test_ClaimBitmapIsIndependentAcrossRafflesAndPools() (gas: 2082130)\n[PASS] test_LateInvalidEntryRollsBackAnEarlierWalletMint() (gas: 1264278)\n[PASS] test_LateInvalidPoolCreationDoesNotLeaveRaffleOrPrizeStorage() (gas: 507505)\n[PASS] test_LateReceiverRejectionRollsBackPreviouslyMintedWalletGroup() (gas: 2144305)\n[PASS] test_PrizeLimitAppliesToSumAcrossLinesAndRollbackAllowsReuse() (gas: 498160)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 513.61ms (516.55ms CPU time)\n\nRan 6 tests for test/ClubsReview.t.sol:ClubsReviewWallsTest\n[PASS] test_BadWallCoordinatesRevert() (gas: 551743)\n[PASS] test_DoorPositionOnSideOne() (gas: 837622)\n[PASS] test_EveryWidthStartAndSideAtEveryLevelAgainstModel() (gas: 422207016)\n[PASS] test_OverlapPerSideAndSidesAndFloorIndependent() (gas: 1368354)\n[PASS] test_PastEndThenFitsAfterUpgrade() (gas: 1960110)\n[PASS] test_WallFootprintRulesAndLockCarriesFlag() (gas: 547448)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 563.40ms (564.12ms CPU time)\n\nRan 1 test for test/ClubsReview.t.sol:ClubsReviewFuzzTest\n[PASS] testFuzz_RandomSequencesMatchModel(uint256) (runs: 200, μ: 16629650, ~: 16773738)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 845.51ms (843.35ms CPU time)\n\nRan 1 test for test/ClubsLaunchInvariant.t.sol:ClubsLaunchFuzzTest\n[PASS] testFuzz_LevelsWallsFloorShapesRotationsAndDuplicateDesigns(bytes32) (runs: 256, μ: 34607513, ~: 34571046)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.50s (1.49s CPU time)\n\nRan 1 test for test/VaultInvariant.t.sol:VaultInvariantTest\n[PASS] invariant_VaultAlwaysCoversReservationsAndOnlyClaimsMoveTokens() (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------+----------+-------+---------+----------╮\n| Contract     | Selector | Calls | Reverts | Discards |\n+======================================================+\n| VaultHandler | advance  | 1324  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| VaultHandler | cancel   | 1381  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| VaultHandler | claim    | 1402  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| VaultHandler | fund     | 1347  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| VaultHandler | propose  | 1368  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| VaultHandler | release  | 1370  | 0       | 0        |\n╰--------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 1000000000000000000000\n  Bound result 100000000000000000000\n  Bound result 604800\n  Bound result 100000000000000000000\n  Bound result 259200\n  Bound result 345600\n  Bound result 100000000000000000000\n  Bound result 8035200\n  Bound result 1001\n  Bound result 1001\n  Bound result 3575\n  Bound result 7172\n  Bound result 72\n  Bound result 514264337593543950335\n  Bound result 7036\n  Bound result 1001\n  Bound result 188509602034755484695\n  Bound result 804\n  Bound result 1069\n  Bound result 377\n  Bound result 65\n  Bound result 15296\n  Bound result 1001\n  Bound result 523433401375661689600\n  Bound result 49152\n  Bound result 6\n  Bound result 1\n  Bound result 12\n  Bound result 2015\n  Bound result 1001\n  Bound result 1605765\n  Bound result 866525687846678260565\n  Bound result 6281289\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.60s (1.60s CPU time)\n\nRan 1 test for test/StakingInvariant.t.sol:FeeStakingInvariantTest\n[PASS]\nFeeStakingInvariantTest invariants:\n[PASS] invariant_PointsAppearOnlyByTimeWeightedAccrualAndLeaveOnlyBySpending\n[PASS] invariant_StakingBalanceEqualsAllStakes\n FeeStakingInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭----------------+-------------------+-------+---------+----------╮\n| Contract       | Selector          | Calls | Reverts | Discards |\n+=================================================================+\n| StakingHandler | advance           | 1641  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | spend             | 1579  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | stake             | 1664  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | unauthorizedSpend | 1612  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | unstake           | 1696  | 0       | 0        |\n╰----------------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 10000000000000000000\n  Bound result 86400\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 8766645973316035591\n  Bound result 0\n  Bound result 1001\n  Bound result 7\n  Bound result 0\n  Bound result 6264337593543950335\n  Bound result 1001\n  Bound result 1159\n  Bound result 1203\n  Bound result 23\n  Bound result 742021439101673\n  Bound result 7\n  Bound result 27810568\n  Bound result 20\n  Bound result 7581\n  Bound result 2852\n  Bound result 4794\n  Bound result 4074\n  Bound result 1001\n  Bound result 1001\n  Bound result 514264337593543950335\n  Bound result 26538321317662994\n  Bound result 96664526\n  Bound result 20839871\n  Bound result 1744\n  Bound result 5621\n  Bound result 863999\n  Bound result 55\n  Bound result 682512645\n  Bound result 0\n  Bound result 3403\n  Bound result 1001\n  Bound result 2179\n  Bound result 6307\n  Bound result 1001\n  Bound result 2\n  Bound result 284\n  Bound result 514264337593543950335\n  Bound result 1001\n  Bound result 1811\n  Bound result 1001\n  Bound result 5795278380\n  Bound result 2879\n  Bound result 514264337593543950334\n  Bound result 198\n  Bound result 154088948358706631171\n  Bound result 6802805610\n  Bound result 18322\n  Bound result 1001\n  Bound result 370533851\n  Bound result 3035\n  Bound result 2677\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.95s (1.95s CPU time)\n\nRan 1 test for test/StakingInvariant.t.sol:StakingInvariantTest\n[PASS]\nStakingInvariantTest invariants:\n[PASS] invariant_PointsAppearOnlyByTimeWeightedAccrualAndLeaveOnlyBySpending\n[PASS] invariant_StakingBalanceEqualsAllStakes\n StakingInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭----------------+-------------------+-------+---------+----------╮\n| Contract       | Selector          | Calls | Reverts | Discards |\n+=================================================================+\n| StakingHandler | advance           | 1641  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | spend             | 1579  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | stake             | 1664  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | unauthorizedSpend | 1612  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | unstake           | 1696  | 0       | 0        |\n╰----------------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 10000000000000000000\n  Bound result 86400\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 2566645973319348953\n  Bound result 0\n  Bound result 1001\n  Bound result 7\n  Bound result 3339054996095811515\n  Bound result 2264337593543950335\n  Bound result 1001\n  Bound result 1148\n  Bound result 889\n  Bound result 23\n  Bound result 742021439101673\n  Bound result 0\n  Bound result 27810568\n  Bound result 1001\n  Bound result 7433\n  Bound result 2806\n  Bound result 2154\n  Bound result 229\n  Bound result 82\n  Bound result 1001\n  Bound result 514264337593543950335\n  Bound result 2222719342355442645\n  Bound result 7175\n  Bound result 60913996485437614427\n  Bound result 6164\n  Bound result 4594637\n  Bound result 863999\n  Bound result 55\n  Bound result 49\n  Bound result 0\n  Bound result 3270\n  Bound result 1001\n  Bound result 2123\n  Bound result 36343\n  Bound result 1001\n  Bound result 2\n  Bound result 790\n  Bound result 514264337593543950335\n  Bound result 1001\n  Bound result 1680\n  Bound result 1001\n  Bound result 5795278380\n  Bound result 2378\n  Bound result 514264337593543950334\n  Bound result 198\n  Bound result 154088948358706631171\n  Bound result 6802805610\n  Bound result 18322\n  Bound result 1001\n  Bound result 992035287276763398606\n  Bound result 1558\n  Bound result 1240\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.06s (2.06s CPU time)\n\nRan 1 test for test/ClubsInvariant.t.sol:ClubsLayoutFuzzTest\n[PASS] testFuzz_RandomPlacementSequenceMatchesIndependentGridAndFailuresAreAtomic(bytes32) (runs: 256, μ: 94682691, ~: 94644895)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.78s (2.78s CPU time)\n\nRan 2 tests for test/ClubsReviewInvariant.t.sol:ClubsReviewInvariantTest\n[PASS]\nClubsReviewInvariantTest invariants:\n[PASS] invariant_EveryClubIsAPepeThatMintedOnce\n[PASS] invariant_NoOGHeldAndPaymentsSplitExactly\n[PASS] invariant_PiecesEqualFurnitureHeldAndLayoutsValid\n ClubsReviewInvariantTest invariants (runs: 64, calls: 5120, reverts: 0)\n\n╭--------------------+--------------+-------+---------+----------╮\n| Contract           | Selector     | Calls | Reverts | Discards |\n+================================================================+\n| ClubsReviewHandler | approveClub  | 577   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | delegate     | 579   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | mintClub     | 565   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | mintPepe     | 540   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | place        | 578   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | setSale      | 568   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | transferClub | 539   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | transferPepe | 613   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | upgrade      | 561   | 0       | 0        |\n╰--------------------+--------------+-------+---------+----------╯\n\n[PASS] test_HandlerExercisesEveryPath() (gas: 7967473)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 2.83s (2.83s CPU time)\n\nRan 9 tests for test/ClubsDeployment.t.sol:ClubsDeploymentTest\n[PASS] test_EmptyFootprintsAreExplicitlyUnconfiguredAndScriptsEnforceChain() (gas: 24446367)\nLogs:\n  MockOG (unrestricted testnet mint) 0x2146bCE9584Fb42179531b017C0a28B45357DCfA\n  MockOG constructor args (initialRecipient):\n  0x00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a57\n  OGClubFurniture 0x7e670b34e14F0546c1ee28B1DcBd0F219eBaCf3B\n  OGClubFurniture constructor args (owner, royaltyReceiver):\n  0x00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a570000000000000000000000007ad1e3cd95db13f7970851d8a4706eb5254ef2cc\n  OGClubFarmVault 0x50db4e46F59C25BC6D0F65917277f3C00229F306\n  OGClubFarmVault constructor args (token, owner):\n  0x0000000000000000000000002146bce9584fb42179531b017c0a28b45357dcfa00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a57\n  MockSwarmPepe (public mint, Sepolia/local only) 0x0e02c420C2EC8e6bc1F5499F265332C736C8748a\n  MockSwarmPepe constructor args: none\n  OGClubClubs 0x79c936D495EdaDFC6A2Cb0D0B189bDf811527dCf\n  OGClubClubs constructor args (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x0000000000000000000000002146bce9584fb42179531b017c0a28b45357dcfa00000000000000000000000050db4e46f59c25bc6d0f65917277f3c00229f30600000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000007e670b34e14f0546c1ee28b1dcbd0f219ebacf3b00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a570000000000000000000000007ad1e3cd95db13f7970851d8a4706eb5254ef2cc0000000000000000000000000e02c420c2ec8e6bc1f5499f265332c736c8748a00000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  token 0x2146bCE9584Fb42179531b017C0a28B45357DCfA\n  vault 0x50db4e46F59C25BC6D0F65917277f3C00229F306\n  price (token base units) 100000000000000000000000\n  furniture 0x7e670b34e14F0546c1ee28B1DcBd0F219eBaCf3B\n  owner 0x73258404819B10B2F0Cf91BFC76F08b28B4e9A57\n  royaltyReceiver 0x7aD1E3Cd95dB13F7970851D8a4706Eb5254eF2cC\n  Swarm Pepes 0x0e02c420C2EC8e6bc1F5499F265332C736C8748a\n  delegate.xyz registry 0x00000000000000447e69651d841bD8D104Bed493\n  level 2 price 200000000000000000000000\n  level 3 price 400000000000000000000000\n  level 4 price 800000000000000000000000\n  saleOpen true\n\n[PASS] test_FactoryConstructorWorksOnEmptyChainWithExplicitOwnerAndBoundedRuntime() (gas: 15130175)\n[PASS] test_FootprintJSONValidatesBeforeDeploymentWithoutTruncation() (gas: 10850219)\n[PASS] test_MainnetScriptDeploysFromSeparateKeyWithContractOwnerAndLeavesSetupToOwner() (gas: 9928269)\nLogs:\n  OGClubClubs 0x30A83F5e57Fa28a89b559850E586e08549eCbBc1\n  OGClubClubs constructor args (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x0000000000000000000000005615deb798bb3e4dfa0139dfa1b3d433cc23b72f0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b000000000000000000000000000000000000000000000000000000000000007b0000000000000000000000004483b2254437483025732348c2b668986ce9df26000000000000000000000000f62849f9a0b5bf2913b396098f7c7019b51a820a0000000000000000000000007ad1e3cd95db13f7970851d8a4706eb5254ef2cc00000000000000000000000052e9a3dde7ff1018cc104248afb1c29e7b211f3800000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  token 0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f\n  vault 0x2e234DAe75C793f67A35089C9d99245E1C58470b\n  price (token base units) 123\n  furniture 0x4483b2254437483025732348c2B668986cE9dF26\n  owner 0xF62849F9A0B5Bf2913b396098F7c7019b51A820a\n  royaltyReceiver 0x7aD1E3Cd95dB13F7970851D8a4706Eb5254eF2cC\n  Swarm Pepes 0x52e9a3DDE7Ff1018Cc104248afb1c29E7B211F38\n  delegate.xyz registry 0x00000000000000447e69651d841bD8D104Bed493\n  level 2 price 200000000000000000000000\n  level 3 price 400000000000000000000000\n  level 4 price 800000000000000000000000\n  saleOpen false\n  OWNER must send this setFootprints batch to OGClubClubs before opening the sale:\n  0xb16e1514000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001\n  OWNER must set the club metadata URI:\n  0x55f804b30000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f776f726c642e6f67636c75622e6f6e6c696e652f636c75622f00000000000000000000000000000000000000000000000000000000000000\n  After reviewing footprints and metadata, OWNER may open the sale with:\n  0xaf979f250000000000000000000000000000000000000000000000000000000000000001\n\n[PASS] test_MainnetScriptRejectsWrongVaultTokenBeforeDeploying() (gas: 6218600)\n[PASS] test_MockPepePublicMintIsSepoliaFixtureAndCannotRemint() (gas: 2802391)\n[PASS] test_PredictedSelfVaultIsRejected() (gas: 14902)\n[PASS] test_SepoliaScriptDeploysRealDependenciesConfiguresAndOpensSale() (gas: 18931689)\nLogs:\n  MockOG (unrestricted testnet mint) 0x2146bCE9584Fb42179531b017C0a28B45357DCfA\n  MockOG constructor args (initialRecipient):\n  0x00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a57\n  OGClubFurniture 0x7e670b34e14F0546c1ee28B1DcBd0F219eBaCf3B\n  OGClubFurniture constructor args (owner, royaltyReceiver):\n  0x00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a570000000000000000000000007ad1e3cd95db13f7970851d8a4706eb5254ef2cc\n  OGClubFarmVault 0x50db4e46F59C25BC6D0F65917277f3C00229F306\n  OGClubFarmVault constructor args (token, owner):\n  0x0000000000000000000000002146bce9584fb42179531b017c0a28b45357dcfa00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a57\n  MockSwarmPepe (public mint, Sepolia/local only) 0x0e02c420C2EC8e6bc1F5499F265332C736C8748a\n  MockSwarmPepe constructor args: none\n  OGClubClubs 0x79c936D495EdaDFC6A2Cb0D0B189bDf811527dCf\n  OGClubClubs constructor args (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x0000000000000000000000002146bce9584fb42179531b017c0a28b45357dcfa00000000000000000000000050db4e46f59c25bc6d0f65917277f3c00229f30600000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000007e670b34e14f0546c1ee28b1dcbd0f219ebacf3b00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a570000000000000000000000007ad1e3cd95db13f7970851d8a4706eb5254ef2cc0000000000000000000000000e02c420c2ec8e6bc1f5499f265332c736c8748a00000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  token 0x2146bCE9584Fb42179531b017C0a28B45357DCfA\n  vault 0x50db4e46F59C25BC6D0F65917277f3C00229F306\n  price (token base units) 100000000000000000000000\n  furniture 0x7e670b34e14F0546c1ee28B1DcBd0F219eBaCf3B\n  owner 0x73258404819B10B2F0Cf91BFC76F08b28B4e9A57\n  royaltyReceiver 0x7aD1E3Cd95dB13F7970851D8a4706Eb5254eF2cC\n  Swarm Pepes 0x0e02c420C2EC8e6bc1F5499F265332C736C8748a\n  delegate.xyz registry 0x00000000000000447e69651d841bD8D104Bed493\n  level 2 price 200000000000000000000000\n  level 3 price 400000000000000000000000\n  level 4 price 800000000000000000000000\n  saleOpen true\n\n[PASS] test_SevenContractFactoryDeploymentInOneTransactionPreservesOwnersAndBootstrap() (gas: 53502266)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 2.96s (216.89ms CPU time)\n\nRan 15 tests for test/OGClubStaking.t.sol:StakingTest\n[PASS] testFuzz_CheckpointFrequencyDoesNotChangePoints(uint96,uint32,uint8) (runs: 256, μ: 1148274, ~: 802386)\nLogs:\n  Bound result 3888\n  Bound result 41\n  Bound result 3\n\n[PASS] testFuzz_FeeRoundsUpAndConservesBalance(uint96) (runs: 256, μ: 282894, ~: 283052)\nLogs:\n  Bound result 293\n\n[PASS] testFuzz_WholeTokenAccrualAcrossSupportedDecimals(uint8,uint96,uint32) (runs: 256, μ: 1219250, ~: 1219445)\nLogs:\n  Bound result 0\n  Bound result 702697\n  Bound result 1139\n\n[PASS] test_AccrueBeforeBalanceChangesAndNoLock() (gas: 427758)\n[PASS] test_CheckpointsPreserveSubWeiAccrualAndFullExitFraction() (gas: 1366740)\n[PASS] test_DecimalsReadOnFirstUseAndNormalizeWholeTokens() (gas: 2190760)\n[PASS] test_DonationsNeitherCreateStakeNorAwardPoints() (gas: 343342)\n[PASS] test_ExactContinuousAccrualAtBoundariesAndSpend() (gas: 299793)\n[PASS] test_FeeOnTransferCreditsOnlyReceivedAndCannotInflatePoints() (gas: 381142)\n[PASS] test_InvalidAmountsUnauthorizedSpendAndOwnerCannotTouchStakes() (gas: 406963)\n[PASS] test_MaximumPackedBalanceAndRateAccrueWithoutIntermediateOverflow() (gas: 448069)\n[PASS] test_NoReturnAndFalseReturnTokens() (gas: 734103)\n[PASS] test_TinyUnstakesAlwaysPayFee() (gas: 360201)\n[PASS] test_TokenCallbackCannotSpendOrReenterStakeOrUnstake() (gas: 685618)\n[PASS] test_ZeroReceiptAndSenderSideFeeRevertAtomically() (gas: 554565)\nSuite result: ok. 15 passed; 0 failed; 0 skipped; finished in 2.96s (430.00ms CPU time)\n\nRan 1 test for test/FurnitureInvariant.t.sol:FurnitureInvariantTest\n[PASS]\nFurnitureInvariantTest invariants:\n[PASS] invariant_BalancesAndSupplyMatchGhosts\n[PASS] invariant_FrozenMetadataNeverChangesAndRoyaltyIsBounded\n[PASS] invariant_OwnerNeverHoldsOrDestroysAnything\n FurnitureInvariantTest invariants (runs: 96, calls: 7680, reverts: 0)\n\n╭------------------+--------------------------+-------+---------+----------╮\n| Contract         | Selector                 | Calls | Reverts | Discards |\n+==========================================================================+\n| FurnitureHandler | mint                     | 1125  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | operatorBatchTransfer    | 1134  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | ownerMetadata            | 1030  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | ownerTriesToSeize        | 1057  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | revokeApproval           | 1102  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | strangerCannotAdminister | 1157  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | transfer                 | 1075  | 0       | 0        |\n╰------------------+--------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 5\n  Bound result 14\n  Bound result 14\n  Bound result 14\n  Bound result 1\n  Bound result 2\n  Bound result 2\n  Bound result 14\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 14\n  Bound result 0\n  Bound result 14\n  Bound result 0\n  Bound result 1\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 9\n  Bound result 0\n  Bound result 1044\n  Bound result 960\n  Bound result 3\n  Bound result 0\n  Bound result 10\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 5\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 9\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 15\n  Bound result 7\n  Bound result 515\n  Bound result 17\n  Bound result 14\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 10\n  Bound result 0\n  Bound result 20\n  Bound result 14\n  Bound result 0\n  Bound result 0\n  Bound result 18\n  Bound result 0\n  Bound result 2\n  Bound result 0\n  Bound result 2\n  Bound result 0\n  Bound result 0\n  Bound result 16\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 13\n  Bound result 1\n  Bound result 13\n  Bound result 13\n  Bound result 2\n  Bound result 4\n  Bound result 6\n  Bound result 5\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 14\n  Bound result 7\n  Bound result 1\n  Bound result 1\n  Bound result 14\n  Bound result 8\n  Bound result 1\n  Bound result 0\n  Bound result 3\n  Bound result 9\n  Bound result 4\n  Bound result 21\n  Bound result 3\n  Bound result 4\n  Bound result 1\n  Bound result 1\n  Bound result 7\n  Bound result 4\n  Bound result 0\n  Bound result 14\n  Bound result 8\n  Bound result 0\n  Bound result 4\n  Bound result 3\n  Bound result 1\n  Bound result 4\n  Bound result 1\n  Bound result 1\n  Bound result 1\n  Bound result 0\n  Bound result 6\n  Bound result 14\n  Bound result 0\n  Bound result 1\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 4.96s (4.96s CPU time)\n\nRan 1 test for test/FeeFlowInvariant.t.sol:TaxedFeeFlowInvariantTest\n[PASS]\nTaxedFeeFlowInvariantTest invariants:\n[PASS] invariant_EachReservationEqualsUnpaidAllocationsOfAnOpenSeason\n[PASS] invariant_PointsConservedThroughPartialExitsClaimsAndRestakes\n[PASS] invariant_TokensConservedAcrossStakeFeeVaultPayoutAndBurn\n TaxedFeeFlowInvariantTest invariants (runs: 128, calls: 12288, reverts: 0)\n\n╭----------------+-----------+-------+---------+----------╮\n| Contract       | Selector  | Calls | Reverts | Discards |\n+=========================================================+\n| FeeFlowHandler | advance   | 1157  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | badProof  | 1051  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | cancel    | 1089  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | claim     | 1105  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | exit      | 1112  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | overspend | 1117  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | propose   | 1116  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | release   | 1108  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | spend     | 1106  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | stake     | 1174  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | unstake   | 1153  | 0       | 0        |\n╰----------------+-----------+-------+---------+----------╯\n\nLogs:\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 50000000000\n  Bound result 100000000\n  Bound result 604800\n  Bound result 100000000\n  Bound result 259200\n  Bound result 1000000000000000000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 40000000\n  Bound result 7\n  Bound result 1001\n  Bound result 1928028033\n  Bound result 90571971967\n  Bound result 1001\n  Bound result 555\n  Bound result 41889\n  Bound result 4\n  Bound result 5986\n  Bound result 42499998999\n  Bound result 92500000000\n  Bound result 1001\n  Bound result 80\n  Bound result 92499998999\n  Bound result 13469\n  Bound result 900\n  Bound result 13518\n  Bound result 12606\n  Bound result 11661\n  Bound result 1912514264337144714790575\n  Bound result 10431248722022807091781893\n  Bound result 1001\n  Bound result 64\n  Bound result 8446\n  Bound result 1001\n  Bound result 7852840661987759\n  Bound result 252649\n  Bound result 5468\n  Bound result 10864\n  Bound result 1001\n  Bound result 6723\n  Bound result 6990\n  Bound result 86\n  Bound result 18969\n  Bound result 1299110083\n  Bound result 1201676827\n  Bound result 14559\n  Bound result 888537872939\n  Bound result 7813\n  Bound result 821897532469\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 7.00s (7.00s CPU time)\n\nRan 1 test for test/FeeFlowInvariant.t.sol:FeeFlowInvariantTest\n[PASS]\nFeeFlowInvariantTest invariants:\n[PASS] invariant_EachReservationEqualsUnpaidAllocationsOfAnOpenSeason\n[PASS] invariant_PointsConservedThroughPartialExitsClaimsAndRestakes\n[PASS] invariant_TokensConservedAcrossStakeFeeVaultPayoutAndBurn\n FeeFlowInvariantTest invariants (runs: 128, calls: 12288, reverts: 0)\n\n╭----------------+-----------+-------+---------+----------╮\n| Contract       | Selector  | Calls | Reverts | Discards |\n+=========================================================+\n| FeeFlowHandler | advance   | 1157  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | badProof  | 1051  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | cancel    | 1089  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | claim     | 1105  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | exit      | 1112  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | overspend | 1117  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | propose   | 1116  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | release   | 1108  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | spend     | 1106  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | stake     | 1174  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | unstake   | 1153  | 0       | 0        |\n╰----------------+-----------+-------+---------+----------╯\n\nLogs:\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 50000000000\n  Bound result 100000000\n  Bound result 604800\n  Bound result 100000000\n  Bound result 259200\n  Bound result 1000000000000000000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 40000000\n  Bound result 7\n  Bound result 1001\n  Bound result 638212886\n  Bound result 99361787114\n  Bound result 1001\n  Bound result 556015102\n  Bound result 41889\n  Bound result 4\n  Bound result 5922\n  Bound result 49999998999\n  Bound result 100000000000\n  Bound result 1001\n  Bound result 80\n  Bound result 12436\n  Bound result 900\n  Bound result 12966\n  Bound result 11841\n  Bound result 100000023806\n  Bound result 9863\n  Bound result 28162513775772144743947695\n  Bound result 28162514264337144854534655\n  Bound result 1001\n  Bound result 64\n  Bound result 7776\n  Bound result 1001\n  Bound result 7852840661987759\n  Bound result 1001\n  Bound result 252649\n  Bound result 1151\n  Bound result 1001\n  Bound result 5547\n  Bound result 10429\n  Bound result 86\n  Bound result 5922\n  Bound result 8103\n  Bound result 433\n  Bound result 968130330249\n  Bound result 968130330249\n  Bound result 8103\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 7.21s (7.21s CPU time)\n\nRan 1 test for test/ClubsAdversarialInvariant.t.sol:ClubsAdversarialInvariantTest\n[PASS]\nClubsAdversarialInvariantTest invariants:\n[PASS] invariant_LayoutsFitNeverOverlapNeverCoverDoor\n[PASS] invariant_LockedFootprintsNeverChange\n[PASS] invariant_NoTokensEverHeldAndSplitConserved\n[PASS] invariant_PiecesEqualCustodyPerItem\n ClubsAdversarialInvariantTest invariants (runs: 64, calls: 4096, reverts: 0)\n\n╭-------------------------+--------------+-------+---------+----------╮\n| Contract                | Selector     | Calls | Reverts | Discards |\n+=====================================================================+\n| AdversarialClubsHandler | approveClub  | 838   | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| AdversarialClubsHandler | mint         | 808   | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| AdversarialClubsHandler | place        | 818   | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| AdversarialClubsHandler | setFootprint | 826   | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| AdversarialClubsHandler | transferClub | 806   | 0       | 0        |\n╰-------------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 2\n  Bound result 2\n  Bound result 0\n  Bound result 5\n  Bound result 5\n  Bound result 1\n  Bound result 8\n  Bound result 5\n  Bound result 3\n  Bound result 8\n  Bound result 8\n  Bound result 0\n  Bound result 0\n  Bound result 6\n  Bound result 0\n  Bound result 10\n  Bound result 6\n  Bound result 0\n  Bound result 1\n  Bound result 9\n  Bound result 0\n  Bound result 3\n  Bound result 5\n  Bound result 0\n  Bound result 6\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 6\n  Bound result 4\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 7.55s (7.54s CPU time)\n\nRan 1 test for test/ClubsInvariant.t.sol:ClubsInvariantTest\n[PASS]\nClubsInvariantTest invariants:\n[PASS] invariant_EveryHeldFurniturePieceHasExactlyOnePermanentLayoutEntry\n[PASS] invariant_PaymentsNeverRemainInClubsAndSplitExactly\n ClubsInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| ClubsHandler | mint         | 2018  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| ClubsHandler | place        | 2032  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| ClubsHandler | sale         | 2059  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| ClubsHandler | transferClub | 2083  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 13.97s (13.97s CPU time)\n\nRan 1 test for test/ClubsLaunchInvariant.t.sol:ClubsLaunchInvariantTest\n[PASS]\nClubsLaunchInvariantTest invariants:\n[PASS] invariant_AllLayoutsMatchIndependentModelCustodyAndUniqueDesigns\n[PASS] invariant_EveryClubIsAPepeMintedExactlyOnceAndAllPaymentsConserved\n ClubsLaunchInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------------+--------------+-------+---------+----------╮\n| Contract           | Selector     | Calls | Reverts | Discards |\n+================================================================+\n| LaunchClubsHandler | approveClub  | 1018  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | delegatePepe | 1035  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | mint         | 1012  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | place        | 1026  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | sale         | 1002  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | transferClub | 1016  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | transferPepe | 968   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | upgrade      | 1115  | 0       | 0        |\n╰--------------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 21.60s (21.60s CPU time)\n\nRan 1 test for test/RaffleSequenceInvariant.t.sol:RaffleSequenceInvariantTest\n[PASS]\nRaffleSequenceInvariantTest invariants:\n[PASS] invariant_ClaimBitsMatchMintReceiptsAndNeverMintUnawardedPrizes\n[PASS] invariant_FinalizedDrawsAndTermsNeverChange\n[PASS] invariant_PointsSpentExactlyMatchAcceptedRanges\n RaffleSequenceInvariantTest invariants (runs: 128, calls: 12288, reverts: 0)\n\n╭-----------------------+----------+-------+---------+----------╮\n| Contract              | Selector | Calls | Reverts | Discards |\n+===============================================================+\n| RaffleSequenceHandler | advance  | 1572  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | badClaim | 1538  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | cancel   | 1447  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | claim    | 1505  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | commit   | 1490  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | create   | 1584  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | draw     | 1608  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | enter    | 1544  | 0       | 0        |\n╰-----------------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 86400\n  Bound result 0\n  Bound result 0\n  Bound result 5\n  Bound result 5\n  Bound result 2\n  Bound result 1\n  Bound result 172800\n  Bound result 0\n  Bound result 172800\n  Bound result 0\n  Bound result 172800\n  Bound result 0\n  Bound result 1\n  Bound result 86400\n  Bound result 0\n  Bound result 4\n  Bound result 92\n  Bound result 0\n  Bound result 215\n  Bound result 197\n  Bound result 53\n  Bound result 19\n  Bound result 2\n  Bound result 4\n  Bound result 108\n  Bound result 3\n  Bound result 66875\n  Bound result 37521\n  Bound result 287\n  Bound result 70783\n  Bound result 23\n  Bound result 55\n  Bound result 4\n  Bound result 157\n  Bound result 67\n  Bound result 192\n  Bound result 14\n  Bound result 807\n  Bound result 80\n  Bound result 4081\n  Bound result 297\n  Bound result 4\n  Bound result 63417\n  Bound result 254\n  Bound result 9063\n  Bound result 66\n  Bound result 7\n  Bound result 133\n  Bound result 2\n  Bound result 7\n  Bound result 9\n  Bound result 2\n  Bound result 199\n  Bound result 3\n  Bound result 6\n  Bound result 3977\n  Bound result 198\n  Bound result 5\n  Bound result 3350\n  Bound result 217\n  Bound result 46\n  Bound result 20\n  Bound result 134\n  Bound result 7\n  Bound result 1\n  Bound result 1\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 39.66s (39.65s CPU time)\n\nRan 42 test suites in 39.66s (124.76s CPU time): 273 tests passed, 0 failed, 0 skipped (273 total tests)\n","passed":true},{"durationMs":97,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"OGClubClubs.acceptOwnership()\",\"OGClubClubs.approve(address,uint256)\",\"OGClubClubs.freezeMetadata()\",\"OGClubClubs.mintClub(uint256)\",\"OGClubClubs.onERC1155Received(address,address,uint256,uint256,bytes)\",\"OGClubClubs.renounceOwnership()\",\"OGClubClubs.safeTransferFrom(address,address,uint256)\",\"OGClubClubs.safeTransferFrom(address,address,uint256,bytes)\",\"OGClubClubs.setApprovalForAll(address,bool)\",\"OGClubClubs.setBaseURI(string)\",\"OGClubClubs.setFootprint(uint256,uint8,uint8,bool)\",\"OGClubClubs.setFootprints(uint256[],uint8[],uint8[],bool[])\",\"OGClubClubs.setRoyalty(address,uint96)\",\"OGClubClubs.setSaleOpen(bool)\",\"OGClubClubs.transferFrom(address,address,uint256)\",\"OGClubClubs.transferOwnership(address)\",\"OGClubClubs.upgradeClub(uint256)\",\"OGClubFarmVault.acceptOwnership()\",\"OGClubFarmVault.cancelSeason(uint256)\",\"OGClubFarmVault.claim(uint256,address,uint256,bytes32[])\",\"OGClubFarmVault.proposeSeason(bytes32,uint256)\",\"OGClubFarmVault.releaseSeason(uint256)\",\"OGClubFarmVault.renounceOwnership()\",\"OGClubFarmVault.transferOwnership(address)\",\"OGClubFurniture.acceptOwnership()\",\"OGClubFurniture.activateMinter(address)\",\"OGClubFurniture.cancelMinter(address)\",\"OGClubFurniture.freezeMetadata()\",\"OGClubFurniture.grantMinter(address)\",\"OGClubFurniture.mintBatch(address,uint256[],uint256[])\",\"OGClubFurniture.renounceOwnership()\",\"OGClubFurniture.revokeMinter(address)\",\"OGClubFurniture.safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\",\"OGClubFurniture.safeTransferFrom(address,address,uint256,uint256,bytes)\",\"OGClubFurniture.setApprovalForAll(address,bool)\",\"OGClubFurniture.setBaseURI(string)\",\"OGClubFurniture.setRoyalty(address,uint96)\",\"OGClubFurniture.transferOwnership(address)\",\"OGClubRaffle.acceptOwnership()\",\"OGClubRaffle.cancelRaffle(uint256)\",\"OGClubRaffle.claim(uint256,uint256,(uint256,uint256)[])\",\"OGClubRaffle.claimTo(uint256,uint256,(uint256,uint256)[],address)\",\"OGClubRaffle.commitDraw(uint256)\",\"OGClubRaffle.createRaffle(uint256,uint256,(uint8,uint256,uint256,(uint256,uint256)[])[])\",\"OGClubRaffle.draw(uint256,bytes)\",\"OGClubRaffle.enter(uint256,uint256,uint256)\",\"OGClubRaffle.renounceOwnership()\",\"OGClubRaffle.transferOwnership(address)\",\"OGClubStaking.acceptOwnership()\",\"OGClubStaking.activateSpender(address)\",\"OGClubStaking.cancelSpender(address)\",\"OGClubStaking.grantSpender(address)\",\"OGClubStaking.renounceOwnership()\",\"OGClubStaking.revokeSpender(address)\",\"OGClubStaking.spendPoints(address,uint256)\",\"OGClubStaking.stake(uint256)\",\"OGClubStaking.transferOwnership(address)\",\"OGClubStaking.unstake(uint256)\"],\"files\":{\".gitignore\":4,\"ADAPTATION.md\":121,\"README.md\":608,\"VENDOR.md\":13,\"foundry.toml\":22,\"launch.json\":54,\"script/Deploy.s.sol\":59,\"script/DeployClubs.s.sol\":226,\"script/DeployMainnet.s.sol\":166,\"script/club-footprints.json\":1,\"script/encode_header.py\":82,\"src/OGClubClubs.sol\":416,\"src/OGClubFarmVault.sol\":115,\"src/OGClubFurniture.sol\":138,\"src/OGClubRaffle.sol\":357,\"src/OGClubStaking.sol\":179,\"src/interfaces/IDelegateRegistry.sol\":10,\"src/libraries/BlockHeader.sol\":70,\"src/libraries/Permutation.sol\":30,\"src/mocks/MockOG.sol\":21,\"src/mocks/MockSwarmPepe.sol\":13,\"test/ADDITIONAL_COVERAGE.md\":87,\"test/BlockHeader.t.sol\":144,\"test/ClubsAdversarial.t.sol\":730,\"test/ClubsAdversarialInvariant.t.sol\":482,\"test/ClubsDeployment.t.sol\":349,\"test/ClubsFootprints.t.sol\":225,\"test/ClubsInvariant.t.sol\":335,\"test/ClubsLaunch.t.sol\":726,\"test/ClubsLaunchInvariant.t.sol\":464,\"test/ClubsPlacement.t.sol\":322,\"test/ClubsReview.t.sol\":840,\"test/ClubsReviewDeploy.t.sol\":118,\"test/ClubsReviewInvariant.t.sol\":370,\"test/Deployment.t.sol\":119,\"test/FeeFlowInvariant.t.sol\":386,\"test/FurnitureInvariant.t.sol\":248,\"test/Gas.t.sol\":138,\"test/ImportedAudit.t.sol\":180,\"test/MainnetDeployment.t.sol\":284,\"test/OGClubClubs.t.sol\":573,\"test/OGClubFarmVault.t.sol\":309,\"test/OGClubFurniture.t.sol\":362,\"test/OGClubRaffle.t.sol\":537,\"test/OGClubStaking.t.sol\":280,\"test/Permutation.t.sol\":49,\"test/RaffleAtomicity.t.sol\":207,\"test/RaffleSequenceInvariant.t.sol\":503,\"test/RoleLifecycle.t.sol\":146,\"test/StakingInvariant.t.sol\":153,\"test/TokenFailureAtomicity.t.sol\":187,\"test/VaultInvariant.t.sol\":156,\"test/fixtures/MainnetHeaders.sol\":32,\"test/fixtures/SOURCES.md\":74,\"test/fixtures/SepoliaHeader.sol\":14,\"test/fixtures/mainnet-cancun.json\":24,\"test/fixtures/mainnet-prague.json\":25,\"test/fixtures/mainnet-shanghai.json\":21,\"test/fixtures/sepolia-11921684.json\":27,\"test/helpers/ClubLaunchMocks.sol\":22,\"test/helpers/ClubsTestBase.sol\":86,\"test/helpers/HeaderBuilder.sol\":48,\"test/helpers/LaunchLayoutModel.sol\":70,\"test/helpers/RaffleTestBase.sol\":98,\"test/helpers/TokenMocks.sol\":93,\"test/test_encode_header.py\":65,\"test/test_launch.py\":154},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":4271,"exitCode":0,"name":"slither","output":"[high/medium] weak-prng at src/OGClubStaking.sol:167: OGClubStaking._pending(OGClubStaking.Account) (src/OGClubStaking.sol#167-178) uses a weak PRNG: \"remainder = uint80(fraction % denominator) (src/OGClubStaking.sol#177)\"\n[high/medium] reentrancy-balance at src/OGClubFarmVault.sol:78: Reentrancy in OGClubFarmVault.claim(uint256,address,uint256,bytes32[]) (src/OGClubFarmVault.sol#78-94):\n[high/medium] reentrancy-balance at src/OGClubStaking.sol:72: Reentrancy in OGClubStaking.stake(uint256) (src/OGClubStaking.sol#72-88):\n[high/medium] reentrancy-balance at src/OGClubStaking.sol:90: Reentrancy in OGClubStaking.unstake(uint256) (src/OGClubStaking.sol#90-103):\n[high/medium] reentrancy-balance at src/OGClubStaking.sol:90: Reentrancy in OGClubStaking.unstake(uint256) (src/OGClubStaking.sol#90-103):\n[high/medium] reentrancy-balance at src/OGClubClubs.sol:207: Reentrancy in OGClubClubs._pay(uint256) (src/OGClubClubs.sol#207-220):\n[high/medium] reentrancy-balance at src/OGClubClubs.sol:207: Reentrancy in OGClubClubs._pay(uint256) (src/OGClubClubs.sol#207-220):\n[medium/high] incorrect-equality at src/OGClubStaking.sol:167: OGClubStaking._pending(OGClubStaking.Account) (src/OGClubStaking.sol#167-178) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/OGClubStaking.sol:138: OGClubStaking.activateSpender(address) (src/OGClubStaking.sol#138-145) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/OGClubFurniture.sol:68: OGClubFurniture.activateMinter(address) (src/OGClubFurniture.sol#68-75) uses a dangerous strict equality:\n[medium/high] incorrect-equality at src/OGClubStaking.sol:72: OGClubStaking.stake(uint256) (src/OGClubStaking.sol#72-88) uses a dangerous strict equality:\n[medium/medium] reentrancy-no-eth at src/OGClubRaffle.sol:300: Reentrancy in OGClubRaffle._claim(uint256,uint256,OGClubRaffle.Win[],address) (src/OGClubRaffle.sol#300-325):\n[medium/medium] reentrancy-no-eth at src/OGClubStaking.sol:72: Reentrancy in OGClubStaking.stake(uint256) (src/OGClubStaking.sol#72-88):\n[medium/medium] uninitialized-local at src/OGClubRaffle.sol:163: OGClubRaffle.createRaffle(uint256,uint256,OGClubRaffle.PoolInput[]).prizeCount (src/OGClubRaffle.sol#163) is a local variable never initialized\n[medium/medium] uninitialized-local at src/libraries/Permutation.sol:13: Permutation.permute(uint256,uint256,bytes32).halfBits (src/libraries/Permutation.sol#13) is a local variable never initialized\n[medium/medium] uninitialized-local at src/OGClubRaffle.sol:148: OGClubRaffle.createRaffle(uint256,uint256,OGClubRaffle.PoolInput[]).lines (src/OGClubRaffle.sol#148) is a local variable never initialized\n[medium/medium] uninitialized-local at src/OGClubRaffle.sol:241: OGClubRaffle.prizeOf(uint256,uint256,uint256).low (src/OGClubRaffle.sol#241) is a local variable never initialized\n[low/medium] calls-loop at src/OGClubRaffle.sol:300: OGClubRaffle._claim(uint256,uint256,OGClubRaffle.Win[],address) (src/OGClubRaffle.sol#300-325) has external calls inside a loop: furniture.mintBatch(to,ids,amounts) (src/OGClubRaffle.sol#322)\n[low/medium] calls-loop at src/OGClubRaffle.sol:300: OGClubRaffle._claim(uint256,uint256,OGClubRaffle.Win[],address) (src/OGClubRaffle.sol#300-325) has external calls inside a loop: furniture.mintBatch(to,ids,amounts) (src/OGClubRaffle.sol#322)\n[low/medium] reentrancy-benign at src/OGClubStaking.sol:72: Reentrancy in OGClubStaking.stake(uint256) (src/OGClubStaking.sol#72-88):\n[low/medium] timestamp at src/OGClubFurniture.sol:78: OGClubFurniture.cancelMinter(address) (src/OGClubFurniture.sol#78-83) uses timestamp for comparisons\n[low/medium] timestamp at src/OGClubFarmVault.sol:56: OGClubFarmVault.proposeSeason(bytes32,uint256) (src/OGClubFarmVault.sol#56-66) uses timestamp for comparisons\n[low/medium] timestamp at src/OGClubFarmVault.sol:96: OGClubFarmVault.releaseSeason(uint256) (src/OGClubFarmVault.sol#96-102) uses timestamp for comparisons\n[low/medium] timestamp at src/OGClubRaffle.sol:176: OGClubRaffle.cancelRaffle(uint256) (src/OGClubRaffle.sol#176-181) uses timestamp for comparisons\n[low/medium] timestamp at src/OGClubStaking.sol:138: OGClubStaking.activateSpender(address) (src/OGClubStaking.sol#138-145) uses timestamp for comparisons\n[low/medium] timestamp at src/OGClubStaking.sol:115: OGClubStaking.spendPoints(address,uint256) (src/OGClubStaking.sol#115-121) uses timestamp for comparisons\n[low/medium] timestamp at src/OGClubRaffle.sol:183: OGClubRaffle.enter(uint256,uint256,uint256) (src/OGClubRaffle.sol#183-199) uses timestamp for comparisons\n[low/medium] timestamp at src/OGClubFarmVault.sol:68: OGClubFarmVault.cancelSeason(uint256) (src/OGClubFarmVault.sol#68-74) uses timestamp for comparisons\n[low/medium] timestamp at src/OGClubStaking.sol:147: OGClubStaking.cancelSpender(address) (src/OGClubStaking.sol#147-152) uses timestamp for comparisons\n[low/medium] timestamp at src/OGClubRaffle.sol:138: OGClubRaffle.createRaffle(uint256,uint256,OGClubRaffle.PoolInput[]) (src/OGClubRaffle.sol#138-174) uses timestamp for comparisons\n[low/medium] timestamp at src/OGClubFarmVault.sol:78: OGClubFarmVault.claim(uint256,address,uint256,bytes32[]) (src/OGClubFarmVault.sol#78-94) uses timestamp for comparisons\n[low/medium] timestamp at src/OGClubFurniture.sol:68: OGClubFurniture.activateMinter(address) (src/OGClubFurniture.sol#68-75) uses timestamp for comparisons\n[low/medium] timestamp at src/OGClubStaking.sol:167: OGClubStaking._pending(OGClubStaking.Account) (src/OGClubStaking.sol#167-178) uses timestamp for comparisons\n[low/medium] timestamp at src/OGClubRaffle.sol:203: OGClubRaffle.commitDraw(uint256) (src/OGClubRaffle.sol#203-211) uses timestamp for comparisons","passed":true},{"durationMs":638,"exitCode":0,"name":"aderyn","output":"[high] eth-send-unchecked-address at src/OGClubStaking.sol:72: ETH transferred without address checks (2 places)\n[high] reentrancy-state-change at src/OGClubClubs.sol:157: Reentrancy: State change after external call (6 places)\n[high] storage-array-memory-edit at src/OGClubStaking.sol:106: Storage Array Edited with Memory\n[high] unsafe-casting at src/OGClubRaffle.sol:193: Unsafe Casting of integers (2 places)\n[low] centralization-risk at src/OGClubClubs.sol:22: Centralization Risk (25 places)\n[low] costly-loop at src/OGClubClubs.sol:358: Costly operations inside loop (5 places)\n[low] large-numeric-literal at src/OGClubStaking.sol:97: Large Numeric Literal (2 places)\n[low] literal-instead-of-constant at src/OGClubClubs.sol:149: Literal Instead of Constant (36 places)\n[low] non-reentrant-not-first at src/OGClubFarmVault.sol:56: `nonReentrant` is Not the First Modifier (3 places)\n[low] push-zero-opcode at src/OGClubClubs.sol:2: PUSH0 Opcode (10 places)\n[low] require-revert-in-loop at src/OGClubClubs.sol:358: Loop Contains `require`/`revert` (6 places)\n[low] unchecked-return at src/OGClubClubs.sol:126: Unchecked Return (12 places)\n[low] uninitialized-local-variable at src/OGClubClubs.sol:358: Uninitialized Local Variable (7 places)\n[low] unspecific-solidity-pragma at src/OGClubClubs.sol:2: Unspecific Solidity Pragma (8 places)\n[low] unused-public-function at src/OGClubRaffle.sol:262: Public Function Not Used Internally (2 places)","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"2b9447c7c9d53f9999acb3b4079a780a19f903290836196ef79f907b5ea4691e","verifiedTreeHash":"84bf8f78d0f6009c04f17040867a612b5245ed72","verifierVersion":"0.1.0+560ab6a2"},{"checks":[{"durationMs":16619,"exitCode":0,"name":"build","output":"Compiling 108 files with Solc 0.8.26\nSolc 0.8.26 finished in 16.50s\nCompiler run successful!\n","passed":true},{"durationMs":40399,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 1 test for test/ClubsReview.t.sol:ClubsReviewDesignTest\n[PASS] test_SecondCopyRevertsFloorAndWallOtherClubsUnaffectedAndSurvivesTransfer() (gas: 1730236)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.48ms (711.36µs CPU time)\n\nRan 4 tests for test/ImportedAudit.t.sol:ImportedAuditTest\n[PASS] test_Audit07e7433_TargetExpiresAndCanBeReplacedButDrawnSeedIsFinal() (gas: 498289)\n[PASS] test_Audit1ecd3a7_AnyoneCanMintTestnetStakeAndBuyClubs() (gas: 810464)\n[PASS] test_Audit2fa7888_RaffleNeedsFirstGrantsWrongTargetConsumesBootstrap() (gas: 1384721)\n[PASS] test_Audit9dcac50_ClubsNowWorkWithoutRaffleBootstrapRoles() (gas: 553678)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 4.37ms (2.62ms CPU time)\n\nRan 7 tests for test/OGClubClubs.t.sol:ClubsAdminTest\n[PASS] test_AllAdminFunctionsRequireOwner() (gas: 171202)\n[PASS] test_ConstructorRejectsEveryZeroValueAndStartsClosed() (gas: 16115)\n[PASS] test_MetadataFreezeIsPermanentButPlacementsContinue() (gas: 632156)\n[PASS] test_MissingTokensRevertInAllClubViews() (gas: 130959)\n[PASS] test_OwnerCannotMintFreeSeizeBurnOrWithdraw() (gas: 287595)\n[PASS] test_RoyaltyBoundsAndReceiver() (gas: 160927)\n[PASS] test_TwoStepOwnershipRetainsAllPermanentState() (gas: 477442)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 4.40ms (1.51ms CPU time)\n\nRan 7 tests for test/ClubsLaunch.t.sol:ClubsPepeTest\n[PASS] test_AuditMintEventPrecedesReceiverTransfer() (gas: 770245)\n[PASS] test_DelegatedWalletPaysAndReceivesAndRevocationAndTransferInvalidateDelegation() (gas: 1167527)\n[PASS] test_IdZeroAndMaxAreValidPepeIdsNoSequentialAllocation() (gas: 615789)\n[PASS] test_NewConstructorRejections() (gas: 241795)\n[PASS] test_NonexistentPepeAndNonHolderRevert() (gas: 188543)\n[PASS] test_OneClubPerPepeEverEvenAfterPepeAndClubTransfers() (gas: 245695)\n[PASS] test_ZeroRegistryDisablesDelegationButHolderWorks() (gas: 307121)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 4.92ms (1.97ms CPU time)\n\nRan 9 tests for test/ClubsLaunch.t.sol:ClubsLevelsTest\n[PASS] test_ExpansionBoundariesEveryTileOfPieceAndOldTilesRemain() (gas: 2741095)\n[PASS] test_FloorDoorNeverOpensAtAnyLevel() (gas: 1274753)\n[PASS] test_FloorMasksExactlyMatchEveryCoordinateAndContainPreviousLevel() (gas: 359898)\n[PASS] test_NoReturnTokenUpgradesAndZeroBurnPriceOne() (gas: 912490)\n[PASS] test_OnlyClubHolderTokenApprovedOrOperatorCanUpgradeAndCallerPays() (gas: 767305)\n[PASS] test_UpgradeReceiptMutationsRevertEntirePaymentAndLevel() (gas: 1895525)\n[PASS] test_UpgradeReentrancyGuardAndTaxedTokenRejection() (gas: 2125761)\n[PASS] test_UpgradeShortAllowanceRollsBackBurnAndLevel() (gas: 191434)\n[PASS] test_UpgradesExactOddSplitsEventsAndPricesToMax() (gas: 698224)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 8.05ms (7.59ms CPU time)\n\nRan 10 tests for test/ClubsReview.t.sol:ClubsReviewPepeTest\n[PASS] test_ClosedSaleBlocksHolder() (gas: 64778)\n[PASS] test_ClubIdIsPepeIdNotSequential() (gas: 864010)\n[PASS] test_DelegatedHotWalletMintsPaysAndReceives() (gas: 500819)\n[PASS] test_DelegationFromPreviousHolderDiesWithPepeTransfer() (gas: 304535)\n[PASS] test_DelegationMustMatchHolderTokenCollectionAndRights() (gas: 889546)\n[PASS] test_HolderMintsClubWithPepeIdAndEventCarriesIt() (gas: 330691)\n[PASS] test_NonHolderAndApprovedPepeOperatorCannotMint() (gas: 196626)\n[PASS] test_NonexistentPepeReverts() (gas: 53875)\n[PASS] test_SecondMintForSamePepeRevertsEverAfterTransfers() (gas: 248262)\n[PASS] test_ZeroRegistryIgnoresDelegation() (gas: 460528)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 4.03ms (2.31ms CPU time)\n\nRan 2 tests for test/ClubsReviewDeploy.t.sol:ClubsReviewDeployTest\n[PASS] test_MainnetVaultCheckRejectsLookalikesAndAcceptsMatch() (gas: 10114346)\nLogs:\n  OGClubClubs 0xCF75462c9e7fFf4eEB0c50185087a0fb9A056d2b\n  OGClubClubs constructor args (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b000000000000000000000000a4ad4f68d0b91cfd19687c881e50f3a00242828c00000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000008b56398fc3f0ffecf106fbeb5a6661ce5284880f0000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b330000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b330000000000000000000000003d6c014d7df179a01c9f8f4bbaca599c1cb8076a00000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  token 0x2e234DAe75C793f67A35089C9d99245E1C58470b\n  vault 0xA4AD4f68d0b91CFD19687c881e50f3A00242828c\n  price (token base units) 100000000000000000000000\n  furniture 0x8b56398Fc3f0FfeCF106fBeb5A6661cE5284880F\n  owner 0x2aCEadD3329Ca7DAcED273E002C1Ef40c6ef4b33\n  royaltyReceiver 0x2aCEadD3329Ca7DAcED273E002C1Ef40c6ef4b33\n  Swarm Pepes 0x3D6c014d7Df179a01c9f8F4bBAca599C1cB8076a\n  delegate.xyz registry 0x00000000000000447e69651d841bD8D104Bed493\n  level 2 price 200000000000000000000000\n  level 3 price 400000000000000000000000\n  level 4 price 800000000000000000000000\n  saleOpen false\n  OWNER must send this setFootprints batch to OGClubClubs before opening the sale:\n  0xb16e1514000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001\n  OWNER must set the club metadata URI:\n  0x55f804b30000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f776f726c642e6f67636c75622e6f6e6c696e652f636c75622f00000000000000000000000000000000000000000000000000000000000000\n  After reviewing footprints and metadata, OWNER may open the sale with:\n  0xaf979f250000000000000000000000000000000000000000000000000000000000000001\n\n[PASS] test_SepoliaScriptWiresPepesRealRegistryPricesAndWallFootprints() (gas: 19260299)\nLogs:\n  MockOG (unrestricted testnet mint) 0x95CedE5e970fE74dEF7B443DAf6420440793dBb6\n  MockOG constructor args (initialRecipient):\n  0x0000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b33\n  OGClubFurniture 0x843567975C55c54C8213f73c4e282e110934C29D\n  OGClubFurniture constructor args (owner, royaltyReceiver):\n  0x0000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b330000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b33\n  OGClubFarmVault 0x95eD037F6A9b2931b15035E79d11A9747955FcDF\n  OGClubFarmVault constructor args (token, owner):\n  0x00000000000000000000000095cede5e970fe74def7b443daf6420440793dbb60000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b33\n  MockSwarmPepe (public mint, Sepolia/local only) 0xA7dD5b26F7a5D21902D555A7322567360816be13\n  MockSwarmPepe constructor args: none\n  OGClubClubs 0xE2dd2b018f0F61Ac83931E4de6cfd6398e49F692\n  OGClubClubs constructor args (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x00000000000000000000000095cede5e970fe74def7b443daf6420440793dbb600000000000000000000000095ed037f6a9b2931b15035e79d11a9747955fcdf00000000000000000000000000000000000000000000152d02c7e14af6800000000000000000000000000000843567975c55c54c8213f73c4e282e110934c29d0000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b330000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b33000000000000000000000000a7dd5b26f7a5d21902d555a7322567360816be1300000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  token 0x95CedE5e970fE74dEF7B443DAf6420440793dBb6\n  vault 0x95eD037F6A9b2931b15035E79d11A9747955FcDF\n  price (token base units) 100000000000000000000000\n  furniture 0x843567975C55c54C8213f73c4e282e110934C29D\n  owner 0x2aCEadD3329Ca7DAcED273E002C1Ef40c6ef4b33\n  royaltyReceiver 0x2aCEadD3329Ca7DAcED273E002C1Ef40c6ef4b33\n  Swarm Pepes 0xA7dD5b26F7a5D21902D555A7322567360816be13\n  delegate.xyz registry 0x00000000000000447e69651d841bD8D104Bed493\n  level 2 price 200000000000000000000000\n  level 3 price 400000000000000000000000\n  level 4 price 800000000000000000000000\n  saleOpen true\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 4.69ms (6.10ms CPU time)\n\nRan 10 tests for test/ClubsFootprints.t.sol:ClubsFootprintsTest\n[PASS] testFuzz_BatchFinalityAndAtomicity(uint256,uint8,uint8,bool) (runs: 256, μ: 145118, ~: 144114)\nLogs:\n  Bound result 1822\n  Bound result 3\n\n[PASS] test_BatchBadLastEntryRollsBackEarlierDefinitions() (gas: 1004091)\n[PASS] test_BatchDuplicateRollsBackAndCannotRewritePendingDefinition() (gas: 548076)\n[PASS] test_BatchOwnerOnlyIncludingEmptyAndEmptyOwnerBatchIsNoop() (gas: 143900)\n[PASS] test_BatchRejectsEveryLengthMismatchWithoutWrites() (gas: 523861)\n[PASS] test_BatchSetsAllEntriesEmitsUnchangedEventsAndLocksBothSetters() (gas: 580179)\n[PASS] test_DefinitionIsFinalBeforePlacementIncludingIdenticalAndInvalidReset() (gas: 158989)\n[PASS] test_PendingEdgePlacementKeepsOriginalSize() (gas: 445264)\n[PASS] test_PendingFloorPlacementKeepsKindSizeAndRotation() (gas: 449098)\n[PASS] test_PendingWallPlacementKeepsWidthAndSide() (gas: 435657)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 30.22ms (29.34ms CPU time)\n\nRan 4 tests for test/Deployment.t.sol:DeploymentTest\n[PASS] test_ConstructorsDoNotCallDependenciesOrAssignFactoryOwner() (gas: 45432)\n[PASS] test_InvalidConfigurationAndConstructorBounds() (gas: 8014)\n[PASS] test_MockIsDeliberatelyUnlimitedTestnetOnly() (gas: 77458)\n[PASS] test_SepoliaDeploymentAndOwnerSetup() (gas: 34870838)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 37.09ms (36.57ms CPU time)\n\nRan 7 tests for test/RoleLifecycle.t.sol:RoleLifecycleTest\n[PASS] testFuzz_ExpiredProposalsCannotActivateOrCancel(uint32) (runs: 256, μ: 558632, ~: 558520)\nLogs:\n  Bound result 5\n\n[PASS] test_ActivationAtMaturityAndLastSecond() (gas: 512088)\n[PASS] test_CancelRevokeRegrantAndReproposal() (gas: 800981)\n[PASS] test_InvalidGrantDoesNotSpendBootstrapAndZeroAddressesRejected() (gas: 147761)\n[PASS] test_OnlyOwnerProposesCancelsAndRevokes() (gas: 406632)\n[PASS] test_OwnershipHandoverDoesNotResetBootstrapAndRenunciationDoesNotBlockActivation() (gas: 568368)\n[PASS] test_SpenderLastSecondActivates() (gas: 378503)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 39.23ms (38.42ms CPU time)\n\nRan 13 tests for test/ClubsPlacement.t.sol:ClubsPlacementTest\n[PASS] test_BadAmountsAndBatchTransfersRejected() (gas: 264099)\n[PASS] test_ClubTokenApprovalAndApprovalForAllPermitOwnersOfFurnitureToPlace() (gas: 740772)\n[PASS] test_DirectAndFakeERC1155HooksRejected() (gas: 1158983)\n[PASS] test_FurnitureCannotLeaveForClubHolderOperatorOrContractOwner() (gas: 758633)\n[PASS] test_FurnitureOperatorCanPlaceFromClubHolder() (gas: 346998)\n[PASS] test_LevelOneAll98UsableTilesFillWithDistinctDesigns() (gas: 33635309)\n[PASS] test_MissingClubAndMalformedDataCannotLockFurniture() (gas: 743134)\n[PASS] test_NoFootprintBadFootprintsAndPerIdPermanentLock() (gas: 1327568)\n[PASS] test_OffGridRotationDoorAndOverlapRevertWithoutChangingAnything() (gas: 2659693)\n[PASS] test_RealFurnitureAllRotationsViewsAndEvents() (gas: 2071286)\n[PASS] test_StrangerCannotPlaceOwnFurnitureEvenIfCallerOwnsClub() (gas: 219715)\n[PASS] test_TransferCarriesLayoutAndRevokesOldHolderAndTokenApproval() (gas: 776468)\n[PASS] test_VendoredFurnitureSingletonBatchUsesSingleHookAndRecordsOnePiece() (gas: 203558)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 46.93ms (41.71ms CPU time)\n\nRan 6 tests for test/TokenFailureAtomicity.t.sol:TokenFailureAtomicityTest\n[PASS] test_FalseReturningPayoutPreservesEarlierClaimsAndAllReservations() (gas: 728445)\n[PASS] test_OneWeiExitDoesNotCallTheZeroNetRecipientTransfer() (gas: 294703)\n[PASS] test_PackedStakeOverflowRestoresTransferAndPendingPointState() (gas: 487274)\n[PASS] test_SecondUnstakeTransferFailureRestoresVaultFeeAndAccrualCheckpoint() (gas: 612686)\n[PASS] test_SenderSurchargeCannotConsumeAnotherSeasonsReservation() (gas: 1561673)\n[PASS] test_VaultAcceptsNoReturnTokensAndPaysOnlyTheProvenAccount() (gas: 644163)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 3.50ms (2.73ms CPU time)\n\nRan 7 tests for test/ClubsLaunch.t.sol:ClubsWallsTest\n[PASS] test_BothWallsAllWidthsDoorAndIndependentFloor() (gas: 4917697)\n[PASS] test_ClubFullReachableAt285DistinctDesignsWithoutStorageCheats() (gas: 90073666)\n[PASS] test_OneOfEachFloorAndWallPerClubSurvivesTransfer() (gas: 1519153)\n[PASS] test_WallDoorAtEveryLevel() (gas: 1153763)\n[PASS] test_WallDoorOverlapSideValidationAndFootprintFlagLock() (gas: 1424493)\n[PASS] test_WallEventsAndMissingAndOutOfBoundsViews() (gas: 402739)\n[PASS] test_WallLengthsAtEveryLevelAndExtensionAfterUpgrade() (gas: 6477944)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 64.41ms (61.38ms CPU time)\n\nRan 3 tests for test/ClubsReview.t.sol:ClubsReviewFixesTest\n[PASS] test_BadPlacementDataEveryShape() (gas: 742284)\n[PASS] test_ClubFullAt285() (gas: 83180661)\n[PASS] test_ConstructorRejections() (gas: 15440)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 65.19ms (63.50ms CPU time)\n\nRan 16 tests for test/OGClubFarmVault.t.sol:FarmVaultTest\n[PASS] testFuzz_ReserveCapAndClaimConservation(uint96,uint96) (runs: 256, μ: 1352149, ~: 1352235)\nLogs:\n  Bound result 133686629344\n  Bound result 833086\n\n[PASS] test_CancelBeforeOpenOnlyReleasesReserveWithoutTransferring() (gas: 561805)\n[PASS] test_ClaimLastSecondBeforeExpirationAndPartialRelease() (gas: 397391)\n[PASS] test_DelayExactBoundaryAndPermissionlessClaimPaidToAccountOnly() (gas: 442808)\n[PASS] test_FailedTokenTransferRestoresClaimAndReservations() (gas: 727404)\n[PASS] test_HalfCapUsesOnlyUnreservedBalanceAndFloorsOddWei() (gas: 472822)\n[PASS] test_InvalidRecipientsAndZeroAllocation() (gas: 482033)\n[PASS] test_InvalidSeasonRootAndTotal() (gas: 164553)\n[PASS] test_OnlyOwnerCanProposeCancelAndNoSweepOrApprovalOrPause() (gas: 165634)\n[PASS] test_OwnerCallbackCannotReserveAgainstAnInFlightPayout() (gas: 625341)\n[PASS] test_OwnershipHandoverPreservesSeasons() (gas: 415758)\n[PASS] test_ProofRejectsWrongAccountAmountSeasonAndSingleHash() (gas: 898876)\n[PASS] test_ProposalIntervalAtExactBoundaryIncludingAfterCancel() (gas: 441729)\n[PASS] test_ReleaseExactly90DaysAfterOpeningAndNeverWithdrawsTokens() (gas: 562741)\n[PASS] test_TokenCallbackCannotClaimTwice() (gas: 521104)\n[PASS] test_TotalBudgetCapsEvenInconsistentMerkleTree() (gas: 355026)\nSuite result: ok. 16 passed; 0 failed; 0 skipped; finished in 67.74ms (66.00ms CPU time)\n\nRan 16 tests for test/OGClubFurniture.t.sol:FurnitureTest\n[PASS] testFuzz_AfterFirstMintMustWaitAndAnyoneCanActivate(uint32) (runs: 256, μ: 596110, ~: 595918)\nLogs:\n  Bound result 5\n\n[PASS] testFuzz_EveryGrantAfterTheFirstWaitsSevenDays(address,address,uint32) (runs: 256, μ: 169354, ~: 169450)\n[PASS] test_AllOwnerFunctionsProtected() (gas: 227178)\n[PASS] test_CancelStopsActivationEvenAfterDeadline() (gas: 394671)\n[PASS] test_IdentityInterfacesMintAndSupply() (gas: 448761)\n[PASS] test_InvalidAddressesAndBatchLengths() (gas: 3967)\n[PASS] test_MetadataFreezesPermanently() (gas: 195226)\n[PASS] test_NoOwnerSeizureOrBurn() (gas: 418561)\n[PASS] test_OnlyTheFirstGrantIsImmediateEvenBeforeAnyMint() (gas: 546001)\n[PASS] test_OwnershipTwoStepAndRenounce() (gas: 244214)\n[PASS] test_RegrantingTheRevokedFirstMinterWaitsWithZeroSupply() (gas: 569038)\n[PASS] test_RejectedGrantDoesNotSpendTheBootstrap() (gas: 173991)\n[PASS] test_ReproposalRestartsDelayAndCancelDoesNotRevokeExistingRole() (gas: 457168)\n[PASS] test_RevokeIsImmediateClearsProposalsAndRegrantWaitsAgain() (gas: 535486)\n[PASS] test_RoyaltyDefaultAndLimits() (gas: 161390)\n[PASS] test_ZeroAddressesAndLegacyMinterSelectorCannotGrant() (gas: 340672)\nSuite result: ok. 16 passed; 0 failed; 0 skipped; finished in 69.13ms (68.21ms CPU time)\n\nRan 10 tests for test/BlockHeader.t.sol:BlockHeaderTest\n[PASS] testFuzz_AnyMalformedInputRevertsWithCustomError(bytes) (runs: 256, μ: 32435, ~: 32040)\n[PASS] testFuzz_ArbitraryTrailingFieldCount(uint8,uint256,bytes32) (runs: 256, μ: 92720, ~: 81054)\nLogs:\n  Bound result 3\n\n[PASS] test_MalformedAuthenticatedHeaderCannotMint() (gas: 321913)\n[PASS] test_MalformedRLPBoundsAndCanonicalLengths() (gas: 147737)\n[PASS] test_MissingFieldsAndInvalidNumberOrMixHash() (gas: 237524)\n[PASS] test_RealMainnetCancunHeader() (gas: 543993)\n[PASS] test_RealMainnetPragueHeader() (gas: 547036)\n[PASS] test_RealMainnetShanghaiHeader() (gas: 538038)\n[PASS] test_RealSepoliaHeaderWithAccessListHashAndSlotNumber() (gas: 550588)\n[PASS] test_ZeroNumberAndZeroMixHashAreValidRLP() (gas: 40712)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 83.43ms (81.43ms CPU time)\n\nRan 5 tests for test/MainnetDeployment.t.sol:MainnetDeploymentTest\n[PASS] test_AllFiveTwoStepHandoffsToContractWalletPreserveSetupAndRoyalty() (gas: 2801635)\n[PASS] test_MainnetFactoryConstructorsDependenciesOwnersRuntimeAndUnconfiguredState() (gas: 36155846)\n[PASS] test_MainnetNoticeRejectsEarlyOpeningAndAcceptsSevenDayBoundary() (gas: 261914)\n[PASS] test_MainnetScriptRehearsesFiveApplicationsAndRejectsWrongChain() (gas: 9769380)\nLogs:\n  LOCAL REHEARSAL ONLY: these addresses are not mainnet deployments.\n  Chain: Ethereum mainnet (1). Owner and initial royalty receiver: 0x5b95A971B4583A5f011E9DA082acdD679b870D06\n  OGClubFurniture 0x104fBc016F4bb334D775a19E8A6510109AC63E00\n  Constructor arguments (owner, royaltyReceiver):\n  0x0000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d060000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d06\n  OGClubFarmVault 0x037eDa3aDB1198021A9b2e88C22B464fD38db3f3\n  Constructor arguments (token, owner):\n  0x000000000000000000000000ce7eb1ad9e2e1c784ea05f7ea4a0fe625923d10a0000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d06\n  OGClubStaking 0xDDc10602782af652bB913f7bdE1fD82981Db7dd9\n  Constructor arguments (token, vault, owner, pointsPerTokenDay):\n  0x000000000000000000000000ce7eb1ad9e2e1c784ea05f7ea4a0fe625923d10a000000000000000000000000037eda3adb1198021a9b2e88c22b464fd38db3f30000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d060000000000000000000000000000000000000000000000000de0b6b3a7640000\n  OGClubRaffle 0x7FdB3132Ff7D02d8B9e221c61cC895ce9a4bb773\n  Constructor arguments (staking, furniture, owner, raffleNotice):\n  0x000000000000000000000000ddc10602782af652bb913f7bde1fd82981db7dd9000000000000000000000000104fbc016f4bb334d775a19e8a6510109ac63e000000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d060000000000000000000000000000000000000000000000000000000000093a80\n  OGClubClubs 0xfD07C974e33dd1626640bA3a5acF0418FaacCA7a\n  Constructor arguments (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x000000000000000000000000ce7eb1ad9e2e1c784ea05f7ea4a0fe625923d10a000000000000000000000000037eda3adb1198021a9b2e88c22b464fd38db3f300000000000000000000000000000000000000000000152d02c7e14af6800000000000000000000000000000104fbc016f4bb334d775a19e8a6510109ac63e000000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d060000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d06000000000000000000000000999ce0ce8c5f7661e0c74a568ffe27ceb9177bdb00000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  Owner setup in order; every call sends 0 ETH:\n  1a. FIRST furniture grantMinter(raffle)\n  to 0x104fBc016F4bb334D775a19E8A6510109AC63E00\n  0x261707fa0000000000000000000000007fdb3132ff7d02d8b9e221c61cc895ce9a4bb773\n  1b. FIRST staking grantSpender(raffle)\n  to 0xDDc10602782af652bB913f7bdE1fD82981Db7dd9\n  0x5a4b61980000000000000000000000007fdb3132ff7d02d8b9e221c61cc895ce9a4bb773\n  2a. furniture setBaseURI\n  to 0x104fBc016F4bb334D775a19E8A6510109AC63E00\n  0x55f804b30000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002068747470733a2f2f776f726c642e6f67636c75622e6f6e6c696e652f6e66742f\n  2b. clubs setBaseURI\n  to 0xfD07C974e33dd1626640bA3a5acF0418FaacCA7a\n  0x55f804b30000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f776f726c642e6f67636c75622e6f6e6c696e652f636c75622f00000000000000000000000000000000000000000000000000000000000000\n  3. clubs setFootprints (24 final definitions, one atomic batch)\n  to 0xfD07C974e33dd1626640bA3a5acF0418FaacCA7a\n  0xb16e1514000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000009e00000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001300000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000015000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000\n  4. ONLY WHEN LAUNCH IS ANNOUNCED: clubs setSaleOpen(true)\n  to 0xfD07C974e33dd1626640bA3a5acF0418FaacCA7a\n  0xaf979f250000000000000000000000000000000000000000000000000000000000000001\n  Later Safe handoff: current owner calls transferOwnership(Safe) on EACH of the five contracts;\n  the Safe calls acceptOwnership() on EACH. Accept calldata:\n  0x79ba5097\n\n[PASS] test_PrintedOwnerCallsConfigureExactCatalogueAndPreserveDelayedLaterGrants() (gas: 1740357)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 126.14ms (123.49ms CPU time)\n\nRan 9 tests for test/ClubsDeployment.t.sol:ClubsDeploymentTest\n[PASS] test_EmptyFootprintsAreExplicitlyUnconfiguredAndScriptsEnforceChain() (gas: 24446367)\nLogs:\n  MockOG (unrestricted testnet mint) 0x2146bCE9584Fb42179531b017C0a28B45357DCfA\n  MockOG constructor args (initialRecipient):\n  0x00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a57\n  OGClubFurniture 0x7e670b34e14F0546c1ee28B1DcBd0F219eBaCf3B\n  OGClubFurniture constructor args (owner, royaltyReceiver):\n  0x00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a570000000000000000000000007ad1e3cd95db13f7970851d8a4706eb5254ef2cc\n  OGClubFarmVault 0x50db4e46F59C25BC6D0F65917277f3C00229F306\n  OGClubFarmVault constructor args (token, owner):\n  0x0000000000000000000000002146bce9584fb42179531b017c0a28b45357dcfa00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a57\n  MockSwarmPepe (public mint, Sepolia/local only) 0x0e02c420C2EC8e6bc1F5499F265332C736C8748a\n  MockSwarmPepe constructor args: none\n  OGClubClubs 0x79c936D495EdaDFC6A2Cb0D0B189bDf811527dCf\n  OGClubClubs constructor args (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x0000000000000000000000002146bce9584fb42179531b017c0a28b45357dcfa00000000000000000000000050db4e46f59c25bc6d0f65917277f3c00229f30600000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000007e670b34e14f0546c1ee28b1dcbd0f219ebacf3b00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a570000000000000000000000007ad1e3cd95db13f7970851d8a4706eb5254ef2cc0000000000000000000000000e02c420c2ec8e6bc1f5499f265332c736c8748a00000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  token 0x2146bCE9584Fb42179531b017C0a28B45357DCfA\n  vault 0x50db4e46F59C25BC6D0F65917277f3C00229F306\n  price (token base units) 100000000000000000000000\n  furniture 0x7e670b34e14F0546c1ee28B1DcBd0F219eBaCf3B\n  owner 0x73258404819B10B2F0Cf91BFC76F08b28B4e9A57\n  royaltyReceiver 0x7aD1E3Cd95dB13F7970851D8a4706Eb5254eF2cC\n  Swarm Pepes 0x0e02c420C2EC8e6bc1F5499F265332C736C8748a\n  delegate.xyz registry 0x00000000000000447e69651d841bD8D104Bed493\n  level 2 price 200000000000000000000000\n  level 3 price 400000000000000000000000\n  level 4 price 800000000000000000000000\n  saleOpen true\n\n[PASS] test_FactoryConstructorWorksOnEmptyChainWithExplicitOwnerAndBoundedRuntime() (gas: 15130175)\n[PASS] test_FootprintJSONValidatesBeforeDeploymentWithoutTruncation() (gas: 10850219)\n[PASS] test_MainnetScriptDeploysFromSeparateKeyWithContractOwnerAndLeavesSetupToOwner() (gas: 9928269)\nLogs:\n  OGClubClubs 0x30A83F5e57Fa28a89b559850E586e08549eCbBc1\n  OGClubClubs constructor args (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x0000000000000000000000005615deb798bb3e4dfa0139dfa1b3d433cc23b72f0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b000000000000000000000000000000000000000000000000000000000000007b0000000000000000000000004483b2254437483025732348c2b668986ce9df26000000000000000000000000f62849f9a0b5bf2913b396098f7c7019b51a820a0000000000000000000000007ad1e3cd95db13f7970851d8a4706eb5254ef2cc00000000000000000000000052e9a3dde7ff1018cc104248afb1c29e7b211f3800000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  token 0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f\n  vault 0x2e234DAe75C793f67A35089C9d99245E1C58470b\n  price (token base units) 123\n  furniture 0x4483b2254437483025732348c2B668986cE9dF26\n  owner 0xF62849F9A0B5Bf2913b396098F7c7019b51A820a\n  royaltyReceiver 0x7aD1E3Cd95dB13F7970851D8a4706Eb5254eF2cC\n  Swarm Pepes 0x52e9a3DDE7Ff1018Cc104248afb1c29E7B211F38\n  delegate.xyz registry 0x00000000000000447e69651d841bD8D104Bed493\n  level 2 price 200000000000000000000000\n  level 3 price 400000000000000000000000\n  level 4 price 800000000000000000000000\n  saleOpen false\n  OWNER must send this setFootprints batch to OGClubClubs before opening the sale:\n  0xb16e1514000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001\n  OWNER must set the club metadata URI:\n  0x55f804b30000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f776f726c642e6f67636c75622e6f6e6c696e652f636c75622f00000000000000000000000000000000000000000000000000000000000000\n  After reviewing footprints and metadata, OWNER may open the sale with:\n  0xaf979f250000000000000000000000000000000000000000000000000000000000000001\n\n[PASS] test_MainnetScriptRejectsWrongVaultTokenBeforeDeploying() (gas: 6218600)\n[PASS] test_MockPepePublicMintIsSepoliaFixtureAndCannotRemint() (gas: 2802391)\n[PASS] test_PredictedSelfVaultIsRejected() (gas: 14902)\n[PASS] test_SepoliaScriptDeploysRealDependenciesConfiguresAndOpensSale() (gas: 18931689)\nLogs:\n  MockOG (unrestricted testnet mint) 0x2146bCE9584Fb42179531b017C0a28B45357DCfA\n  MockOG constructor args (initialRecipient):\n  0x00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a57\n  OGClubFurniture 0x7e670b34e14F0546c1ee28B1DcBd0F219eBaCf3B\n  OGClubFurniture constructor args (owner, royaltyReceiver):\n  0x00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a570000000000000000000000007ad1e3cd95db13f7970851d8a4706eb5254ef2cc\n  OGClubFarmVault 0x50db4e46F59C25BC6D0F65917277f3C00229F306\n  OGClubFarmVault constructor args (token, owner):\n  0x0000000000000000000000002146bce9584fb42179531b017c0a28b45357dcfa00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a57\n  MockSwarmPepe (public mint, Sepolia/local only) 0x0e02c420C2EC8e6bc1F5499F265332C736C8748a\n  MockSwarmPepe constructor args: none\n  OGClubClubs 0x79c936D495EdaDFC6A2Cb0D0B189bDf811527dCf\n  OGClubClubs constructor args (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x0000000000000000000000002146bce9584fb42179531b017c0a28b45357dcfa00000000000000000000000050db4e46f59c25bc6d0f65917277f3c00229f30600000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000007e670b34e14f0546c1ee28b1dcbd0f219ebacf3b00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a570000000000000000000000007ad1e3cd95db13f7970851d8a4706eb5254ef2cc0000000000000000000000000e02c420c2ec8e6bc1f5499f265332c736c8748a00000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  token 0x2146bCE9584Fb42179531b017C0a28B45357DCfA\n  vault 0x50db4e46F59C25BC6D0F65917277f3C00229F306\n  price (token base units) 100000000000000000000000\n  furniture 0x7e670b34e14F0546c1ee28B1DcBd0F219eBaCf3B\n  owner 0x73258404819B10B2F0Cf91BFC76F08b28B4e9A57\n  royaltyReceiver 0x7aD1E3Cd95dB13F7970851D8a4706Eb5254eF2cC\n  Swarm Pepes 0x0e02c420C2EC8e6bc1F5499F265332C736C8748a\n  delegate.xyz registry 0x00000000000000447e69651d841bD8D104Bed493\n  level 2 price 200000000000000000000000\n  level 3 price 400000000000000000000000\n  level 4 price 800000000000000000000000\n  saleOpen true\n\n[PASS] test_SevenContractFactoryDeploymentInOneTransactionPreservesOwnersAndBootstrap() (gas: 53502266)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 136.80ms (264.19ms CPU time)\n\nRan 6 tests for test/Gas.t.sol:GasTest\n[PASS] test_GasClaimOne() (gas: 954101)\nLogs:\n  Claim one win / fresh furniture wallet\n  Cancun call gas: 160885\n  New persistent slots: 4\n  EIP-8037 state gas: 391680\n  EIP-8037 storage-repriced call gas: 472565\n\n[PASS] test_GasClaimTen() (gas: 2860761)\nLogs:\n  Claim ten distinct items / fresh furniture wallet\n  Cancun call gas: 816170\n  New persistent slots: 22\n  EIP-8037 state gas: 2154240\n  EIP-8037 storage-repriced call gas: 2530410\n\n[PASS] test_GasDraw() (gas: 418645)\nLogs:\n  Draw / 23-field synthetic header\n  Cancun call gas: 74312\n  New persistent slots: 1\n  EIP-8037 state gas: 97920\n  EIP-8037 storage-repriced call gas: 152232\n\n[PASS] test_GasEnter() (gas: 558676)\nLogs:\n  First entry / ten tickets / first points checkpoint\n  Cancun call gas: 155364\n  New persistent slots: 4\n  EIP-8037 state gas: 391680\n  EIP-8037 storage-repriced call gas: 467044\n\n[PASS] test_GasFirstStake() (gas: 200138)\nLogs:\n  First-ever stake / fresh staker\n  Cancun call gas: 120547\n  New persistent slots: 3\n  EIP-8037 state gas: 293760\n  EIP-8037 storage-repriced call gas: 354307\n\n[PASS] test_GasUnstake() (gas: 308132)\nLogs:\n  Partial unstake / first fee / first checkpoint\n  Cancun call gas: 110662\n  New persistent slots: 2\n  EIP-8037 state gas: 195840\n  EIP-8037 storage-repriced call gas: 266502\n\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 18.36ms (17.33ms CPU time)\nWarning: the following cheatcode(s) are deprecated and will be removed in future versions:\n  lastCallGas(): replaced by `lastFrameGas`\n\nRan 10 tests for test/ClubsReview.t.sol:ClubsReviewLevelsTest\n[PASS] test_BadLevelViewsRevert() (gas: 49368)\n[PASS] test_DoorBlockedByMultiTilePiecesAtEveryLevel() (gas: 4152747)\n[PASS] test_EverySingleTileAtEveryLevelAgainstModel() (gas: 271242677)\n[PASS] test_ExpansionEdgesRevertBeforeAndWorkAfterAndPiecesKeepTiles() (gas: 2689418)\n[PASS] test_FloorMasksMatchCoordinateRulesBitForBit() (gas: 501808)\n[PASS] test_LevelFollowsClubTransfer() (gas: 378429)\n[PASS] test_MintAtLevelOnePricesAndViews() (gas: 46962)\n[PASS] test_OnlyHolderOrApprovedUpgradesAndCallerPays() (gas: 705504)\n[PASS] test_UpgradeOneWeiShortRevertsAtomically() (gas: 513539)\n[PASS] test_UpgradeToFourExactSplitsReceiptsEvents() (gas: 497786)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 362.47ms (363.71ms CPU time)\n\nRan 13 tests for test/OGClubClubs.t.sol:ClubsMintTest\n[PASS] testFuzz_PaymentConservation(uint128,uint8) (runs: 256, μ: 2435771, ~: 1987173)\nLogs:\n  Bound result 365171547050976\n  Bound result 1\n\n[PASS] test_BurnSinkCannotAlsoBeVaultAndPayerCannotPayItself() (gas: 21192)\n[PASS] test_ClosedSaleAndNonHolder() (gas: 170614)\n[PASS] test_ExactOddSplitMintEventsAndEnumerationThroughTransfers() (gas: 767355)\n[PASS] test_IdentityInterfacesAndEmptyClub() (gas: 208278)\n[PASS] test_NonReceiverRollsBackPaymentAndPepeEligibility() (gas: 805099)\n[PASS] test_ReceiverCannotDoubleMintAndMayRejectAtomically() (gas: 1487824)\n[PASS] test_SecondRecipientAndFinalFirstRecipientBalancesMustBothMatch() (gas: 1821839)\n[PASS] test_ShortApprovalRollsBackFirstLeg() (gas: 242315)\n[PASS] test_ShortBalanceRollsBackFirstLeg() (gas: 388943)\n[PASS] test_TaxedTokensAndFalseReturnsRevertAtomically() (gas: 1787558)\n[PASS] test_TokenCallbackCannotReenterMintOrUpgrade() (gas: 1831691)\n[PASS] test_ZeroBurnAtPriceOneAndNoReturnToken() (gas: 702030)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 370.95ms (373.24ms CPU time)\n\nRan 15 tests for test/OGClubStaking.t.sol:StakingTest\n[PASS] testFuzz_CheckpointFrequencyDoesNotChangePoints(uint96,uint32,uint8) (runs: 256, μ: 1148274, ~: 802386)\nLogs:\n  Bound result 3888\n  Bound result 41\n  Bound result 3\n\n[PASS] testFuzz_FeeRoundsUpAndConservesBalance(uint96) (runs: 256, μ: 282894, ~: 283052)\nLogs:\n  Bound result 293\n\n[PASS] testFuzz_WholeTokenAccrualAcrossSupportedDecimals(uint8,uint96,uint32) (runs: 256, μ: 1219250, ~: 1219445)\nLogs:\n  Bound result 3\n  Bound result 1155599048\n  Bound result 1852682\n\n[PASS] test_AccrueBeforeBalanceChangesAndNoLock() (gas: 427758)\n[PASS] test_CheckpointsPreserveSubWeiAccrualAndFullExitFraction() (gas: 1366740)\n[PASS] test_DecimalsReadOnFirstUseAndNormalizeWholeTokens() (gas: 2190760)\n[PASS] test_DonationsNeitherCreateStakeNorAwardPoints() (gas: 343342)\n[PASS] test_ExactContinuousAccrualAtBoundariesAndSpend() (gas: 299793)\n[PASS] test_FeeOnTransferCreditsOnlyReceivedAndCannotInflatePoints() (gas: 381142)\n[PASS] test_InvalidAmountsUnauthorizedSpendAndOwnerCannotTouchStakes() (gas: 406963)\n[PASS] test_MaximumPackedBalanceAndRateAccrueWithoutIntermediateOverflow() (gas: 448069)\n[PASS] test_NoReturnAndFalseReturnTokens() (gas: 734103)\n[PASS] test_TinyUnstakesAlwaysPayFee() (gas: 360201)\n[PASS] test_TokenCallbackCannotSpendOrReenterStakeOrUnstake() (gas: 685618)\n[PASS] test_ZeroReceiptAndSenderSideFeeRevertAtomically() (gas: 554565)\nSuite result: ok. 15 passed; 0 failed; 0 skipped; finished in 519.79ms (539.02ms CPU time)\n\nRan 6 tests for test/RaffleAtomicity.t.sol:RaffleAtomicityTest\n[PASS] testFuzz_MultiItemClaimsCanBeShuffledAndFragmented(uint8[4],bytes32) (runs: 512, μ: 3823898, ~: 3775990)\nLogs:\n  Bound result 6\n  Bound result 1\n  Bound result 6\n  Bound result 1\n\n[PASS] test_ClaimBitmapIsIndependentAcrossRafflesAndPools() (gas: 2082130)\n[PASS] test_LateInvalidEntryRollsBackAnEarlierWalletMint() (gas: 1264278)\n[PASS] test_LateInvalidPoolCreationDoesNotLeaveRaffleOrPrizeStorage() (gas: 507505)\n[PASS] test_LateReceiverRejectionRollsBackPreviouslyMintedWalletGroup() (gas: 2144305)\n[PASS] test_PrizeLimitAppliesToSumAcrossLinesAndRollbackAllowsReuse() (gas: 498160)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 464.20ms (466.91ms CPU time)\n\nRan 6 tests for test/ClubsReview.t.sol:ClubsReviewWallsTest\n[PASS] test_BadWallCoordinatesRevert() (gas: 551743)\n[PASS] test_DoorPositionOnSideOne() (gas: 837622)\n[PASS] test_EveryWidthStartAndSideAtEveryLevelAgainstModel() (gas: 422207016)\n[PASS] test_OverlapPerSideAndSidesAndFloorIndependent() (gas: 1368354)\n[PASS] test_PastEndThenFitsAfterUpgrade() (gas: 1960110)\n[PASS] test_WallFootprintRulesAndLockCarriesFlag() (gas: 547448)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 547.62ms (547.33ms CPU time)\n\nRan 30 tests for test/ClubsAdversarial.t.sol:ClubsAdversarialTest\n[PASS] testFuzz_SingleTileDoorRuleIsExactlyTheTwoDoorTiles(uint8,uint8) (runs: 512, μ: 228575, ~: 231676)\nLogs:\n  Bound result 4\n  Bound result 0\n\n[PASS] testFuzz_SplitForAnyPrice(uint256,uint8) (runs: 512, μ: 1389378, ~: 1148660)\nLogs:\n  Bound result 327595911752326497029178240613551261955\n  Bound result 4\n\n[PASS] test_AmountZeroAndTwoRejected() (gas: 135003)\n[PASS] test_ApprovalForOneClubDoesNotExtendToAnother() (gas: 1061295)\n[PASS] test_ClubApprovalsGrantPlacementAndRevocationRemovesIt() (gas: 831708)\n[PASS] test_ContractHolderThatCannotReceiveReverts() (gas: 742400)\n[PASS] test_EveryShapeThatTouchesEitherDoorTileIsRejected() (gas: 1547282)\n[PASS] test_ExactRightAndBottomEdgesFitAndOneMoreDoesNot() (gas: 903478)\n[PASS] test_ExactlyPriceAllowanceAndBalanceSucceedOneWeiShortFails() (gas: 795370)\n[PASS] test_FootprintBoundsAndOwnerOnly() (gas: 249143)\n[PASS] test_FootprintIsFinalFromDefinitionAndPlacementStillMarksLegacyLock() (gas: 752176)\n[PASS] test_FullRoomRejectsEverythingElse() (gas: 28207981)\n[PASS] test_FurnitureOperatorOfAStrangerCannotPlaceIntoOperatorsOwnClub() (gas: 142507)\n[PASS] test_HookCalledDirectlyByAnyoneButFurnitureIsRejected() (gas: 73460)\n[PASS] test_InterfacesAndImmutables() (gas: 142297)\n[PASS] test_MalformedDataAlwaysReverts() (gas: 649467)\n[PASS] test_MetadataAndRoyaltyEdges() (gas: 360810)\n[PASS] test_MintPaysFromCallerAndClosingSaleStopsMinting() (gas: 627615)\n[PASS] test_MinterCannotPushFurnitureStraightIntoTheClubContract() (gas: 196893)\n[PASS] test_MissingClubIdsRejectedIncludingZeroAndMax() (gas: 489457)\n[PASS] test_NobodyCanMoveFurnitureOutOfTheContract() (gas: 359245)\n[PASS] test_OverlapAtASingleSharedTileIsRejected() (gas: 1204602)\n[PASS] test_PendingOwnerHasNoPowerUntilAcceptAndOldOwnerLosesIt() (gas: 239573)\n[PASS] test_ReentrantReceiverPlacesButCannotMintTwice() (gas: 1460687)\n[PASS] test_RenouncedOwnershipKeepsPlacementWorking() (gas: 282678)\n[PASS] test_RotationSwapsOnlyOnOddRotations() (gas: 1478988)\n[PASS] test_TileTakenViewBounds() (gas: 56614)\n[PASS] test_TransferredClubKeepsLayoutAndMovesPlacementRight() (gas: 1112467)\n[PASS] test_Uint8ExtremesAndRotFourAreOutOfRoom() (gas: 1014316)\n[PASS] test_UnfootprintedIdRejectedAndDoesNotLock() (gas: 448312)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 886.49ms (921.16ms CPU time)\n\nRan 1 test for test/ClubsReview.t.sol:ClubsReviewFuzzTest\n[PASS] testFuzz_RandomSequencesMatchModel(uint256) (runs: 200, μ: 16629650, ~: 16773738)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 887.87ms (885.69ms CPU time)\n\nRan 1 test for test/ClubsLaunchInvariant.t.sol:ClubsLaunchFuzzTest\n[PASS] testFuzz_LevelsWallsFloorShapesRotationsAndDuplicateDesigns(bytes32) (runs: 256, μ: 34607513, ~: 34571046)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.61s (1.61s CPU time)\n\nRan 3 tests for test/Permutation.t.sol:PermutationTest\n[PASS] testFuzz_LargeDomainsInRangeAndDistinct(uint48,uint48,uint48,bytes32) (runs: 256, μ: 19399, ~: 18133)\nLogs:\n  Bound result 89118135135\n\n[PASS] testFuzz_SmallDomainsAreBijections(uint8,bytes32) (runs: 256, μ: 544360, ~: 121719)\nLogs:\n  Bound result 122\n\n[PASS] test_InvalidDomainAndIndexRejected() (gas: 211485)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.61s (1.61s CPU time)\n\nRan 1 test for test/VaultInvariant.t.sol:VaultInvariantTest\n[PASS] invariant_VaultAlwaysCoversReservationsAndOnlyClaimsMoveTokens() (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------+----------+-------+---------+----------╮\n| Contract     | Selector | Calls | Reverts | Discards |\n+======================================================+\n| VaultHandler | advance  | 1324  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| VaultHandler | cancel   | 1381  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| VaultHandler | claim    | 1402  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| VaultHandler | fund     | 1347  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| VaultHandler | propose  | 1368  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| VaultHandler | release  | 1370  | 0       | 0        |\n╰--------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 1000000000000000000000\n  Bound result 100000000000000000000\n  Bound result 604800\n  Bound result 100000000000000000000\n  Bound result 259200\n  Bound result 345600\n  Bound result 100000000000000000000\n  Bound result 8035200\n  Bound result 1001\n  Bound result 1001\n  Bound result 3575\n  Bound result 7172\n  Bound result 72\n  Bound result 514264337593543950335\n  Bound result 7036\n  Bound result 1001\n  Bound result 188509602034755484695\n  Bound result 804\n  Bound result 1069\n  Bound result 377\n  Bound result 65\n  Bound result 15296\n  Bound result 1001\n  Bound result 523433401375661689600\n  Bound result 49152\n  Bound result 6\n  Bound result 1\n  Bound result 12\n  Bound result 2015\n  Bound result 1001\n  Bound result 1605765\n  Bound result 866525687846678260565\n  Bound result 6281289\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.57s (1.56s CPU time)\n\nRan 1 test for test/StakingInvariant.t.sol:FeeStakingInvariantTest\n[PASS]\nFeeStakingInvariantTest invariants:\n[PASS] invariant_PointsAppearOnlyByTimeWeightedAccrualAndLeaveOnlyBySpending\n[PASS] invariant_StakingBalanceEqualsAllStakes\n FeeStakingInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭----------------+-------------------+-------+---------+----------╮\n| Contract       | Selector          | Calls | Reverts | Discards |\n+=================================================================+\n| StakingHandler | advance           | 1641  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | spend             | 1579  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | stake             | 1664  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | unauthorizedSpend | 1612  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | unstake           | 1696  | 0       | 0        |\n╰----------------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 10000000000000000000\n  Bound result 86400\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 8766645973316035591\n  Bound result 0\n  Bound result 1001\n  Bound result 7\n  Bound result 0\n  Bound result 6264337593543950335\n  Bound result 1001\n  Bound result 1159\n  Bound result 1203\n  Bound result 23\n  Bound result 742021439101673\n  Bound result 7\n  Bound result 27810568\n  Bound result 20\n  Bound result 7581\n  Bound result 2852\n  Bound result 4794\n  Bound result 4074\n  Bound result 1001\n  Bound result 1001\n  Bound result 514264337593543950335\n  Bound result 26538321317662994\n  Bound result 96664526\n  Bound result 20839871\n  Bound result 1744\n  Bound result 5621\n  Bound result 863999\n  Bound result 55\n  Bound result 999999999999999999\n  Bound result 0\n  Bound result 3403\n  Bound result 1001\n  Bound result 2179\n  Bound result 6307\n  Bound result 1001\n  Bound result 2\n  Bound result 284\n  Bound result 514264337593543950335\n  Bound result 1001\n  Bound result 1811\n  Bound result 1001\n  Bound result 5795278380\n  Bound result 2879\n  Bound result 514264337593543950334\n  Bound result 198\n  Bound result 154088948358706631171\n  Bound result 6802805610\n  Bound result 18322\n  Bound result 1001\n  Bound result 370533851\n  Bound result 3033\n  Bound result 762\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.90s (1.90s CPU time)\n\nRan 1 test for test/StakingInvariant.t.sol:StakingInvariantTest\n[PASS]\nStakingInvariantTest invariants:\n[PASS] invariant_PointsAppearOnlyByTimeWeightedAccrualAndLeaveOnlyBySpending\n[PASS] invariant_StakingBalanceEqualsAllStakes\n StakingInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭----------------+-------------------+-------+---------+----------╮\n| Contract       | Selector          | Calls | Reverts | Discards |\n+=================================================================+\n| StakingHandler | advance           | 1641  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | spend             | 1579  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | stake             | 1664  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | unauthorizedSpend | 1612  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | unstake           | 1696  | 0       | 0        |\n╰----------------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 10000000000000000000\n  Bound result 86400\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 2566645973319348953\n  Bound result 0\n  Bound result 1001\n  Bound result 7\n  Bound result 3339054996095811515\n  Bound result 2264337593543950335\n  Bound result 1001\n  Bound result 1148\n  Bound result 889\n  Bound result 23\n  Bound result 742021439101673\n  Bound result 0\n  Bound result 27810568\n  Bound result 1001\n  Bound result 7433\n  Bound result 2806\n  Bound result 2154\n  Bound result 229\n  Bound result 82\n  Bound result 1001\n  Bound result 514264337593543950335\n  Bound result 2222719342355442645\n  Bound result 7175\n  Bound result 60913996485437614427\n  Bound result 6164\n  Bound result 4594637\n  Bound result 863999\n  Bound result 55\n  Bound result 49\n  Bound result 0\n  Bound result 3270\n  Bound result 1001\n  Bound result 2125\n  Bound result 36343\n  Bound result 1001\n  Bound result 2\n  Bound result 3697\n  Bound result 514264337593543950335\n  Bound result 1001\n  Bound result 1679\n  Bound result 1001\n  Bound result 5795278380\n  Bound result 199246\n  Bound result 514264337593543950334\n  Bound result 198\n  Bound result 154088948358706631171\n  Bound result 6802805610\n  Bound result 18322\n  Bound result 1001\n  Bound result 4076725130\n  Bound result 729\n  Bound result 6164\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.06s (2.06s CPU time)\n\nRan 1 test for test/ClubsInvariant.t.sol:ClubsLayoutFuzzTest\n[PASS] testFuzz_RandomPlacementSequenceMatchesIndependentGridAndFailuresAreAtomic(bytes32) (runs: 256, μ: 94682691, ~: 94644895)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.84s (2.83s CPU time)\n\nRan 23 tests for test/OGClubRaffle.t.sol:RaffleTest\n[PASS] testFuzz_ExactlyMinPrizesAndTicketsWinWithNoDuplicateTicket(uint8,uint8,bytes32) (runs: 256, μ: 1645776, ~: 1076919)\nLogs:\n  Bound result 3\n  Bound result 8\n\n[PASS] testFuzz_NoticeAlwaysMeasuredFromCreation(uint32) (runs: 256, μ: 241084, ~: 240936)\nLogs:\n  Bound result 5\n\n[PASS] test_ClaimToCannotRedirectAnotherWalletInTheSameBatch() (gas: 1239609)\n[PASS] test_ContractWalletCanRedirectButNobodyElseCan() (gas: 2015153)\n[PASS] test_DrawHeaderAndTargetExactBoundaries() (gas: 641712)\n[PASS] test_DuplicateWithinBatchRollsBackEverythingAndBitmapCrossesWords() (gas: 937264)\n[PASS] test_EntryFailureRollsBackRangesCapsAndPoints() (gas: 833603)\n[PASS] test_EntryWindowAndWalletCapExactBoundaries() (gas: 808341)\n[PASS] test_HugeTicketAndPrizeCountsDoNotRequireIterationToDrawOrClaim() (gas: 925425)\n[PASS] test_InvalidConfigurationPoolsLinesAndTickets() (gas: 941928)\n[PASS] test_Maximum32PoolsAnd128PrizeLines() (gas: 15557738)\n[PASS] test_MultiItemPoolMintsExactQuantitiesIncludingDuplicateAndZeroIds() (gas: 2370129)\n[PASS] test_NoticeExactBoundariesAndCancellation() (gas: 540021)\n[PASS] test_OwnerCannotModifyTermsPauseOrCancelStartedRaffle() (gas: 450829)\n[PASS] test_ReceiverCannotReenterEitherClaimPath() (gas: 1991045)\n[PASS] test_RejectingWalletDoesNotBlockOtherWinnersAndEmptyClaimRejected() (gas: 2030167)\n[PASS] test_RetargetOnlyAt257AndOldHeaderCannotDrawNewTarget() (gas: 560166)\n[PASS] test_RevokedMinterClaimIsRetryableAndDoesNotReroll() (gas: 1017518)\n[PASS] test_TicketPriceMultiplicationOverflowDoesNotSpendOrRecordEntry() (gas: 370843)\n[PASS] test_UnlimitedCapIsPerPoolAndRangesStayContiguous() (gas: 878602)\n[PASS] test_UnsoldPrizesAreRandomPositionsNotAlwaysTheTail() (gas: 3336643)\n[PASS] test_WrongKEntryAndDoubleClaimsRevertAtomically() (gas: 1332250)\n[PASS] test_WrongNumberInAuthenticatedHeaderRejected() (gas: 365306)\nSuite result: ok. 23 passed; 0 failed; 0 skipped; finished in 2.84s (570.21ms CPU time)\n\nRan 2 tests for test/ClubsReviewInvariant.t.sol:ClubsReviewInvariantTest\n[PASS]\nClubsReviewInvariantTest invariants:\n[PASS] invariant_EveryClubIsAPepeThatMintedOnce\n[PASS] invariant_NoOGHeldAndPaymentsSplitExactly\n[PASS] invariant_PiecesEqualFurnitureHeldAndLayoutsValid\n ClubsReviewInvariantTest invariants (runs: 64, calls: 5120, reverts: 0)\n\n╭--------------------+--------------+-------+---------+----------╮\n| Contract           | Selector     | Calls | Reverts | Discards |\n+================================================================+\n| ClubsReviewHandler | approveClub  | 577   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | delegate     | 579   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | mintClub     | 565   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | mintPepe     | 540   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | place        | 578   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | setSale      | 568   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | transferClub | 539   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | transferPepe | 613   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | upgrade      | 561   | 0       | 0        |\n╰--------------------+--------------+-------+---------+----------╯\n\n[PASS] test_HandlerExercisesEveryPath() (gas: 7967473)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 3.16s (3.16s CPU time)\n\nRan 1 test for test/FurnitureInvariant.t.sol:FurnitureInvariantTest\n[PASS]\nFurnitureInvariantTest invariants:\n[PASS] invariant_BalancesAndSupplyMatchGhosts\n[PASS] invariant_FrozenMetadataNeverChangesAndRoyaltyIsBounded\n[PASS] invariant_OwnerNeverHoldsOrDestroysAnything\n FurnitureInvariantTest invariants (runs: 96, calls: 7680, reverts: 0)\n\n╭------------------+--------------------------+-------+---------+----------╮\n| Contract         | Selector                 | Calls | Reverts | Discards |\n+==========================================================================+\n| FurnitureHandler | mint                     | 1125  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | operatorBatchTransfer    | 1134  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | ownerMetadata            | 1030  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | ownerTriesToSeize        | 1057  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | revokeApproval           | 1102  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | strangerCannotAdminister | 1157  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | transfer                 | 1075  | 0       | 0        |\n╰------------------+--------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 5\n  Bound result 14\n  Bound result 14\n  Bound result 14\n  Bound result 1\n  Bound result 2\n  Bound result 2\n  Bound result 14\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 14\n  Bound result 0\n  Bound result 14\n  Bound result 0\n  Bound result 1\n  Bound result 3\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 9\n  Bound result 0\n  Bound result 1044\n  Bound result 960\n  Bound result 3\n  Bound result 0\n  Bound result 10\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 5\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 9\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 15\n  Bound result 7\n  Bound result 515\n  Bound result 17\n  Bound result 14\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 10\n  Bound result 0\n  Bound result 20\n  Bound result 14\n  Bound result 0\n  Bound result 0\n  Bound result 18\n  Bound result 0\n  Bound result 2\n  Bound result 0\n  Bound result 2\n  Bound result 0\n  Bound result 0\n  Bound result 16\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 13\n  Bound result 1\n  Bound result 13\n  Bound result 13\n  Bound result 2\n  Bound result 4\n  Bound result 6\n  Bound result 5\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 14\n  Bound result 7\n  Bound result 1\n  Bound result 1\n  Bound result 14\n  Bound result 8\n  Bound result 1\n  Bound result 0\n  Bound result 3\n  Bound result 9\n  Bound result 4\n  Bound result 21\n  Bound result 3\n  Bound result 4\n  Bound result 1\n  Bound result 1\n  Bound result 7\n  Bound result 4\n  Bound result 0\n  Bound result 14\n  Bound result 8\n  Bound result 0\n  Bound result 4\n  Bound result 3\n  Bound result 1\n  Bound result 4\n  Bound result 1\n  Bound result 1\n  Bound result 1\n  Bound result 0\n  Bound result 6\n  Bound result 14\n  Bound result 0\n  Bound result 1\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 4.95s (4.94s CPU time)\n\nRan 1 test for test/FeeFlowInvariant.t.sol:TaxedFeeFlowInvariantTest\n[PASS]\nTaxedFeeFlowInvariantTest invariants:\n[PASS] invariant_EachReservationEqualsUnpaidAllocationsOfAnOpenSeason\n[PASS] invariant_PointsConservedThroughPartialExitsClaimsAndRestakes\n[PASS] invariant_TokensConservedAcrossStakeFeeVaultPayoutAndBurn\n TaxedFeeFlowInvariantTest invariants (runs: 128, calls: 12288, reverts: 0)\n\n╭----------------+-----------+-------+---------+----------╮\n| Contract       | Selector  | Calls | Reverts | Discards |\n+=========================================================+\n| FeeFlowHandler | advance   | 1157  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | badProof  | 1051  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | cancel    | 1089  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | claim     | 1105  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | exit      | 1112  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | overspend | 1117  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | propose   | 1116  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | release   | 1108  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | spend     | 1106  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | stake     | 1174  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | unstake   | 1153  | 0       | 0        |\n╰----------------+-----------+-------+---------+----------╯\n\nLogs:\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 50000000000\n  Bound result 100000000\n  Bound result 604800\n  Bound result 100000000\n  Bound result 259200\n  Bound result 1000000000000000000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 40000000\n  Bound result 7\n  Bound result 1001\n  Bound result 1928028033\n  Bound result 90571971967\n  Bound result 1001\n  Bound result 555\n  Bound result 41889\n  Bound result 4\n  Bound result 5986\n  Bound result 42499998999\n  Bound result 92500000000\n  Bound result 1001\n  Bound result 80\n  Bound result 92499998999\n  Bound result 13469\n  Bound result 900\n  Bound result 13518\n  Bound result 12606\n  Bound result 11661\n  Bound result 1912514264337144714790575\n  Bound result 10431248722022807091781893\n  Bound result 1001\n  Bound result 64\n  Bound result 8446\n  Bound result 1001\n  Bound result 7852840661987759\n  Bound result 252649\n  Bound result 5468\n  Bound result 10864\n  Bound result 1001\n  Bound result 6723\n  Bound result 6990\n  Bound result 86\n  Bound result 18969\n  Bound result 1299110083\n  Bound result 1201676827\n  Bound result 14559\n  Bound result 888537872939\n  Bound result 7813\n  Bound result 821897532469\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 6.69s (6.69s CPU time)\n\nRan 1 test for test/FeeFlowInvariant.t.sol:FeeFlowInvariantTest\n[PASS]\nFeeFlowInvariantTest invariants:\n[PASS] invariant_EachReservationEqualsUnpaidAllocationsOfAnOpenSeason\n[PASS] invariant_PointsConservedThroughPartialExitsClaimsAndRestakes\n[PASS] invariant_TokensConservedAcrossStakeFeeVaultPayoutAndBurn\n FeeFlowInvariantTest invariants (runs: 128, calls: 12288, reverts: 0)\n\n╭----------------+-----------+-------+---------+----------╮\n| Contract       | Selector  | Calls | Reverts | Discards |\n+=========================================================+\n| FeeFlowHandler | advance   | 1157  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | badProof  | 1051  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | cancel    | 1089  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | claim     | 1105  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | exit      | 1112  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | overspend | 1117  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | propose   | 1116  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | release   | 1108  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | spend     | 1106  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | stake     | 1174  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | unstake   | 1153  | 0       | 0        |\n╰----------------+-----------+-------+---------+----------╯\n\nLogs:\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 50000000000\n  Bound result 100000000\n  Bound result 604800\n  Bound result 100000000\n  Bound result 259200\n  Bound result 1000000000000000000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 40000000\n  Bound result 7\n  Bound result 1001\n  Bound result 638212886\n  Bound result 99361787114\n  Bound result 1001\n  Bound result 556015102\n  Bound result 41889\n  Bound result 4\n  Bound result 5922\n  Bound result 49999998999\n  Bound result 100000000000\n  Bound result 1001\n  Bound result 80\n  Bound result 12436\n  Bound result 900\n  Bound result 12966\n  Bound result 11841\n  Bound result 100000023806\n  Bound result 9863\n  Bound result 28162513775772144743947695\n  Bound result 28162514264337144854534655\n  Bound result 1001\n  Bound result 64\n  Bound result 7776\n  Bound result 1001\n  Bound result 7852840661987759\n  Bound result 1001\n  Bound result 252649\n  Bound result 1151\n  Bound result 1001\n  Bound result 5547\n  Bound result 10429\n  Bound result 86\n  Bound result 5922\n  Bound result 8103\n  Bound result 433\n  Bound result 968130330249\n  Bound result 968130330249\n  Bound result 8103\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 7.14s (7.13s CPU time)\n\nRan 1 test for test/ClubsAdversarialInvariant.t.sol:ClubsAdversarialInvariantTest\n[PASS]\nClubsAdversarialInvariantTest invariants:\n[PASS] invariant_LayoutsFitNeverOverlapNeverCoverDoor\n[PASS] invariant_LockedFootprintsNeverChange\n[PASS] invariant_NoTokensEverHeldAndSplitConserved\n[PASS] invariant_PiecesEqualCustodyPerItem\n ClubsAdversarialInvariantTest invariants (runs: 64, calls: 4096, reverts: 0)\n\n╭-------------------------+--------------+-------+---------+----------╮\n| Contract                | Selector     | Calls | Reverts | Discards |\n+=====================================================================+\n| AdversarialClubsHandler | approveClub  | 838   | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| AdversarialClubsHandler | mint         | 808   | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| AdversarialClubsHandler | place        | 818   | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| AdversarialClubsHandler | setFootprint | 826   | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| AdversarialClubsHandler | transferClub | 806   | 0       | 0        |\n╰-------------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 2\n  Bound result 2\n  Bound result 0\n  Bound result 5\n  Bound result 5\n  Bound result 1\n  Bound result 8\n  Bound result 5\n  Bound result 3\n  Bound result 8\n  Bound result 8\n  Bound result 0\n  Bound result 0\n  Bound result 6\n  Bound result 0\n  Bound result 10\n  Bound result 6\n  Bound result 0\n  Bound result 1\n  Bound result 7\n  Bound result 0\n  Bound result 3\n  Bound result 5\n  Bound result 0\n  Bound result 6\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 6\n  Bound result 4\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 7.39s (7.37s CPU time)\n\nRan 1 test for test/ClubsInvariant.t.sol:ClubsInvariantTest\n[PASS]\nClubsInvariantTest invariants:\n[PASS] invariant_EveryHeldFurniturePieceHasExactlyOnePermanentLayoutEntry\n[PASS] invariant_PaymentsNeverRemainInClubsAndSplitExactly\n ClubsInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| ClubsHandler | mint         | 2018  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| ClubsHandler | place        | 2032  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| ClubsHandler | sale         | 2059  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| ClubsHandler | transferClub | 2083  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 13.42s (13.41s CPU time)\n\nRan 1 test for test/ClubsLaunchInvariant.t.sol:ClubsLaunchInvariantTest\n[PASS]\nClubsLaunchInvariantTest invariants:\n[PASS] invariant_AllLayoutsMatchIndependentModelCustodyAndUniqueDesigns\n[PASS] invariant_EveryClubIsAPepeMintedExactlyOnceAndAllPaymentsConserved\n ClubsLaunchInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------------+--------------+-------+---------+----------╮\n| Contract           | Selector     | Calls | Reverts | Discards |\n+================================================================+\n| LaunchClubsHandler | approveClub  | 1018  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | delegatePepe | 1035  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | mint         | 1012  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | place        | 1026  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | sale         | 1002  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | transferClub | 1016  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | transferPepe | 968   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | upgrade      | 1115  | 0       | 0        |\n╰--------------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 21.43s (21.42s CPU time)\n\nRan 1 test for test/RaffleSequenceInvariant.t.sol:RaffleSequenceInvariantTest\n[PASS]\nRaffleSequenceInvariantTest invariants:\n[PASS] invariant_ClaimBitsMatchMintReceiptsAndNeverMintUnawardedPrizes\n[PASS] invariant_FinalizedDrawsAndTermsNeverChange\n[PASS] invariant_PointsSpentExactlyMatchAcceptedRanges\n RaffleSequenceInvariantTest invariants (runs: 128, calls: 12288, reverts: 0)\n\n╭-----------------------+----------+-------+---------+----------╮\n| Contract              | Selector | Calls | Reverts | Discards |\n+===============================================================+\n| RaffleSequenceHandler | advance  | 1572  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | badClaim | 1538  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | cancel   | 1447  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | claim    | 1505  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | commit   | 1490  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | create   | 1584  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | draw     | 1608  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | enter    | 1544  | 0       | 0        |\n╰-----------------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 86400\n  Bound result 0\n  Bound result 0\n  Bound result 5\n  Bound result 5\n  Bound result 2\n  Bound result 1\n  Bound result 172800\n  Bound result 0\n  Bound result 172800\n  Bound result 0\n  Bound result 172800\n  Bound result 0\n  Bound result 1\n  Bound result 86400\n  Bound result 0\n  Bound result 4\n  Bound result 92\n  Bound result 0\n  Bound result 215\n  Bound result 197\n  Bound result 53\n  Bound result 19\n  Bound result 2\n  Bound result 4\n  Bound result 108\n  Bound result 3\n  Bound result 66875\n  Bound result 37521\n  Bound result 287\n  Bound result 70783\n  Bound result 23\n  Bound result 55\n  Bound result 4\n  Bound result 157\n  Bound result 67\n  Bound result 192\n  Bound result 14\n  Bound result 807\n  Bound result 80\n  Bound result 4081\n  Bound result 297\n  Bound result 4\n  Bound result 63417\n  Bound result 254\n  Bound result 9063\n  Bound result 66\n  Bound result 7\n  Bound result 133\n  Bound result 2\n  Bound result 7\n  Bound result 9\n  Bound result 2\n  Bound result 199\n  Bound result 3\n  Bound result 6\n  Bound result 3977\n  Bound result 198\n  Bound result 5\n  Bound result 3350\n  Bound result 217\n  Bound result 46\n  Bound result 20\n  Bound result 134\n  Bound result 7\n  Bound result 1\n  Bound result 1\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 40.25s (40.24s CPU time)\n\nRan 42 test suites in 40.26s (123.71s CPU time): 273 tests passed, 0 failed, 0 skipped (273 total tests)\n","passed":true},{"durationMs":106,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"OGClubClubs.acceptOwnership()\",\"OGClubClubs.approve(address,uint256)\",\"OGClubClubs.freezeMetadata()\",\"OGClubClubs.mintClub(uint256)\",\"OGClubClubs.onERC1155Received(address,address,uint256,uint256,bytes)\",\"OGClubClubs.renounceOwnership()\",\"OGClubClubs.safeTransferFrom(address,address,uint256)\",\"OGClubClubs.safeTransferFrom(address,address,uint256,bytes)\",\"OGClubClubs.setApprovalForAll(address,bool)\",\"OGClubClubs.setBaseURI(string)\",\"OGClubClubs.setFootprint(uint256,uint8,uint8,bool)\",\"OGClubClubs.setFootprints(uint256[],uint8[],uint8[],bool[])\",\"OGClubClubs.setRoyalty(address,uint96)\",\"OGClubClubs.setSaleOpen(bool)\",\"OGClubClubs.transferFrom(address,address,uint256)\",\"OGClubClubs.transferOwnership(address)\",\"OGClubClubs.upgradeClub(uint256)\",\"OGClubFarmVault.acceptOwnership()\",\"OGClubFarmVault.cancelSeason(uint256)\",\"OGClubFarmVault.claim(uint256,address,uint256,bytes32[])\",\"OGClubFarmVault.proposeSeason(bytes32,uint256)\",\"OGClubFarmVault.releaseSeason(uint256)\",\"OGClubFarmVault.renounceOwnership()\",\"OGClubFarmVault.transferOwnership(address)\",\"OGClubFurniture.acceptOwnership()\",\"OGClubFurniture.activateMinter(address)\",\"OGClubFurniture.cancelMinter(address)\",\"OGClubFurniture.freezeMetadata()\",\"OGClubFurniture.grantMinter(address)\",\"OGClubFurniture.mintBatch(address,uint256[],uint256[])\",\"OGClubFurniture.renounceOwnership()\",\"OGClubFurniture.revokeMinter(address)\",\"OGClubFurniture.safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\",\"OGClubFurniture.safeTransferFrom(address,address,uint256,uint256,bytes)\",\"OGClubFurniture.setApprovalForAll(address,bool)\",\"OGClubFurniture.setBaseURI(string)\",\"OGClubFurniture.setRoyalty(address,uint96)\",\"OGClubFurniture.transferOwnership(address)\",\"OGClubRaffle.acceptOwnership()\",\"OGClubRaffle.cancelRaffle(uint256)\",\"OGClubRaffle.claim(uint256,uint256,(uint256,uint256)[])\",\"OGClubRaffle.claimTo(uint256,uint256,(uint256,uint256)[],address)\",\"OGClubRaffle.commitDraw(uint256)\",\"OGClubRaffle.createRaffle(uint256,uint256,(uint8,uint256,uint256,(uint256,uint256)[])[])\",\"OGClubRaffle.draw(uint256,bytes)\",\"OGClubRaffle.enter(uint256,uint256,uint256)\",\"OGClubRaffle.renounceOwnership()\",\"OGClubRaffle.transferOwnership(address)\",\"OGClubStaking.acceptOwnership()\",\"OGClubStaking.activateSpender(address)\",\"OGClubStaking.cancelSpender(address)\",\"OGClubStaking.grantSpender(address)\",\"OGClubStaking.renounceOwnership()\",\"OGClubStaking.revokeSpender(address)\",\"OGClubStaking.spendPoints(address,uint256)\",\"OGClubStaking.stake(uint256)\",\"OGClubStaking.transferOwnership(address)\",\"OGClubStaking.unstake(uint256)\"],\"files\":{\".gitignore\":4,\"ADAPTATION.md\":121,\"README.md\":608,\"VENDOR.md\":13,\"foundry.toml\":22,\"launch.json\":54,\"script/Deploy.s.sol\":59,\"script/DeployClubs.s.sol\":226,\"script/DeployMainnet.s.sol\":166,\"script/club-footprints.json\":1,\"script/encode_header.py\":82,\"src/OGClubClubs.sol\":416,\"src/OGClubFarmVault.sol\":115,\"src/OGClubFurniture.sol\":138,\"src/OGClubRaffle.sol\":357,\"src/OGClubStaking.sol\":179,\"src/interfaces/IDelegateRegistry.sol\":10,\"src/libraries/BlockHeader.sol\":70,\"src/libraries/Permutation.sol\":30,\"src/mocks/MockOG.sol\":21,\"src/mocks/MockSwarmPepe.sol\":13,\"test/ADDITIONAL_COVERAGE.md\":87,\"test/BlockHeader.t.sol\":144,\"test/ClubsAdversarial.t.sol\":730,\"test/ClubsAdversarialInvariant.t.sol\":482,\"test/ClubsDeployment.t.sol\":349,\"test/ClubsFootprints.t.sol\":225,\"test/ClubsInvariant.t.sol\":335,\"test/ClubsLaunch.t.sol\":726,\"test/ClubsLaunchInvariant.t.sol\":464,\"test/ClubsPlacement.t.sol\":322,\"test/ClubsReview.t.sol\":840,\"test/ClubsReviewDeploy.t.sol\":118,\"test/ClubsReviewInvariant.t.sol\":370,\"test/Deployment.t.sol\":119,\"test/FeeFlowInvariant.t.sol\":386,\"test/FurnitureInvariant.t.sol\":248,\"test/Gas.t.sol\":138,\"test/ImportedAudit.t.sol\":180,\"test/MainnetDeployment.t.sol\":284,\"test/OGClubClubs.t.sol\":573,\"test/OGClubFarmVault.t.sol\":309,\"test/OGClubFurniture.t.sol\":362,\"test/OGClubRaffle.t.sol\":537,\"test/OGClubStaking.t.sol\":280,\"test/Permutation.t.sol\":49,\"test/RaffleAtomicity.t.sol\":207,\"test/RaffleSequenceInvariant.t.sol\":503,\"test/RoleLifecycle.t.sol\":146,\"test/StakingInvariant.t.sol\":153,\"test/TokenFailureAtomicity.t.sol\":187,\"test/VaultInvariant.t.sol\":156,\"test/fixtures/MainnetHeaders.sol\":32,\"test/fixtures/SOURCES.md\":74,\"test/fixtures/SepoliaHeader.sol\":14,\"test/fixtures/mainnet-cancun.json\":24,\"test/fixtures/mainnet-prague.json\":25,\"test/fixtures/mainnet-shanghai.json\":21,\"test/fixtures/sepolia-11921684.json\":27,\"test/helpers/ClubLaunchMocks.sol\":22,\"test/helpers/ClubsTestBase.sol\":86,\"test/helpers/HeaderBuilder.sol\":48,\"test/helpers/LaunchLayoutModel.sol\":70,\"test/helpers/RaffleTestBase.sol\":98,\"test/helpers/TokenMocks.sol\":93,\"test/test_encode_header.py\":65,\"test/test_launch.py\":154},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"375ba7171c4ff5a047015db07e4ca04ee57fbba83821c72032ccddf152dac8e0","verifiedTreeHash":"84bf8f78d0f6009c04f17040867a612b5245ed72","verifierVersion":"0.1.0+560ab6a2"},{"checks":[{"durationMs":45921,"exitCode":0,"name":"build","output":"Compiling 110 files with Solc 0.8.26\nSolc 0.8.26 finished in 45.57s\nCompiler run successful!\n","passed":true},{"durationMs":82822,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 6 tests for test/TokenFailureAtomicity.t.sol:TokenFailureAtomicityTest\n[PASS] test_FalseReturningPayoutPreservesEarlierClaimsAndAllReservations() (gas: 728445)\n[PASS] test_OneWeiExitDoesNotCallTheZeroNetRecipientTransfer() (gas: 294703)\n[PASS] test_PackedStakeOverflowRestoresTransferAndPendingPointState() (gas: 487274)\n[PASS] test_SecondUnstakeTransferFailureRestoresVaultFeeAndAccrualCheckpoint() (gas: 612686)\n[PASS] test_SenderSurchargeCannotConsumeAnotherSeasonsReservation() (gas: 1561673)\n[PASS] test_VaultAcceptsNoReturnTokensAndPaysOnlyTheProvenAccount() (gas: 644163)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 3.16ms (1.97ms CPU time)\n\nRan 7 tests for test/ClubsLaunch.t.sol:ClubsPepeTest\n[PASS] test_AuditMintEventPrecedesReceiverTransfer() (gas: 770245)\n[PASS] test_DelegatedWalletPaysAndReceivesAndRevocationAndTransferInvalidateDelegation() (gas: 1167527)\n[PASS] test_IdZeroAndMaxAreValidPepeIdsNoSequentialAllocation() (gas: 615789)\n[PASS] test_NewConstructorRejections() (gas: 241795)\n[PASS] test_NonexistentPepeAndNonHolderRevert() (gas: 188543)\n[PASS] test_OneClubPerPepeEverEvenAfterPepeAndClubTransfers() (gas: 245695)\n[PASS] test_ZeroRegistryDisablesDelegationButHolderWorks() (gas: 307121)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 5.30ms (3.53ms CPU time)\n\nRan 7 tests for test/OGClubClubs.t.sol:ClubsAdminTest\n[PASS] test_AllAdminFunctionsRequireOwner() (gas: 171202)\n[PASS] test_ConstructorRejectsEveryZeroValueAndStartsClosed() (gas: 16115)\n[PASS] test_MetadataFreezeIsPermanentButPlacementsContinue() (gas: 632156)\n[PASS] test_MissingTokensRevertInAllClubViews() (gas: 130959)\n[PASS] test_OwnerCannotMintFreeSeizeBurnOrWithdraw() (gas: 287595)\n[PASS] test_RoyaltyBoundsAndReceiver() (gas: 160927)\n[PASS] test_TwoStepOwnershipRetainsAllPermanentState() (gas: 477442)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 9.98ms (4.62ms CPU time)\n\nRan 10 tests for test/ClubsReview.t.sol:ClubsReviewPepeTest\n[PASS] test_ClosedSaleBlocksHolder() (gas: 64778)\n[PASS] test_ClubIdIsPepeIdNotSequential() (gas: 864010)\n[PASS] test_DelegatedHotWalletMintsPaysAndReceives() (gas: 500819)\n[PASS] test_DelegationFromPreviousHolderDiesWithPepeTransfer() (gas: 304535)\n[PASS] test_DelegationMustMatchHolderTokenCollectionAndRights() (gas: 889546)\n[PASS] test_HolderMintsClubWithPepeIdAndEventCarriesIt() (gas: 330691)\n[PASS] test_NonHolderAndApprovedPepeOperatorCannotMint() (gas: 196626)\n[PASS] test_NonexistentPepeReverts() (gas: 53875)\n[PASS] test_SecondMintForSamePepeRevertsEverAfterTransfers() (gas: 248262)\n[PASS] test_ZeroRegistryIgnoresDelegation() (gas: 460528)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 11.74ms (5.77ms CPU time)\n\nRan 6 tests for test/Gas.t.sol:GasTest\n[PASS] test_GasClaimOne() (gas: 954101)\nLogs:\n  Claim one win / fresh furniture wallet\n  Cancun call gas: 160885\n  New persistent slots: 4\n  EIP-8037 state gas: 391680\n  EIP-8037 storage-repriced call gas: 472565\n\n[PASS] test_GasClaimTen() (gas: 2860761)\nLogs:\n  Claim ten distinct items / fresh furniture wallet\n  Cancun call gas: 816170\n  New persistent slots: 22\n  EIP-8037 state gas: 2154240\n  EIP-8037 storage-repriced call gas: 2530410\n\n[PASS] test_GasDraw() (gas: 418645)\nLogs:\n  Draw / 23-field synthetic header\n  Cancun call gas: 74312\n  New persistent slots: 1\n  EIP-8037 state gas: 97920\nWarning: the following cheatcode(s) are deprecated and will be removed in future versions:\n  lastCallGas(): replaced by `lastFrameGas`\n  EIP-8037 storage-repriced call gas: 152232\n\n[PASS] test_GasEnter() (gas: 558676)\nLogs:\n  First entry / ten tickets / first points checkpoint\n  Cancun call gas: 155364\n  New persistent slots: 4\n  EIP-8037 state gas: 391680\n  EIP-8037 storage-repriced call gas: 467044\n\n[PASS] test_GasFirstStake() (gas: 200138)\nLogs:\n  First-ever stake / fresh staker\n  Cancun call gas: 120547\n  New persistent slots: 3\n  EIP-8037 state gas: 293760\n  EIP-8037 storage-repriced call gas: 354307\n\n[PASS] test_GasUnstake() (gas: 308132)\nLogs:\n  Partial unstake / first fee / first checkpoint\n  Cancun call gas: 110662\n  New persistent slots: 2\n  EIP-8037 state gas: 195840\n  EIP-8037 storage-repriced call gas: 266502\n\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 19.50ms (17.65ms CPU time)\n\nRan 1 test for test/ClubsReview.t.sol:ClubsReviewDesignTest\n[PASS] test_SecondCopyRevertsFloorAndWallOtherClubsUnaffectedAndSurvivesTransfer() (gas: 1730236)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 22.83ms (7.90ms CPU time)\n\nRan 9 tests for test/ClubsLaunch.t.sol:ClubsLevelsTest\n[PASS] test_ExpansionBoundariesEveryTileOfPieceAndOldTilesRemain() (gas: 2741095)\n[PASS] test_FloorDoorNeverOpensAtAnyLevel() (gas: 1274753)\n[PASS] test_FloorMasksExactlyMatchEveryCoordinateAndContainPreviousLevel() (gas: 359898)\n[PASS] test_NoReturnTokenUpgradesAndZeroBurnPriceOne() (gas: 912490)\n[PASS] test_OnlyClubHolderTokenApprovedOrOperatorCanUpgradeAndCallerPays() (gas: 767305)\n[PASS] test_UpgradeReceiptMutationsRevertEntirePaymentAndLevel() (gas: 1895525)\n[PASS] test_UpgradeReentrancyGuardAndTaxedTokenRejection() (gas: 2125761)\n[PASS] test_UpgradeShortAllowanceRollsBackBurnAndLevel() (gas: 191434)\n[PASS] test_UpgradesExactOddSplitsEventsAndPricesToMax() (gas: 698224)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 25.28ms (20.99ms CPU time)\n\nRan 4 tests for test/ImportedAudit.t.sol:ImportedAuditTest\n[PASS] test_Audit07e7433_TargetExpiresAndCanBeReplacedButDrawnSeedIsFinal() (gas: 498289)\n[PASS] test_Audit1ecd3a7_AnyoneCanMintTestnetStakeAndBuyClubs() (gas: 810464)\n[PASS] test_Audit2fa7888_RaffleNeedsFirstGrantsWrongTargetConsumesBootstrap() (gas: 1384721)\n[PASS] test_Audit9dcac50_ClubsNowWorkWithoutRaffleBootstrapRoles() (gas: 553678)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 13.80ms (12.71ms CPU time)\n\nRan 13 tests for test/ClubsPlacement.t.sol:ClubsPlacementTest\n[PASS] test_BadAmountsAndBatchTransfersRejected() (gas: 264099)\n[PASS] test_ClubTokenApprovalAndApprovalForAllPermitOwnersOfFurnitureToPlace() (gas: 740772)\n[PASS] test_DirectAndFakeERC1155HooksRejected() (gas: 1158983)\n[PASS] test_FurnitureCannotLeaveForClubHolderOperatorOrContractOwner() (gas: 758633)\n[PASS] test_FurnitureOperatorCanPlaceFromClubHolder() (gas: 346998)\n[PASS] test_LevelOneAll98UsableTilesFillWithDistinctDesigns() (gas: 33635309)\n[PASS] test_MissingClubAndMalformedDataCannotLockFurniture() (gas: 743134)\n[PASS] test_NoFootprintBadFootprintsAndPerIdPermanentLock() (gas: 1327568)\n[PASS] test_OffGridRotationDoorAndOverlapRevertWithoutChangingAnything() (gas: 2659693)\n[PASS] test_RealFurnitureAllRotationsViewsAndEvents() (gas: 2071286)\n[PASS] test_StrangerCannotPlaceOwnFurnitureEvenIfCallerOwnsClub() (gas: 219715)\n[PASS] test_TransferCarriesLayoutAndRevokesOldHolderAndTokenApproval() (gas: 776468)\n[PASS] test_VendoredFurnitureSingletonBatchUsesSingleHookAndRecordsOnePiece() (gas: 203558)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 35.77ms (40.65ms CPU time)\n\nRan 10 tests for test/ClubsFootprints.t.sol:ClubsFootprintsTest\n[PASS] testFuzz_BatchFinalityAndAtomicity(uint256,uint8,uint8,bool) (runs: 256, μ: 145112, ~: 144114)\nLogs:\n  Bound result 1822\n  Bound result 3\n\n[PASS] test_BatchBadLastEntryRollsBackEarlierDefinitions() (gas: 1004091)\n[PASS] test_BatchDuplicateRollsBackAndCannotRewritePendingDefinition() (gas: 548076)\n[PASS] test_BatchOwnerOnlyIncludingEmptyAndEmptyOwnerBatchIsNoop() (gas: 143900)\n[PASS] test_BatchRejectsEveryLengthMismatchWithoutWrites() (gas: 523861)\n[PASS] test_BatchSetsAllEntriesEmitsUnchangedEventsAndLocksBothSetters() (gas: 580179)\n[PASS] test_DefinitionIsFinalBeforePlacementIncludingIdenticalAndInvalidReset() (gas: 158989)\n[PASS] test_PendingEdgePlacementKeepsOriginalSize() (gas: 445264)\n[PASS] test_PendingFloorPlacementKeepsKindSizeAndRotation() (gas: 449098)\n[PASS] test_PendingWallPlacementKeepsWidthAndSide() (gas: 435657)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 63.13ms (57.33ms CPU time)\n\nRan 7 tests for test/RoleLifecycle.t.sol:RoleLifecycleTest\n[PASS] testFuzz_ExpiredProposalsCannotActivateOrCancel(uint32) (runs: 256, μ: 558632, ~: 558520)\nLogs:\n  Bound result 5\n\n[PASS] test_ActivationAtMaturityAndLastSecond() (gas: 512088)\n[PASS] test_CancelRevokeRegrantAndReproposal() (gas: 800981)\n[PASS] test_InvalidGrantDoesNotSpendBootstrapAndZeroAddressesRejected() (gas: 147761)\n[PASS] test_OnlyOwnerProposesCancelsAndRevokes() (gas: 406632)\n[PASS] test_OwnershipHandoverDoesNotResetBootstrapAndRenunciationDoesNotBlockActivation() (gas: 568368)\n[PASS] test_SpenderLastSecondActivates() (gas: 378503)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 83.53ms (78.92ms CPU time)\n\nRan 10 tests for test/BlockHeader.t.sol:BlockHeaderTest\n[PASS] testFuzz_AnyMalformedInputRevertsWithCustomError(bytes) (runs: 256, μ: 32436, ~: 32040)\n[PASS] testFuzz_ArbitraryTrailingFieldCount(uint8,uint256,bytes32) (runs: 256, μ: 92028, ~: 76745)\nLogs:\n  Bound result 3\n\n[PASS] test_MalformedAuthenticatedHeaderCannotMint() (gas: 321913)\n[PASS] test_MalformedRLPBoundsAndCanonicalLengths() (gas: 147737)\n[PASS] test_MissingFieldsAndInvalidNumberOrMixHash() (gas: 237524)\n[PASS] test_RealMainnetCancunHeader() (gas: 543993)\n[PASS] test_RealMainnetPragueHeader() (gas: 547036)\n[PASS] test_RealMainnetShanghaiHeader() (gas: 538038)\n[PASS] test_RealSepoliaHeaderWithAccessListHashAndSlotNumber() (gas: 550588)\n[PASS] test_ZeroNumberAndZeroMixHashAreValidRLP() (gas: 40712)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 100.84ms (98.12ms CPU time)\n\nRan 16 tests for test/OGClubFurniture.t.sol:FurnitureTest\n[PASS] testFuzz_AfterFirstMintMustWaitAndAnyoneCanActivate(uint32) (runs: 256, μ: 596118, ~: 595918)\nLogs:\n  Bound result 5\n\n[PASS] testFuzz_EveryGrantAfterTheFirstWaitsSevenDays(address,address,uint32) (runs: 256, μ: 169354, ~: 169450)\n[PASS] test_AllOwnerFunctionsProtected() (gas: 227178)\n[PASS] test_CancelStopsActivationEvenAfterDeadline() (gas: 394671)\n[PASS] test_IdentityInterfacesMintAndSupply() (gas: 448761)\n[PASS] test_InvalidAddressesAndBatchLengths() (gas: 3967)\n[PASS] test_MetadataFreezesPermanently() (gas: 195226)\n[PASS] test_NoOwnerSeizureOrBurn() (gas: 418561)\n[PASS] test_OnlyTheFirstGrantIsImmediateEvenBeforeAnyMint() (gas: 546001)\n[PASS] test_OwnershipTwoStepAndRenounce() (gas: 244214)\n[PASS] test_RegrantingTheRevokedFirstMinterWaitsWithZeroSupply() (gas: 569038)\n[PASS] test_RejectedGrantDoesNotSpendTheBootstrap() (gas: 173991)\n[PASS] test_ReproposalRestartsDelayAndCancelDoesNotRevokeExistingRole() (gas: 457168)\n[PASS] test_RevokeIsImmediateClearsProposalsAndRegrantWaitsAgain() (gas: 535486)\n[PASS] test_RoyaltyDefaultAndLimits() (gas: 161390)\n[PASS] test_ZeroAddressesAndLegacyMinterSelectorCannotGrant() (gas: 340672)\nSuite result: ok. 16 passed; 0 failed; 0 skipped; finished in 146.68ms (144.86ms CPU time)\n\nRan 2 tests for test/ClubsReviewDeploy.t.sol:ClubsReviewDeployTest\n[PASS] test_MainnetVaultCheckRejectsLookalikesAndAcceptsMatch() (gas: 10114346)\nLogs:\n  OGClubClubs 0xCF75462c9e7fFf4eEB0c50185087a0fb9A056d2b\n  OGClubClubs constructor args (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b000000000000000000000000a4ad4f68d0b91cfd19687c881e50f3a00242828c00000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000008b56398fc3f0ffecf106fbeb5a6661ce5284880f0000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b330000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b330000000000000000000000003d6c014d7df179a01c9f8f4bbaca599c1cb8076a00000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  token 0x2e234DAe75C793f67A35089C9d99245E1C58470b\n  vault 0xA4AD4f68d0b91CFD19687c881e50f3A00242828c\n  price (token base units) 100000000000000000000000\n  furniture 0x8b56398Fc3f0FfeCF106fBeb5A6661cE5284880F\n  owner 0x2aCEadD3329Ca7DAcED273E002C1Ef40c6ef4b33\n  royaltyReceiver 0x2aCEadD3329Ca7DAcED273E002C1Ef40c6ef4b33\n  Swarm Pepes 0x3D6c014d7Df179a01c9f8F4bBAca599C1cB8076a\n  delegate.xyz registry 0x00000000000000447e69651d841bD8D104Bed493\n  level 2 price 200000000000000000000000\n  level 3 price 400000000000000000000000\n  level 4 price 800000000000000000000000\n  saleOpen false\n  OWNER must send this setFootprints batch to OGClubClubs before opening the sale:\n  0xb16e1514000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001\n  OWNER must set the club metadata URI:\n  0x55f804b30000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f776f726c642e6f67636c75622e6f6e6c696e652f636c75622f00000000000000000000000000000000000000000000000000000000000000\n  After reviewing footprints and metadata, OWNER may open the sale with:\n  0xaf979f250000000000000000000000000000000000000000000000000000000000000001\n\n[PASS] test_SepoliaScriptWiresPepesRealRegistryPricesAndWallFootprints() (gas: 19260299)\nLogs:\n  MockOG (unrestricted testnet mint) 0x95CedE5e970fE74dEF7B443DAf6420440793dBb6\n  MockOG constructor args (initialRecipient):\n  0x0000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b33\n  OGClubFurniture 0x843567975C55c54C8213f73c4e282e110934C29D\n  OGClubFurniture constructor args (owner, royaltyReceiver):\n  0x0000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b330000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b33\n  OGClubFarmVault 0x95eD037F6A9b2931b15035E79d11A9747955FcDF\n  OGClubFarmVault constructor args (token, owner):\n  0x00000000000000000000000095cede5e970fe74def7b443daf6420440793dbb60000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b33\n  MockSwarmPepe (public mint, Sepolia/local only) 0xA7dD5b26F7a5D21902D555A7322567360816be13\n  MockSwarmPepe constructor args: none\n  OGClubClubs 0xE2dd2b018f0F61Ac83931E4de6cfd6398e49F692\n  OGClubClubs constructor args (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x00000000000000000000000095cede5e970fe74def7b443daf6420440793dbb600000000000000000000000095ed037f6a9b2931b15035e79d11a9747955fcdf00000000000000000000000000000000000000000000152d02c7e14af6800000000000000000000000000000843567975c55c54c8213f73c4e282e110934c29d0000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b330000000000000000000000002aceadd3329ca7daced273e002c1ef40c6ef4b33000000000000000000000000a7dd5b26f7a5d21902d555a7322567360816be1300000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  token 0x95CedE5e970fE74dEF7B443DAf6420440793dBb6\n  vault 0x95eD037F6A9b2931b15035E79d11A9747955FcDF\n  price (token base units) 100000000000000000000000\n  furniture 0x843567975C55c54C8213f73c4e282e110934C29D\n  owner 0x2aCEadD3329Ca7DAcED273E002C1Ef40c6ef4b33\n  royaltyReceiver 0x2aCEadD3329Ca7DAcED273E002C1Ef40c6ef4b33\n  Swarm Pepes 0xA7dD5b26F7a5D21902D555A7322567360816be13\n  delegate.xyz registry 0x00000000000000447e69651d841bD8D104Bed493\n  level 2 price 200000000000000000000000\n  level 3 price 400000000000000000000000\n  level 4 price 800000000000000000000000\n  saleOpen true\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 152.64ms (290.39ms CPU time)\n\nRan 16 tests for test/OGClubFarmVault.t.sol:FarmVaultTest\n[PASS] testFuzz_ReserveCapAndClaimConservation(uint96,uint96) (runs: 256, μ: 1352149, ~: 1352235)\nLogs:\n  Bound result 133686629344\n  Bound result 833086\n\n[PASS] test_CancelBeforeOpenOnlyReleasesReserveWithoutTransferring() (gas: 561805)\n[PASS] test_ClaimLastSecondBeforeExpirationAndPartialRelease() (gas: 397391)\n[PASS] test_DelayExactBoundaryAndPermissionlessClaimPaidToAccountOnly() (gas: 442808)\n[PASS] test_FailedTokenTransferRestoresClaimAndReservations() (gas: 727404)\n[PASS] test_HalfCapUsesOnlyUnreservedBalanceAndFloorsOddWei() (gas: 472822)\n[PASS] test_InvalidRecipientsAndZeroAllocation() (gas: 482033)\n[PASS] test_InvalidSeasonRootAndTotal() (gas: 164553)\n[PASS] test_OnlyOwnerCanProposeCancelAndNoSweepOrApprovalOrPause() (gas: 165634)\n[PASS] test_OwnerCallbackCannotReserveAgainstAnInFlightPayout() (gas: 625341)\n[PASS] test_OwnershipHandoverPreservesSeasons() (gas: 415758)\n[PASS] test_ProofRejectsWrongAccountAmountSeasonAndSingleHash() (gas: 898876)\n[PASS] test_ProposalIntervalAtExactBoundaryIncludingAfterCancel() (gas: 441729)\n[PASS] test_ReleaseExactly90DaysAfterOpeningAndNeverWithdrawsTokens() (gas: 562741)\n[PASS] test_TokenCallbackCannotClaimTwice() (gas: 521104)\n[PASS] test_TotalBudgetCapsEvenInconsistentMerkleTree() (gas: 355026)\nSuite result: ok. 16 passed; 0 failed; 0 skipped; finished in 141.03ms (143.10ms CPU time)\n\nRan 4 tests for test/Deployment.t.sol:DeploymentTest\n[PASS] test_ConstructorsDoNotCallDependenciesOrAssignFactoryOwner() (gas: 45432)\n[PASS] test_InvalidConfigurationAndConstructorBounds() (gas: 8014)\n[PASS] test_MockIsDeliberatelyUnlimitedTestnetOnly() (gas: 77458)\n[PASS] test_SepoliaDeploymentAndOwnerSetup() (gas: 34870838)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 177.57ms (176.62ms CPU time)\n\nRan 5 tests for test/MainnetDeployment.t.sol:MainnetDeploymentTest\n[PASS] test_AllFiveTwoStepHandoffsToContractWalletPreserveSetupAndRoyalty() (gas: 2801635)\n[PASS] test_MainnetFactoryConstructorsDependenciesOwnersRuntimeAndUnconfiguredState() (gas: 36155846)\n[PASS] test_MainnetNoticeRejectsEarlyOpeningAndAcceptsSevenDayBoundary() (gas: 261914)\n[PASS] test_MainnetScriptRehearsesFiveApplicationsAndRejectsWrongChain() (gas: 9769380)\nLogs:\n  LOCAL REHEARSAL ONLY: these addresses are not mainnet deployments.\n  Chain: Ethereum mainnet (1). Owner and initial royalty receiver: 0x5b95A971B4583A5f011E9DA082acdD679b870D06\n  OGClubFurniture 0x104fBc016F4bb334D775a19E8A6510109AC63E00\n  Constructor arguments (owner, royaltyReceiver):\n  0x0000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d060000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d06\n  OGClubFarmVault 0x037eDa3aDB1198021A9b2e88C22B464fD38db3f3\n  Constructor arguments (token, owner):\n  0x000000000000000000000000ce7eb1ad9e2e1c784ea05f7ea4a0fe625923d10a0000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d06\n  OGClubStaking 0xDDc10602782af652bB913f7bdE1fD82981Db7dd9\n  Constructor arguments (token, vault, owner, pointsPerTokenDay):\n  0x000000000000000000000000ce7eb1ad9e2e1c784ea05f7ea4a0fe625923d10a000000000000000000000000037eda3adb1198021a9b2e88c22b464fd38db3f30000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d060000000000000000000000000000000000000000000000000de0b6b3a7640000\n  OGClubRaffle 0x7FdB3132Ff7D02d8B9e221c61cC895ce9a4bb773\n  Constructor arguments (staking, furniture, owner, raffleNotice):\n  0x000000000000000000000000ddc10602782af652bb913f7bde1fd82981db7dd9000000000000000000000000104fbc016f4bb334d775a19e8a6510109ac63e000000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d060000000000000000000000000000000000000000000000000000000000093a80\n  OGClubClubs 0xfD07C974e33dd1626640bA3a5acF0418FaacCA7a\n  Constructor arguments (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x000000000000000000000000ce7eb1ad9e2e1c784ea05f7ea4a0fe625923d10a000000000000000000000000037eda3adb1198021a9b2e88c22b464fd38db3f300000000000000000000000000000000000000000000152d02c7e14af6800000000000000000000000000000104fbc016f4bb334d775a19e8a6510109ac63e000000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d060000000000000000000000005b95a971b4583a5f011e9da082acdd679b870d06000000000000000000000000999ce0ce8c5f7661e0c74a568ffe27ceb9177bdb00000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  Owner setup in order; every call sends 0 ETH:\n  1a. FIRST furniture grantMinter(raffle)\n  to 0x104fBc016F4bb334D775a19E8A6510109AC63E00\n  0x261707fa0000000000000000000000007fdb3132ff7d02d8b9e221c61cc895ce9a4bb773\n  1b. FIRST staking grantSpender(raffle)\n  to 0xDDc10602782af652bB913f7bdE1fD82981Db7dd9\n  0x5a4b61980000000000000000000000007fdb3132ff7d02d8b9e221c61cc895ce9a4bb773\n  2a. furniture setBaseURI\n  to 0x104fBc016F4bb334D775a19E8A6510109AC63E00\n  0x55f804b30000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002068747470733a2f2f776f726c642e6f67636c75622e6f6e6c696e652f6e66742f\n  2b. clubs setBaseURI\n  to 0xfD07C974e33dd1626640bA3a5acF0418FaacCA7a\n  0x55f804b30000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f776f726c642e6f67636c75622e6f6e6c696e652f636c75622f00000000000000000000000000000000000000000000000000000000000000\n  3. clubs setFootprints (24 final definitions, one atomic batch)\n  to 0xfD07C974e33dd1626640bA3a5acF0418FaacCA7a\n  0xb16e1514000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000009e00000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001300000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000015000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000\n  4. ONLY WHEN LAUNCH IS ANNOUNCED: clubs setSaleOpen(true)\n  to 0xfD07C974e33dd1626640bA3a5acF0418FaacCA7a\n  0xaf979f250000000000000000000000000000000000000000000000000000000000000001\n  Later Safe handoff: current owner calls transferOwnership(Safe) on EACH of the five contracts;\n  the Safe calls acceptOwnership() on EACH. Accept calldata:\n  0x79ba5097\n\n[PASS] test_PrintedOwnerCallsConfigureExactCatalogueAndPreserveDelayedLaterGrants() (gas: 1740357)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 201.66ms (197.96ms CPU time)\n\nRan 3 tests for test/ClubsReview.t.sol:ClubsReviewFixesTest\n[PASS] test_BadPlacementDataEveryShape() (gas: 742284)\n[PASS] test_ClubFullAt285() (gas: 83180661)\n[PASS] test_ConstructorRejections() (gas: 15440)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 239.24ms (232.86ms CPU time)\n\nRan 7 tests for test/ClubsLaunch.t.sol:ClubsWallsTest\n[PASS] test_BothWallsAllWidthsDoorAndIndependentFloor() (gas: 4917697)\n[PASS] test_ClubFullReachableAt285DistinctDesignsWithoutStorageCheats() (gas: 90073666)\n[PASS] test_OneOfEachFloorAndWallPerClubSurvivesTransfer() (gas: 1519153)\n[PASS] test_WallDoorAtEveryLevel() (gas: 1153763)\n[PASS] test_WallDoorOverlapSideValidationAndFootprintFlagLock() (gas: 1424493)\n[PASS] test_WallEventsAndMissingAndOutOfBoundsViews() (gas: 402739)\n[PASS] test_WallLengthsAtEveryLevelAndExtensionAfterUpgrade() (gas: 6477944)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 264.75ms (273.28ms CPU time)\n\nRan 9 tests for test/ClubsDeployment.t.sol:ClubsDeploymentTest\n[PASS] test_EmptyFootprintsAreExplicitlyUnconfiguredAndScriptsEnforceChain() (gas: 24446367)\nLogs:\n  MockOG (unrestricted testnet mint) 0x2146bCE9584Fb42179531b017C0a28B45357DCfA\n  MockOG constructor args (initialRecipient):\n  0x00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a57\n  OGClubFurniture 0x7e670b34e14F0546c1ee28B1DcBd0F219eBaCf3B\n  OGClubFurniture constructor args (owner, royaltyReceiver):\n  0x00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a570000000000000000000000007ad1e3cd95db13f7970851d8a4706eb5254ef2cc\n  OGClubFarmVault 0x50db4e46F59C25BC6D0F65917277f3C00229F306\n  OGClubFarmVault constructor args (token, owner):\n  0x0000000000000000000000002146bce9584fb42179531b017c0a28b45357dcfa00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a57\n  MockSwarmPepe (public mint, Sepolia/local only) 0x0e02c420C2EC8e6bc1F5499F265332C736C8748a\n  MockSwarmPepe constructor args: none\n  OGClubClubs 0x79c936D495EdaDFC6A2Cb0D0B189bDf811527dCf\n  OGClubClubs constructor args (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x0000000000000000000000002146bce9584fb42179531b017c0a28b45357dcfa00000000000000000000000050db4e46f59c25bc6d0f65917277f3c00229f30600000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000007e670b34e14f0546c1ee28b1dcbd0f219ebacf3b00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a570000000000000000000000007ad1e3cd95db13f7970851d8a4706eb5254ef2cc0000000000000000000000000e02c420c2ec8e6bc1f5499f265332c736c8748a00000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  token 0x2146bCE9584Fb42179531b017C0a28B45357DCfA\n  vault 0x50db4e46F59C25BC6D0F65917277f3C00229F306\n  price (token base units) 100000000000000000000000\n  furniture 0x7e670b34e14F0546c1ee28B1DcBd0F219eBaCf3B\n  owner 0x73258404819B10B2F0Cf91BFC76F08b28B4e9A57\n  royaltyReceiver 0x7aD1E3Cd95dB13F7970851D8a4706Eb5254eF2cC\n  Swarm Pepes 0x0e02c420C2EC8e6bc1F5499F265332C736C8748a\n  delegate.xyz registry 0x00000000000000447e69651d841bD8D104Bed493\n  level 2 price 200000000000000000000000\n  level 3 price 400000000000000000000000\n  level 4 price 800000000000000000000000\n  saleOpen true\n\n[PASS] test_FactoryConstructorWorksOnEmptyChainWithExplicitOwnerAndBoundedRuntime() (gas: 15130175)\n[PASS] test_FootprintJSONValidatesBeforeDeploymentWithoutTruncation() (gas: 10850219)\n[PASS] test_MainnetScriptDeploysFromSeparateKeyWithContractOwnerAndLeavesSetupToOwner() (gas: 9928269)\nLogs:\n  OGClubClubs 0x30A83F5e57Fa28a89b559850E586e08549eCbBc1\n  OGClubClubs constructor args (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x0000000000000000000000005615deb798bb3e4dfa0139dfa1b3d433cc23b72f0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b000000000000000000000000000000000000000000000000000000000000007b0000000000000000000000004483b2254437483025732348c2b668986ce9df26000000000000000000000000f62849f9a0b5bf2913b396098f7c7019b51a820a0000000000000000000000007ad1e3cd95db13f7970851d8a4706eb5254ef2cc00000000000000000000000052e9a3dde7ff1018cc104248afb1c29e7b211f3800000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  token 0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f\n  vault 0x2e234DAe75C793f67A35089C9d99245E1C58470b\n  price (token base units) 123\n  furniture 0x4483b2254437483025732348c2B668986cE9dF26\n  owner 0xF62849F9A0B5Bf2913b396098F7c7019b51A820a\n  royaltyReceiver 0x7aD1E3Cd95dB13F7970851D8a4706Eb5254eF2cC\n  Swarm Pepes 0x52e9a3DDE7Ff1018Cc104248afb1c29E7B211F38\n  delegate.xyz registry 0x00000000000000447e69651d841bD8D104Bed493\n  level 2 price 200000000000000000000000\n  level 3 price 400000000000000000000000\n  level 4 price 800000000000000000000000\n  saleOpen false\n  OWNER must send this setFootprints batch to OGClubClubs before opening the sale:\n  0xb16e1514000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001\n  OWNER must set the club metadata URI:\n  0x55f804b30000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f776f726c642e6f67636c75622e6f6e6c696e652f636c75622f00000000000000000000000000000000000000000000000000000000000000\n  After reviewing footprints and metadata, OWNER may open the sale with:\n  0xaf979f250000000000000000000000000000000000000000000000000000000000000001\n\n[PASS] test_MainnetScriptRejectsWrongVaultTokenBeforeDeploying() (gas: 6218600)\n[PASS] test_MockPepePublicMintIsSepoliaFixtureAndCannotRemint() (gas: 2802391)\n[PASS] test_PredictedSelfVaultIsRejected() (gas: 14902)\n[PASS] test_SepoliaScriptDeploysRealDependenciesConfiguresAndOpensSale() (gas: 18931689)\nLogs:\n  MockOG (unrestricted testnet mint) 0x2146bCE9584Fb42179531b017C0a28B45357DCfA\n  MockOG constructor args (initialRecipient):\n  0x00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a57\n  OGClubFurniture 0x7e670b34e14F0546c1ee28B1DcBd0F219eBaCf3B\n  OGClubFurniture constructor args (owner, royaltyReceiver):\n  0x00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a570000000000000000000000007ad1e3cd95db13f7970851d8a4706eb5254ef2cc\n  OGClubFarmVault 0x50db4e46F59C25BC6D0F65917277f3C00229F306\n  OGClubFarmVault constructor args (token, owner):\n  0x0000000000000000000000002146bce9584fb42179531b017c0a28b45357dcfa00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a57\n  MockSwarmPepe (public mint, Sepolia/local only) 0x0e02c420C2EC8e6bc1F5499F265332C736C8748a\n  MockSwarmPepe constructor args: none\n  OGClubClubs 0x79c936D495EdaDFC6A2Cb0D0B189bDf811527dCf\n  OGClubClubs constructor args (token, vault, price, furniture, owner, royaltyReceiver, pepes, delegates, level2Price, level3Price, level4Price):\n  0x0000000000000000000000002146bce9584fb42179531b017c0a28b45357dcfa00000000000000000000000050db4e46f59c25bc6d0f65917277f3c00229f30600000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000007e670b34e14f0546c1ee28b1dcbd0f219ebacf3b00000000000000000000000073258404819b10b2f0cf91bfc76f08b28b4e9a570000000000000000000000007ad1e3cd95db13f7970851d8a4706eb5254ef2cc0000000000000000000000000e02c420c2ec8e6bc1f5499f265332c736c8748a00000000000000000000000000000000000000447e69651d841bd8d104bed493000000000000000000000000000000000000000000002a5a058fc295ed0000000000000000000000000000000000000000000000000054b40b1f852bda00000000000000000000000000000000000000000000000000a968163f0a57b4000000\n  token 0x2146bCE9584Fb42179531b017C0a28B45357DCfA\n  vault 0x50db4e46F59C25BC6D0F65917277f3C00229F306\n  price (token base units) 100000000000000000000000\n  furniture 0x7e670b34e14F0546c1ee28B1DcBd0F219eBaCf3B\n  owner 0x73258404819B10B2F0Cf91BFC76F08b28B4e9A57\n  royaltyReceiver 0x7aD1E3Cd95dB13F7970851D8a4706Eb5254eF2cC\n  Swarm Pepes 0x0e02c420C2EC8e6bc1F5499F265332C736C8748a\n  delegate.xyz registry 0x00000000000000447e69651d841bD8D104Bed493\n  level 2 price 200000000000000000000000\n  level 3 price 400000000000000000000000\n  level 4 price 800000000000000000000000\n  saleOpen true\n\n[PASS] test_SevenContractFactoryDeploymentInOneTransactionPreservesOwnersAndBootstrap() (gas: 53502266)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 633.91ms (717.00ms CPU time)\n\nRan 3 tests for test/Permutation.t.sol:PermutationTest\n[PASS] testFuzz_LargeDomainsInRangeAndDistinct(uint48,uint48,uint48,bytes32) (runs: 256, μ: 19460, ~: 18133)\nLogs:\n  Bound result 89118135135\n\n[PASS] testFuzz_SmallDomainsAreBijections(uint8,bytes32) (runs: 256, μ: 532025, ~: 121719)\nLogs:\n  Bound result 137\n\n[PASS] test_InvalidDomainAndIndexRejected() (gas: 211485)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 822.37ms (822.30ms CPU time)\n\nRan 30 tests for test/ClubsAdversarial.t.sol:ClubsAdversarialTest\n[PASS] testFuzz_SingleTileDoorRuleIsExactlyTheTwoDoorTiles(uint8,uint8) (runs: 512, μ: 228545, ~: 231676)\nLogs:\n  Bound result 4\n  Bound result 0\n\n[PASS] testFuzz_SplitForAnyPrice(uint256,uint8) (runs: 512, μ: 1376129, ~: 1148666)\nLogs:\n  Bound result 327595911752326497029178240613551261955\n  Bound result 4\n\n[PASS] test_AmountZeroAndTwoRejected() (gas: 135003)\n[PASS] test_ApprovalForOneClubDoesNotExtendToAnother() (gas: 1061295)\n[PASS] test_ClubApprovalsGrantPlacementAndRevocationRemovesIt() (gas: 831708)\n[PASS] test_ContractHolderThatCannotReceiveReverts() (gas: 742400)\n[PASS] test_EveryShapeThatTouchesEitherDoorTileIsRejected() (gas: 1547282)\n[PASS] test_ExactRightAndBottomEdgesFitAndOneMoreDoesNot() (gas: 903478)\n[PASS] test_ExactlyPriceAllowanceAndBalanceSucceedOneWeiShortFails() (gas: 795370)\n[PASS] test_FootprintBoundsAndOwnerOnly() (gas: 249143)\n[PASS] test_FootprintIsFinalFromDefinitionAndPlacementStillMarksLegacyLock() (gas: 752176)\n[PASS] test_FullRoomRejectsEverythingElse() (gas: 28207981)\n[PASS] test_FurnitureOperatorOfAStrangerCannotPlaceIntoOperatorsOwnClub() (gas: 142507)\n[PASS] test_HookCalledDirectlyByAnyoneButFurnitureIsRejected() (gas: 73460)\n[PASS] test_InterfacesAndImmutables() (gas: 142297)\n[PASS] test_MalformedDataAlwaysReverts() (gas: 649467)\n[PASS] test_MetadataAndRoyaltyEdges() (gas: 360810)\n[PASS] test_MintPaysFromCallerAndClosingSaleStopsMinting() (gas: 627615)\n[PASS] test_MinterCannotPushFurnitureStraightIntoTheClubContract() (gas: 196893)\n[PASS] test_MissingClubIdsRejectedIncludingZeroAndMax() (gas: 489457)\n[PASS] test_NobodyCanMoveFurnitureOutOfTheContract() (gas: 359245)\n[PASS] test_OverlapAtASingleSharedTileIsRejected() (gas: 1204602)\n[PASS] test_PendingOwnerHasNoPowerUntilAcceptAndOldOwnerLosesIt() (gas: 239573)\n[PASS] test_ReentrantReceiverPlacesButCannotMintTwice() (gas: 1460687)\n[PASS] test_RenouncedOwnershipKeepsPlacementWorking() (gas: 282678)\n[PASS] test_RotationSwapsOnlyOnOddRotations() (gas: 1478988)\n[PASS] test_TileTakenViewBounds() (gas: 56614)\n[PASS] test_TransferredClubKeepsLayoutAndMovesPlacementRight() (gas: 1112467)\n[PASS] test_Uint8ExtremesAndRotFourAreOutOfRoom() (gas: 1014316)\n[PASS] test_UnfootprintedIdRejectedAndDoesNotLock() (gas: 448312)\nSuite result: ok. 30 passed; 0 failed; 0 skipped; finished in 960.00ms (1.02s CPU time)\n\nRan 10 tests for test/ClubsReview.t.sol:ClubsReviewLevelsTest\n[PASS] test_BadLevelViewsRevert() (gas: 49368)\n[PASS] test_DoorBlockedByMultiTilePiecesAtEveryLevel() (gas: 4152747)\n[PASS] test_EverySingleTileAtEveryLevelAgainstModel() (gas: 271242677)\n[PASS] test_ExpansionEdgesRevertBeforeAndWorkAfterAndPiecesKeepTiles() (gas: 2689418)\n[PASS] test_FloorMasksMatchCoordinateRulesBitForBit() (gas: 501808)\n[PASS] test_LevelFollowsClubTransfer() (gas: 378429)\n[PASS] test_MintAtLevelOnePricesAndViews() (gas: 46962)\n[PASS] test_OnlyHolderOrApprovedUpgradesAndCallerPays() (gas: 705504)\n[PASS] test_UpgradeOneWeiShortRevertsAtomically() (gas: 513539)\n[PASS] test_UpgradeToFourExactSplitsReceiptsEvents() (gas: 497786)\nSuite result: ok. 10 passed; 0 failed; 0 skipped; finished in 1.09s (1.10s CPU time)\n\nRan 4 tests for test/FootprintBatchProperties.t.sol:FootprintBatchPropertiesTest\n[PASS] testFuzz_BatchEqualsReversedSinglesAndEmitsOneUnchangedEventPerItem(bytes32,uint8) (runs: 512, μ: 1553127, ~: 1228877)\nLogs:\n  Bound result 1\n  Bound result 19288526873992333075908748159660546056488827862698920583024956616340317319505\n\n[PASS] testFuzz_DuplicateAtAnyTwoPositionsRollsBackIncludingDifferentDefinitions(bytes32,uint8,uint8,uint8) (runs: 512, μ: 794701, ~: 539171)\nLogs:\n  Bound result 19\n  Bound result 101839410907279812388767662836639908865888593604549026128564316779615743225703\n  Bound result 16\n  Bound result 17\n\n[PASS] testFuzz_InvalidGeometryAtAnyPositionRollsBackAndCanBeRetried(bytes32,uint8,uint8,uint8) (runs: 512, μ: 738355, ~: 511196)\nLogs:\n  Bound result 6\n  Bound result 243\n  Bound result 1\n\n[PASS] test_ZeroAndMaximumIdsHaveTheSameFinalityRules() (gas: 168755)\nLogs:\n  Bound result 0\n\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 1.41s (1.66s CPU time)\n\nRan 23 tests for test/OGClubRaffle.t.sol:RaffleTest\n[PASS] testFuzz_ExactlyMinPrizesAndTicketsWinWithNoDuplicateTicket(uint8,uint8,bytes32) (runs: 256, μ: 1644191, ~: 1080900)\nLogs:\n  Bound result 3\n  Bound result 27\n\n[PASS] testFuzz_NoticeAlwaysMeasuredFromCreation(uint32) (runs: 256, μ: 241083, ~: 240936)\nLogs:\n  Bound result 5\n\n[PASS] test_ClaimToCannotRedirectAnotherWalletInTheSameBatch() (gas: 1239609)\n[PASS] test_ContractWalletCanRedirectButNobodyElseCan() (gas: 2015153)\n[PASS] test_DrawHeaderAndTargetExactBoundaries() (gas: 641712)\n[PASS] test_DuplicateWithinBatchRollsBackEverythingAndBitmapCrossesWords() (gas: 937264)\n[PASS] test_EntryFailureRollsBackRangesCapsAndPoints() (gas: 833603)\n[PASS] test_EntryWindowAndWalletCapExactBoundaries() (gas: 808341)\n[PASS] test_HugeTicketAndPrizeCountsDoNotRequireIterationToDrawOrClaim() (gas: 925425)\n[PASS] test_InvalidConfigurationPoolsLinesAndTickets() (gas: 941928)\n[PASS] test_Maximum32PoolsAnd128PrizeLines() (gas: 15557738)\n[PASS] test_MultiItemPoolMintsExactQuantitiesIncludingDuplicateAndZeroIds() (gas: 2370129)\n[PASS] test_NoticeExactBoundariesAndCancellation() (gas: 540021)\n[PASS] test_OwnerCannotModifyTermsPauseOrCancelStartedRaffle() (gas: 450829)\n[PASS] test_ReceiverCannotReenterEitherClaimPath() (gas: 1991045)\n[PASS] test_RejectingWalletDoesNotBlockOtherWinnersAndEmptyClaimRejected() (gas: 2030167)\n[PASS] test_RetargetOnlyAt257AndOldHeaderCannotDrawNewTarget() (gas: 560166)\n[PASS] test_RevokedMinterClaimIsRetryableAndDoesNotReroll() (gas: 1017518)\n[PASS] test_TicketPriceMultiplicationOverflowDoesNotSpendOrRecordEntry() (gas: 370843)\n[PASS] test_UnlimitedCapIsPerPoolAndRangesStayContiguous() (gas: 878602)\n[PASS] test_UnsoldPrizesAreRandomPositionsNotAlwaysTheTail() (gas: 3336643)\n[PASS] test_WrongKEntryAndDoubleClaimsRevertAtomically() (gas: 1332250)\n[PASS] test_WrongNumberInAuthenticatedHeaderRejected() (gas: 365306)\nSuite result: ok. 23 passed; 0 failed; 0 skipped; finished in 1.26s (1.29s CPU time)\n\nRan 6 tests for test/RaffleAtomicity.t.sol:RaffleAtomicityTest\n[PASS] testFuzz_MultiItemClaimsCanBeShuffledAndFragmented(uint8[4],bytes32) (runs: 512, μ: 3788955, ~: 3714102)\nLogs:\n  Bound result 6\n  Bound result 1\n  Bound result 6\n  Bound result 1\n\n[PASS] test_ClaimBitmapIsIndependentAcrossRafflesAndPools() (gas: 2082130)\n[PASS] test_LateInvalidEntryRollsBackAnEarlierWalletMint() (gas: 1264278)\n[PASS] test_LateInvalidPoolCreationDoesNotLeaveRaffleOrPrizeStorage() (gas: 507505)\n[PASS] test_LateReceiverRejectionRollsBackPreviouslyMintedWalletGroup() (gas: 2144305)\n[PASS] test_PrizeLimitAppliesToSumAcrossLinesAndRollbackAllowsReuse() (gas: 498160)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 1.88s (1.88s CPU time)\n\nRan 1 test for test/ClubsReview.t.sol:ClubsReviewFuzzTest\n[PASS] testFuzz_RandomSequencesMatchModel(uint256) (runs: 200, μ: 16638457, ~: 16812237)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.05s (2.04s CPU time)\n\nRan 6 tests for test/ClubsReview.t.sol:ClubsReviewWallsTest\n[PASS] test_BadWallCoordinatesRevert() (gas: 551743)\n[PASS] test_DoorPositionOnSideOne() (gas: 837622)\n[PASS] test_EveryWidthStartAndSideAtEveryLevelAgainstModel() (gas: 422207016)\n[PASS] test_OverlapPerSideAndSidesAndFloorIndependent() (gas: 1368354)\n[PASS] test_PastEndThenFitsAfterUpgrade() (gas: 1960110)\n[PASS] test_WallFootprintRulesAndLockCarriesFlag() (gas: 547448)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 2.61s (2.60s CPU time)\n\nRan 1 test for test/VaultInvariant.t.sol:VaultInvariantTest\n[PASS] invariant_VaultAlwaysCoversReservationsAndOnlyClaimsMoveTokens() (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------+----------+-------+---------+----------╮\n| Contract     | Selector | Calls | Reverts | Discards |\n+======================================================+\n| VaultHandler | advance  | 1324  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| VaultHandler | cancel   | 1381  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| VaultHandler | claim    | 1402  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| VaultHandler | fund     | 1347  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| VaultHandler | propose  | 1368  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| VaultHandler | release  | 1370  | 0       | 0        |\n╰--------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 1000000000000000000000\n  Bound result 100000000000000000000\n  Bound result 604800\n  Bound result 100000000000000000000\n  Bound result 259200\n  Bound result 345600\n  Bound result 100000000000000000000\n  Bound result 8035200\n  Bound result 1001\n  Bound result 1001\n  Bound result 3575\n  Bound result 7172\n  Bound result 72\n  Bound result 514264337593543950335\n  Bound result 7036\n  Bound result 1001\n  Bound result 188509602034755484695\n  Bound result 804\n  Bound result 1069\n  Bound result 377\n  Bound result 4\n  Bound result 15296\n  Bound result 1001\n  Bound result 523433401375661689600\n  Bound result 74565\n  Bound result 6\n  Bound result 1\n  Bound result 15\n  Bound result 2015\n  Bound result 1001\n  Bound result 1605765\n  Bound result 937697738969205664597\n  Bound result 7620516\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.58s (3.58s CPU time)\n\nRan 1 test for test/ClubsLaunchInvariant.t.sol:ClubsLaunchFuzzTest\n[PASS] testFuzz_LevelsWallsFloorShapesRotationsAndDuplicateDesigns(bytes32) (runs: 256, μ: 34611308, ~: 34498992)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.56s (3.55s CPU time)\n\nRan 1 test for test/StakingInvariant.t.sol:StakingInvariantTest\n[PASS]\nStakingInvariantTest invariants:\n[PASS] invariant_PointsAppearOnlyByTimeWeightedAccrualAndLeaveOnlyBySpending\n[PASS] invariant_StakingBalanceEqualsAllStakes\n StakingInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭----------------+-------------------+-------+---------+----------╮\n| Contract       | Selector          | Calls | Reverts | Discards |\n+=================================================================+\n| StakingHandler | advance           | 1641  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | spend             | 1579  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | stake             | 1664  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | unauthorizedSpend | 1612  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | unstake           | 1696  | 0       | 0        |\n╰----------------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 10000000000000000000\n  Bound result 86400\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 2566645973319348953\n  Bound result 0\n  Bound result 1001\n  Bound result 7\n  Bound result 3339054996095811515\n  Bound result 2264337593543950335\n  Bound result 1001\n  Bound result 1148\n  Bound result 889\n  Bound result 23\n  Bound result 742021439101673\n  Bound result 0\n  Bound result 27810568\n  Bound result 1001\n  Bound result 7433\n  Bound result 2879\n  Bound result 1001\n  Bound result 1001\n  Bound result 514264337593543950335\n  Bound result 2222719342355442645\n  Bound result 2310\n  Bound result 427\n  Bound result 521\n  Bound result 9\n  Bound result 135999\n  Bound result 285917\n  Bound result 3351\n  Bound result 0\n  Bound result 3214\n  Bound result 1001\n  Bound result 161499323866507264041\n  Bound result 1\n  Bound result 1001\n  Bound result 2\n  Bound result 18\n  Bound result 514264337593543950335\n  Bound result 280\n  Bound result 577\n  Bound result 1001\n  Bound result 5795278380\n  Bound result 2346\n  Bound result 514264337593543950334\n  Bound result 600\n  Bound result 154088948358706631171\n  Bound result 6802805610\n  Bound result 18322\n  Bound result 1001\n  Bound result 1287\n  Bound result 6044\n  Bound result 1145\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 4.68s (4.67s CPU time)\n\nRan 1 test for test/StakingInvariant.t.sol:FeeStakingInvariantTest\n[PASS]\nFeeStakingInvariantTest invariants:\n[PASS] invariant_PointsAppearOnlyByTimeWeightedAccrualAndLeaveOnlyBySpending\n[PASS] invariant_StakingBalanceEqualsAllStakes\n FeeStakingInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭----------------+-------------------+-------+---------+----------╮\n| Contract       | Selector          | Calls | Reverts | Discards |\n+=================================================================+\n| StakingHandler | advance           | 1641  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | spend             | 1579  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | stake             | 1664  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | unauthorizedSpend | 1612  | 0       | 0        |\n|----------------+-------------------+-------+---------+----------|\n| StakingHandler | unstake           | 1696  | 0       | 0        |\n╰----------------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 10000000000000000000\n  Bound result 86400\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 8766645973316035591\n  Bound result 0\n  Bound result 1001\n  Bound result 7\n  Bound result 0\n  Bound result 6264337593543950335\n  Bound result 1001\n  Bound result 1159\n  Bound result 1203\n  Bound result 23\n  Bound result 742021439101673\n  Bound result 7\n  Bound result 27810568\n  Bound result 20\n  Bound result 7581\n  Bound result 2852\n  Bound result 503\n  Bound result 375\n  Bound result 1001\n  Bound result 1001\n  Bound result 514264337593543950335\n  Bound result 26538321317662994\n  Bound result 96664527\n  Bound result 90\n  Bound result 6386\n  Bound result 5581\n  Bound result 135999\n  Bound result 285917\n  Bound result 205\n  Bound result 0\n  Bound result 33\n  Bound result 1001\n  Bound result 100\n  Bound result 2339704512158380131471\n  Bound result 1001\n  Bound result 2\n  Bound result 163699971731539783122\n  Bound result 514264337593543950335\n  Bound result 11\n  Bound result 1700\n  Bound result 1001\n  Bound result 5795278380\n  Bound result 2657\n  Bound result 514264337593543950334\n  Bound result 600\n  Bound result 154088948358706631171\n  Bound result 6802805610\n  Bound result 18322\n  Bound result 1001\n  Bound result 851\n  Bound result 6518\n  Bound result 749\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 5.63s (5.50s CPU time)\n\nRan 2 tests for test/ClubsReviewInvariant.t.sol:ClubsReviewInvariantTest\n[PASS]\nClubsReviewInvariantTest invariants:\n[PASS] invariant_EveryClubIsAPepeThatMintedOnce\n[PASS] invariant_NoOGHeldAndPaymentsSplitExactly\n[PASS] invariant_PiecesEqualFurnitureHeldAndLayoutsValid\n ClubsReviewInvariantTest invariants (runs: 64, calls: 5120, reverts: 0)\n\n╭--------------------+--------------+-------+---------+----------╮\n| Contract           | Selector     | Calls | Reverts | Discards |\n+================================================================+\n| ClubsReviewHandler | approveClub  | 577   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | delegate     | 579   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | mintClub     | 565   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | mintPepe     | 540   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | place        | 578   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | setSale      | 568   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | transferClub | 539   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | transferPepe | 613   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| ClubsReviewHandler | upgrade      | 561   | 0       | 0        |\n╰--------------------+--------------+-------+---------+----------╯\n\n[PASS] test_HandlerExercisesEveryPath() (gas: 7967473)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 6.36s (6.37s CPU time)\n\nRan 15 tests for test/OGClubStaking.t.sol:StakingTest\n[PASS] testFuzz_CheckpointFrequencyDoesNotChangePoints(uint96,uint32,uint8) (runs: 256, μ: 1152921, ~: 845954)\nLogs:\n  Bound result 1001\n  Bound result 12411\n  Bound result 47\n\n[PASS] testFuzz_FeeRoundsUpAndConservesBalance(uint96) (runs: 256, μ: 282894, ~: 283052)\nLogs:\n  Bound result 293\n\n[PASS] testFuzz_WholeTokenAccrualAcrossSupportedDecimals(uint8,uint96,uint32) (runs: 256, μ: 1219251, ~: 1219445)\nLogs:\n  Bound result 0\n  Bound result 702697\n  Bound result 1139\n\n[PASS] test_AccrueBeforeBalanceChangesAndNoLock() (gas: 427758)\n[PASS] test_CheckpointsPreserveSubWeiAccrualAndFullExitFraction() (gas: 1366740)\n[PASS] test_DecimalsReadOnFirstUseAndNormalizeWholeTokens() (gas: 2190760)\n[PASS] test_DonationsNeitherCreateStakeNorAwardPoints() (gas: 343342)\n[PASS] test_ExactContinuousAccrualAtBoundariesAndSpend() (gas: 299793)\n[PASS] test_FeeOnTransferCreditsOnlyReceivedAndCannotInflatePoints() (gas: 381142)\n[PASS] test_InvalidAmountsUnauthorizedSpendAndOwnerCannotTouchStakes() (gas: 406963)\n[PASS] test_MaximumPackedBalanceAndRateAccrueWithoutIntermediateOverflow() (gas: 448069)\n[PASS] test_NoReturnAndFalseReturnTokens() (gas: 734103)\n[PASS] test_TinyUnstakesAlwaysPayFee() (gas: 360201)\n[PASS] test_TokenCallbackCannotSpendOrReenterStakeOrUnstake() (gas: 685618)\n[PASS] test_ZeroReceiptAndSenderSideFeeRevertAtomically() (gas: 554565)\nSuite result: ok. 15 passed; 0 failed; 0 skipped; finished in 6.42s (6.81s CPU time)\n\nRan 1 test for test/ClubsInvariant.t.sol:ClubsLayoutFuzzTest\n[PASS] testFuzz_RandomPlacementSequenceMatchesIndependentGridAndFailuresAreAtomic(bytes32) (runs: 256, μ: 94702450, ~: 94683838)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 6.48s (6.48s CPU time)\n\nRan 1 test for test/FurnitureInvariant.t.sol:FurnitureInvariantTest\n[PASS]\nFurnitureInvariantTest invariants:\n[PASS] invariant_BalancesAndSupplyMatchGhosts\n[PASS] invariant_FrozenMetadataNeverChangesAndRoyaltyIsBounded\n[PASS] invariant_OwnerNeverHoldsOrDestroysAnything\n FurnitureInvariantTest invariants (runs: 96, calls: 7680, reverts: 0)\n\n╭------------------+--------------------------+-------+---------+----------╮\n| Contract         | Selector                 | Calls | Reverts | Discards |\n+==========================================================================+\n| FurnitureHandler | mint                     | 1125  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | operatorBatchTransfer    | 1134  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | ownerMetadata            | 1030  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | ownerTriesToSeize        | 1057  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | revokeApproval           | 1102  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | strangerCannotAdminister | 1157  | 0       | 0        |\n|------------------+--------------------------+-------+---------+----------|\n| FurnitureHandler | transfer                 | 1075  | 0       | 0        |\n╰------------------+--------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 5\n  Bound result 14\n  Bound result 14\n  Bound result 14\n  Bound result 1\n  Bound result 0\n  Bound result 2\n  Bound result 14\n  Bound result 0\n  Bound result 7\n  Bound result 6\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 4\n  Bound result 0\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 1\n  Bound result 12\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 960\n  Bound result 11\n  Bound result 7\n  Bound result 9\n  Bound result 14\n  Bound result 3\n  Bound result 1\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 2\n  Bound result 1\n  Bound result 1\n  Bound result 2\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 2\n  Bound result 14\n  Bound result 902\n  Bound result 10\n  Bound result 14\n  Bound result 12\n  Bound result 12\n  Bound result 35\n  Bound result 0\n  Bound result 8\n  Bound result 0\n  Bound result 20\n  Bound result 14\n  Bound result 2\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 6\n  Bound result 0\n  Bound result 1\n  Bound result 11\n  Bound result 1\n  Bound result 3\n  Bound result 0\n  Bound result 2\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 6\n  Bound result 0\n  Bound result 4\n  Bound result 0\n  Bound result 5\n  Bound result 2\n  Bound result 3\n  Bound result 0\n  Bound result 6\n  Bound result 0\n  Bound result 1007\n  Bound result 16\n  Bound result 14\n  Bound result 5\n  Bound result 21\n  Bound result 3\n  Bound result 29\n  Bound result 10\n  Bound result 2\n  Bound result 2\n  Bound result 8\n  Bound result 1\n  Bound result 1\n  Bound result 0\n  Bound result 4\n  Bound result 0\n  Bound result 1\n  Bound result 7\n  Bound result 1\n  Bound result 1\n  Bound result 0\n  Bound result 1\n  Bound result 0\n  Bound result 2\n  Bound result 0\n  Bound result 21\n  Bound result 11\n  Bound result 10\n  Bound result 5\n  Bound result 1\n  Bound result 3\n  Bound result 6\n  Bound result 14\n  Bound result 25\n  Bound result 3\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 10.91s (10.90s CPU time)\n\nRan 1 test for test/FeeFlowInvariant.t.sol:TaxedFeeFlowInvariantTest\n[PASS]\nTaxedFeeFlowInvariantTest invariants:\n[PASS] invariant_EachReservationEqualsUnpaidAllocationsOfAnOpenSeason\n[PASS] invariant_PointsConservedThroughPartialExitsClaimsAndRestakes\n[PASS] invariant_TokensConservedAcrossStakeFeeVaultPayoutAndBurn\n TaxedFeeFlowInvariantTest invariants (runs: 128, calls: 12288, reverts: 0)\n\n╭----------------+-----------+-------+---------+----------╮\n| Contract       | Selector  | Calls | Reverts | Discards |\n+=========================================================+\n| FeeFlowHandler | advance   | 1157  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | badProof  | 1051  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | cancel    | 1089  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | claim     | 1105  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | exit      | 1112  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | overspend | 1117  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | propose   | 1116  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | release   | 1108  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | spend     | 1106  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | stake     | 1174  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | unstake   | 1153  | 0       | 0        |\n╰----------------+-----------+-------+---------+----------╯\n\nLogs:\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 50000000000\n  Bound result 100000000\n  Bound result 604800\n  Bound result 100000000\n  Bound result 259200\n  Bound result 1000000000000000000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 40000000\n  Bound result 7\n  Bound result 1001\n  Bound result 1928028032\n  Bound result 92499998999\n  Bound result 1001\n  Bound result 536\n  Bound result 41889\n  Bound result 4\n  Bound result 5987\n  Bound result 42500000000\n  Bound result 5538\n  Bound result 1001\n  Bound result 80\n  Bound result 92500000000\n  Bound result 13507\n  Bound result 203\n  Bound result 13517\n  Bound result 12516\n  Bound result 25072\n  Bound result 33423433236\n  Bound result 8260\n  Bound result 1915369264337144595217465\n  Bound result 12412513673394121533051213\n  Bound result 1001\n  Bound result 64\n  Bound result 8639\n  Bound result 1001\n  Bound result 7852840661987759\n  Bound result 119939588\n  Bound result 75\n  Bound result 252649\n  Bound result 1314\n  Bound result 1001\n  Bound result 7266\n  Bound result 150\n  Bound result 243\n  Bound result 701\n  Bound result 15378845084\n  Bound result 1347\n  Bound result 662\n  Bound result 886963238164\n  Bound result 11235\n  Bound result 820440995302\n  Bound result 41649754305\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 15.08s (15.03s CPU time)\n\nRan 1 test for test/FeeFlowInvariant.t.sol:FeeFlowInvariantTest\n[PASS]\nFeeFlowInvariantTest invariants:\n[PASS] invariant_EachReservationEqualsUnpaidAllocationsOfAnOpenSeason\n[PASS] invariant_PointsConservedThroughPartialExitsClaimsAndRestakes\n[PASS] invariant_TokensConservedAcrossStakeFeeVaultPayoutAndBurn\n FeeFlowInvariantTest invariants (runs: 128, calls: 12288, reverts: 0)\n\n╭----------------+-----------+-------+---------+----------╮\n| Contract       | Selector  | Calls | Reverts | Discards |\n+=========================================================+\n| FeeFlowHandler | advance   | 1157  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | badProof  | 1051  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | cancel    | 1089  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | claim     | 1105  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | exit      | 1112  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | overspend | 1117  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | propose   | 1116  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | release   | 1108  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | spend     | 1106  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | stake     | 1174  | 0       | 0        |\n|----------------+-----------+-------+---------+----------|\n| FeeFlowHandler | unstake   | 1153  | 0       | 0        |\n╰----------------+-----------+-------+---------+----------╯\n\nLogs:\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 100000000000\n  Bound result 50000000000\n  Bound result 100000000\n  Bound result 604800\n  Bound result 100000000\n  Bound result 259200\n  Bound result 1000000000000000000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 1296000\n  Bound result 40000000\n  Bound result 7\n  Bound result 1001\n  Bound result 2552851540\n  Bound result 99999998999\n  Bound result 1001\n  Bound result 649\n  Bound result 41889\n  Bound result 4\n  Bound result 5800\n  Bound result 50000000000\n  Bound result 5800\n  Bound result 1001\n  Bound result 80\n  Bound result 99999998999\n  Bound result 12435\n  Bound result 203\n  Bound result 12967\n  Bound result 11771\n  Bound result 13516\n  Bound result 813370655\n  Bound result 13162513761221408967953210\n  Bound result 1268352740109729171207280\n  Bound result 64\n  Bound result 7806\n  Bound result 1001\n  Bound result 7852840661987759\n  Bound result 398\n  Bound result 252649\n  Bound result 4334\n  Bound result 806801\n  Bound result 1001\n  Bound result 5468\n  Bound result 1001\n  Bound result 243\n  Bound result 8438\n  Bound result 255\n  Bound result 1236\n  Bound result 962\n  Bound result 96633790772\n  Bound result 4288775754\n  Bound result 756784575\n  Bound result 968217518749\n  Bound result 968217518749\n  Bound result 5878\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 15.75s (15.70s CPU time)\n\nRan 1 test for test/ClubsAdversarialInvariant.t.sol:ClubsAdversarialInvariantTest\n[PASS]\nClubsAdversarialInvariantTest invariants:\n[PASS] invariant_LayoutsFitNeverOverlapNeverCoverDoor\n[PASS] invariant_LockedFootprintsNeverChange\n[PASS] invariant_NoTokensEverHeldAndSplitConserved\n[PASS] invariant_PiecesEqualCustodyPerItem\n ClubsAdversarialInvariantTest invariants (runs: 64, calls: 4096, reverts: 0)\n\n╭-------------------------+--------------+-------+---------+----------╮\n| Contract                | Selector     | Calls | Reverts | Discards |\n+=====================================================================+\n| AdversarialClubsHandler | approveClub  | 838   | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| AdversarialClubsHandler | mint         | 808   | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| AdversarialClubsHandler | place        | 818   | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| AdversarialClubsHandler | setFootprint | 826   | 0       | 0        |\n|-------------------------+--------------+-------+---------+----------|\n| AdversarialClubsHandler | transferClub | 806   | 0       | 0        |\n╰-------------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 2\n  Bound result 2\n  Bound result 0\n  Bound result 5\n  Bound result 5\n  Bound result 1\n  Bound result 8\n  Bound result 2\n  Bound result 3\n  Bound result 3\n  Bound result 8\n  Bound result 4\n  Bound result 3\n  Bound result 2\n  Bound result 1\n  Bound result 4\n  Bound result 3\n  Bound result 0\n  Bound result 6\n  Bound result 4\n  Bound result 1\n  Bound result 3\n  Bound result 2\n  Bound result 2\n  Bound result 6\n  Bound result 0\n  Bound result 3\n  Bound result 0\n  Bound result 10\n  Bound result 1\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 17.96s (17.94s CPU time)\n\nRan 1 test for test/ClubsInvariant.t.sol:ClubsInvariantTest\n[PASS]\nClubsInvariantTest invariants:\n[PASS] invariant_EveryHeldFurniturePieceHasExactlyOnePermanentLayoutEntry\n[PASS] invariant_PaymentsNeverRemainInClubsAndSplitExactly\n ClubsInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------+--------------+-------+---------+----------╮\n| Contract     | Selector     | Calls | Reverts | Discards |\n+==========================================================+\n| ClubsHandler | mint         | 2018  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| ClubsHandler | place        | 2032  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| ClubsHandler | sale         | 2059  | 0       | 0        |\n|--------------+--------------+-------+---------+----------|\n| ClubsHandler | transferClub | 2083  | 0       | 0        |\n╰--------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 31.05s (31.03s CPU time)\n\nRan 2 tests for test/FootprintCatalogueInvariant.t.sol:FootprintCatalogueInvariantTest\n[PASS]\nFootprintCatalogueInvariantTest invariants:\n[PASS] invariant_DefinitionsAreFinalAndBatchesAtomicAcrossHandoffs\n[PASS] invariant_PermanentCustodyEqualsOriginalQueuedLayouts\n FootprintCatalogueInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭---------------------------+--------------+-------+---------+----------╮\n| Contract                  | Selector     | Calls | Reverts | Discards |\n+=======================================================================+\n| FootprintCatalogueHandler | accept       | 1026  | 0       | 0        |\n|---------------------------+--------------+-------+---------+----------|\n| FootprintCatalogueHandler | defineBatch  | 999   | 0       | 0        |\n|---------------------------+--------------+-------+---------+----------|\n| FootprintCatalogueHandler | defineOne    | 1052  | 0       | 0        |\n|---------------------------+--------------+-------+---------+----------|\n| FootprintCatalogueHandler | execute      | 1023  | 0       | 0        |\n|---------------------------+--------------+-------+---------+----------|\n| FootprintCatalogueHandler | nominate     | 1030  | 0       | 0        |\n|---------------------------+--------------+-------+---------+----------|\n| FootprintCatalogueHandler | queue        | 1021  | 0       | 0        |\n|---------------------------+--------------+-------+---------+----------|\n| FootprintCatalogueHandler | transferClub | 1024  | 0       | 0        |\n|---------------------------+--------------+-------+---------+----------|\n| FootprintCatalogueHandler | upgrade      | 1017  | 0       | 0        |\n╰---------------------------+--------------+-------+---------+----------╯\n\nLogs:\n  Bound result 2\n  Bound result 1\n  Bound result 2\n  Bound result 3\n  Bound result 0\n  Bound result 4\n  Bound result 8\n  Bound result 4\n  Bound result 4\n  Bound result 5\n  Bound result 2\n  Bound result 3\n  Bound result 3\n  Bound result 9\n  Bound result 3\n  Bound result 3\n  Bound result 1\n  Bound result 3\n  Bound result 1\n  Bound result 4\n  Bound result 2\n  Bound result 3\n  Bound result 4\n  Bound result 0\n  Bound result 2\n  Bound result 3\n  Bound result 3\n  Bound result 2\n  Bound result 1\n  Bound result 3\n  Bound result 3\n\n[PASS] test_HandlerCoversBatchFailuresTransfersUpgradesAndStaleOwnerCalls() (gas: 7932221)\nLogs:\n  Bound result 2\n  Bound result 1\n  Bound result 2\n  Bound result 3\n  Bound result 0\n  Bound result 4\n  Bound result 8\n  Bound result 4\n  Bound result 4\n  Bound result 5\n  Bound result 5\n  Bound result 5\n  Bound result 5\n  Bound result 5\n  Bound result 4\n  Bound result 2\n  Bound result 2\n  Bound result 1\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 43.18s (43.16s CPU time)\n\nRan 13 tests for test/OGClubClubs.t.sol:ClubsMintTest\n[PASS] testFuzz_PaymentConservation(uint128,uint8) (runs: 256, μ: 2371074, ~: 1987161)\nLogs:\n  Bound result 365171547050976\n  Bound result 1\n\n[PASS] test_BurnSinkCannotAlsoBeVaultAndPayerCannotPayItself() (gas: 21192)\n[PASS] test_ClosedSaleAndNonHolder() (gas: 170614)\n[PASS] test_ExactOddSplitMintEventsAndEnumerationThroughTransfers() (gas: 767355)\n[PASS] test_IdentityInterfacesAndEmptyClub() (gas: 208278)\n[PASS] test_NonReceiverRollsBackPaymentAndPepeEligibility() (gas: 805099)\n[PASS] test_ReceiverCannotDoubleMintAndMayRejectAtomically() (gas: 1487824)\n[PASS] test_SecondRecipientAndFinalFirstRecipientBalancesMustBothMatch() (gas: 1821839)\n[PASS] test_ShortApprovalRollsBackFirstLeg() (gas: 242315)\n[PASS] test_ShortBalanceRollsBackFirstLeg() (gas: 388943)\n[PASS] test_TaxedTokensAndFalseReturnsRevertAtomically() (gas: 1787558)\n[PASS] test_TokenCallbackCannotReenterMintOrUpgrade() (gas: 1831691)\n[PASS] test_ZeroBurnAtPriceOneAndNoReturnToken() (gas: 702030)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 43.89s (706.07ms CPU time)\n\nRan 1 test for test/ClubsLaunchInvariant.t.sol:ClubsLaunchInvariantTest\n[PASS]\nClubsLaunchInvariantTest invariants:\n[PASS] invariant_AllLayoutsMatchIndependentModelCustodyAndUniqueDesigns\n[PASS] invariant_EveryClubIsAPepeMintedExactlyOnceAndAllPaymentsConserved\n ClubsLaunchInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭--------------------+--------------+-------+---------+----------╮\n| Contract           | Selector     | Calls | Reverts | Discards |\n+================================================================+\n| LaunchClubsHandler | approveClub  | 1018  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | delegatePepe | 1035  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | mint         | 1012  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | place        | 1026  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | sale         | 1002  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | transferClub | 1016  | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | transferPepe | 968   | 0       | 0        |\n|--------------------+--------------+-------+---------+----------|\n| LaunchClubsHandler | upgrade      | 1115  | 0       | 0        |\n╰--------------------+--------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 49.32s (49.31s CPU time)\n\nRan 1 test for test/RaffleSequenceInvariant.t.sol:RaffleSequenceInvariantTest\n[PASS]\nRaffleSequenceInvariantTest invariants:\n[PASS] invariant_ClaimBitsMatchMintReceiptsAndNeverMintUnawardedPrizes\n[PASS] invariant_FinalizedDrawsAndTermsNeverChange\n[PASS] invariant_PointsSpentExactlyMatchAcceptedRanges\n RaffleSequenceInvariantTest invariants (runs: 128, calls: 12288, reverts: 0)\n\n╭-----------------------+----------+-------+---------+----------╮\n| Contract              | Selector | Calls | Reverts | Discards |\n+===============================================================+\n| RaffleSequenceHandler | advance  | 1572  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | badClaim | 1538  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | cancel   | 1447  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | claim    | 1505  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | commit   | 1490  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | create   | 1584  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | draw     | 1608  | 0       | 0        |\n|-----------------------+----------+-------+---------+----------|\n| RaffleSequenceHandler | enter    | 1544  | 0       | 0        |\n╰-----------------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 86400\n  Bound result 0\n  Bound result 0\n  Bound result 5\n  Bound result 5\n  Bound result 2\n  Bound result 1\n  Bound result 172800\n  Bound result 0\n  Bound result 172800\n  Bound result 0\n  Bound result 172800\n  Bound result 0\n  Bound result 1\n  Bound result 86400\n  Bound result 0\n  Bound result 4\n  Bound result 92\n  Bound result 9\n  Bound result 215\n  Bound result 20\n  Bound result 53\n  Bound result 19\n  Bound result 2\n  Bound result 0\n  Bound result 151\n  Bound result 1\n  Bound result 24666\n  Bound result 152421\n  Bound result 241\n  Bound result 70783\n  Bound result 23\n  Bound result 7\n  Bound result 4\n  Bound result 157\n  Bound result 67\n  Bound result 192\n  Bound result 14\n  Bound result 77\n  Bound result 11\n  Bound result 4561\n  Bound result 297\n  Bound result 6\n  Bound result 16507\n  Bound result 201\n  Bound result 9155\n  Bound result 17\n  Bound result 6\n  Bound result 133\n  Bound result 2\n  Bound result 1\n  Bound result 5\n  Bound result 2\n  Bound result 199\n  Bound result 8\n  Bound result 5\n  Bound result 1579\n  Bound result 25\n  Bound result 5\n  Bound result 150698\n  Bound result 23\n  Bound result 206\n  Bound result 101\n  Bound result 134\n  Bound result 7\n  Bound result 1\n  Bound result 1\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 82.43s (82.43s CPU time)\n\nRan 44 test suites in 82.45s (360.70s CPU time): 279 tests passed, 0 failed, 0 skipped (279 total tests)\n","passed":true},{"durationMs":203,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"OGClubClubs.acceptOwnership()\",\"OGClubClubs.approve(address,uint256)\",\"OGClubClubs.freezeMetadata()\",\"OGClubClubs.mintClub(uint256)\",\"OGClubClubs.onERC1155Received(address,address,uint256,uint256,bytes)\",\"OGClubClubs.renounceOwnership()\",\"OGClubClubs.safeTransferFrom(address,address,uint256)\",\"OGClubClubs.safeTransferFrom(address,address,uint256,bytes)\",\"OGClubClubs.setApprovalForAll(address,bool)\",\"OGClubClubs.setBaseURI(string)\",\"OGClubClubs.setFootprint(uint256,uint8,uint8,bool)\",\"OGClubClubs.setFootprints(uint256[],uint8[],uint8[],bool[])\",\"OGClubClubs.setRoyalty(address,uint96)\",\"OGClubClubs.setSaleOpen(bool)\",\"OGClubClubs.transferFrom(address,address,uint256)\",\"OGClubClubs.transferOwnership(address)\",\"OGClubClubs.upgradeClub(uint256)\",\"OGClubFarmVault.acceptOwnership()\",\"OGClubFarmVault.cancelSeason(uint256)\",\"OGClubFarmVault.claim(uint256,address,uint256,bytes32[])\",\"OGClubFarmVault.proposeSeason(bytes32,uint256)\",\"OGClubFarmVault.releaseSeason(uint256)\",\"OGClubFarmVault.renounceOwnership()\",\"OGClubFarmVault.transferOwnership(address)\",\"OGClubFurniture.acceptOwnership()\",\"OGClubFurniture.activateMinter(address)\",\"OGClubFurniture.cancelMinter(address)\",\"OGClubFurniture.freezeMetadata()\",\"OGClubFurniture.grantMinter(address)\",\"OGClubFurniture.mintBatch(address,uint256[],uint256[])\",\"OGClubFurniture.renounceOwnership()\",\"OGClubFurniture.revokeMinter(address)\",\"OGClubFurniture.safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\",\"OGClubFurniture.safeTransferFrom(address,address,uint256,uint256,bytes)\",\"OGClubFurniture.setApprovalForAll(address,bool)\",\"OGClubFurniture.setBaseURI(string)\",\"OGClubFurniture.setRoyalty(address,uint96)\",\"OGClubFurniture.transferOwnership(address)\",\"OGClubRaffle.acceptOwnership()\",\"OGClubRaffle.cancelRaffle(uint256)\",\"OGClubRaffle.claim(uint256,uint256,(uint256,uint256)[])\",\"OGClubRaffle.claimTo(uint256,uint256,(uint256,uint256)[],address)\",\"OGClubRaffle.commitDraw(uint256)\",\"OGClubRaffle.createRaffle(uint256,uint256,(uint8,uint256,uint256,(uint256,uint256)[])[])\",\"OGClubRaffle.draw(uint256,bytes)\",\"OGClubRaffle.enter(uint256,uint256,uint256)\",\"OGClubRaffle.renounceOwnership()\",\"OGClubRaffle.transferOwnership(address)\",\"OGClubStaking.acceptOwnership()\",\"OGClubStaking.activateSpender(address)\",\"OGClubStaking.cancelSpender(address)\",\"OGClubStaking.grantSpender(address)\",\"OGClubStaking.renounceOwnership()\",\"OGClubStaking.revokeSpender(address)\",\"OGClubStaking.spendPoints(address,uint256)\",\"OGClubStaking.stake(uint256)\",\"OGClubStaking.transferOwnership(address)\",\"OGClubStaking.unstake(uint256)\"],\"files\":{\".gitignore\":4,\"ADAPTATION.md\":121,\"README.md\":608,\"VENDOR.md\":13,\"foundry.toml\":22,\"launch.json\":54,\"script/Deploy.s.sol\":59,\"script/DeployClubs.s.sol\":226,\"script/DeployMainnet.s.sol\":166,\"script/club-footprints.json\":1,\"script/encode_header.py\":82,\"src/OGClubClubs.sol\":416,\"src/OGClubFarmVault.sol\":115,\"src/OGClubFurniture.sol\":138,\"src/OGClubRaffle.sol\":357,\"src/OGClubStaking.sol\":179,\"src/interfaces/IDelegateRegistry.sol\":10,\"src/libraries/BlockHeader.sol\":70,\"src/libraries/Permutation.sol\":30,\"src/mocks/MockOG.sol\":21,\"src/mocks/MockSwarmPepe.sol\":13,\"test/ADDITIONAL_COVERAGE.md\":87,\"test/BlockHeader.t.sol\":144,\"test/ClubsAdversarial.t.sol\":730,\"test/ClubsAdversarialInvariant.t.sol\":482,\"test/ClubsDeployment.t.sol\":349,\"test/ClubsFootprints.t.sol\":225,\"test/ClubsInvariant.t.sol\":335,\"test/ClubsLaunch.t.sol\":726,\"test/ClubsLaunchInvariant.t.sol\":464,\"test/ClubsPlacement.t.sol\":322,\"test/ClubsReview.t.sol\":840,\"test/ClubsReviewDeploy.t.sol\":118,\"test/ClubsReviewInvariant.t.sol\":370,\"test/Deployment.t.sol\":119,\"test/FeeFlowInvariant.t.sol\":386,\"test/FootprintBatchProperties.t.sol\":170,\"test/FootprintCatalogueInvariant.t.sol\":471,\"test/FurnitureInvariant.t.sol\":248,\"test/Gas.t.sol\":138,\"test/ImportedAudit.t.sol\":180,\"test/MAINNET_CONTINUATION_COVERAGE.md\":51,\"test/MainnetDeployment.t.sol\":284,\"test/OGClubClubs.t.sol\":573,\"test/OGClubFarmVault.t.sol\":309,\"test/OGClubFurniture.t.sol\":362,\"test/OGClubRaffle.t.sol\":537,\"test/OGClubStaking.t.sol\":280,\"test/Permutation.t.sol\":49,\"test/RaffleAtomicity.t.sol\":207,\"test/RaffleSequenceInvariant.t.sol\":503,\"test/RoleLifecycle.t.sol\":146,\"test/StakingInvariant.t.sol\":153,\"test/TokenFailureAtomicity.t.sol\":187,\"test/VaultInvariant.t.sol\":156,\"test/fixtures/MainnetHeaders.sol\":32,\"test/fixtures/SOURCES.md\":74,\"test/fixtures/SepoliaHeader.sol\":14,\"test/fixtures/mainnet-cancun.json\":24,\"test/fixtures/mainnet-prague.json\":25,\"test/fixtures/mainnet-shanghai.json\":21,\"test/fixtures/sepolia-11921684.json\":27,\"test/helpers/ClubLaunchMocks.sol\":22,\"test/helpers/ClubsTestBase.sol\":86,\"test/helpers/HeaderBuilder.sol\":48,\"test/helpers/LaunchLayoutModel.sol\":70,\"test/helpers/RaffleTestBase.sol\":98,\"test/helpers/TokenMocks.sol\":93,\"test/test_encode_header.py\":65,\"test/test_launch.py\":154},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"b368536cbc7cfff157d172432def564c80aa7a3832e32253cbb64188214878d7","verifiedTreeHash":"850cd7c7e0c9b01188658ecd604a2e0870e95969","verifierVersion":"0.1.0+560ab6a2"}]}