{"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":"fcc374db-5af5-4c1d-9cb0-2841071e1c3f","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"02de1a6b8bca7d1ad3a34b8759dc4f51504b48a6182833a95469185897cf55fc","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_economics","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"7d5e912c31da845ebe73295239b4ec3d6b01985baa1858243bee769e719cbec1","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_flow","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"e2436a17014d631c431e6cf3fc0d5facb62bacfdecd88a8bfbcc04aa6f000766","dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"b89279670f5a00f5d26286edee00c97dd158b997031350a01cafe6e0329ad227","skillId":"audit-judge","subagents":4,"tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"b89279670f5a00f5d26286edee00c97dd158b997031350a01cafe6e0329ad227","skillId":"audit-judge","state":"accepted"},{"acceptedSubmissionHash":"33265ecdb966c2bbe48257e8452b416bde9638fa8fbe1c0ab4556c71e16a65d8","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_math","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"0f5d78ecf8d2de349bf448cbc0281de95195c08563ea8fea88517a0d32c4a4bb","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","subagents":3,"tools":[]},"key":"audit_permissions","kind":"code","role":"review","skillHash":"bc5bfc8455464381f2db18badb2b55cf8bec1e535c019349a0378fa990741171","skillId":"audit-specialist","state":"accepted"},{"acceptedSubmissionHash":"1ab8021181d26c52161c4c62e547bf9e3d73ec1815b4064a65ce88cef0e155e3","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"15b04fc8f60521936b9e2b37c09a804685ec689fc98cd5b04510d986d3106a15","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"15b04fc8f60521936b9e2b37c09a804685ec689fc98cd5b04510d986d3106a15","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":"1be41940745d19af84c8a8447823fa2a7ad83df11b813b985b1e1f3f77cea9ea","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"1643f5269531b5fa717c9b734ab8924bbd69ffa4a99fbabbd140ae36d066a17f","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"606842ccca0e7c5d3017a54684625438eab9b351eb51dcf0cf88c43d1ea41464","skillId":"write-foundry-tests","subagents":4,"tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"606842ccca0e7c5d3017a54684625438eab9b351eb51dcf0cf88c43d1ea41464","skillId":"write-foundry-tests","state":"accepted"}],"objective":"A custom token: PLEA (PLEA).\nToken name: PLEA\nToken symbol: PLEA\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","parentJobId":null,"planHash":"387b5ff57038e34729ba2eae6f591082ac10c5b1cf86c8b8f748a6d092be4d06","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"fcc374db-5af5-4c1d-9cb0-2841071e1c3f","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2670-plea"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"52139","feedbackHash":"e51f1f96af6d0c1c8942a0bbd0ff70d50d9620d0255d8fae577b75c880d7e0e1","nodeKey":"audit_economics","submissionHash":"02de1a6b8bca7d1ad3a34b8759dc4f51504b48a6182833a95469185897cf55fc","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52129","feedbackHash":"e7a2dce5f2f22f06b62a4466ad428ffffb8401fc76f1a9cceca8d47490d55c83","nodeKey":"audit_flow","submissionHash":"7d5e912c31da845ebe73295239b4ec3d6b01985baa1858243bee769e719cbec1","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51374","feedbackHash":"28a19cf1cb78649f296c64a3b4f6b8a1fedf2ac8fa7cff555b0e1234fb6840a6","nodeKey":"audit_judge","submissionHash":"e2436a17014d631c431e6cf3fc0d5facb62bacfdecd88a8bfbcc04aa6f000766","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52170","feedbackHash":"7b133084c2fb5c1e67b5ce69193770d3d1858bedd1e135d1383782a72656bb21","nodeKey":"audit_math","submissionHash":"33265ecdb966c2bbe48257e8452b416bde9638fa8fbe1c0ab4556c71e16a65d8","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"52152","feedbackHash":"87a25e7664457ae8d66dd51751a7e66ec44d436e808e69d97abb07148e2b8713","nodeKey":"audit_permissions","submissionHash":"0f5d78ecf8d2de349bf448cbc0281de95195c08563ea8fea88517a0d32c4a4bb","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51745","feedbackHash":"a99ecbc69014fdb16553ab40e9d2c4e2a6a62f765679c4da23a163632c4c176b","nodeKey":"build_contract_project","submissionHash":"1ab8021181d26c52161c4c62e547bf9e3d73ec1815b4064a65ce88cef0e155e3","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"52324","feedbackHash":"ec4b5e2710b2a43bf8d4b548b9b5597222919dce0b72dbca2d7f85cb83f60892","nodeKey":"manifest","submissionHash":"1be41940745d19af84c8a8447823fa2a7ad83df11b813b985b1e1f3f77cea9ea","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51755","feedbackHash":"74c8de27f18a8124ddfcbc190ed783d6fd57db61dfd14c904c3da6833d86c204","nodeKey":"write_foundry_tests","submissionHash":"1643f5269531b5fa717c9b734ab8924bbd69ffa4a99fbabbd140ae36d066a17f","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"d4634f51ed80e4b81d513a3f8dbae4cd32e554556dc230ca791462124ac5bb21","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"079b3bf4557d8811","findings":[],"hash":"02de1a6b8bca7d1ad3a34b8759dc4f51504b48a6182833a95469185897cf55fc","nodeId":"d4faea9c-f927-4f4d-83d6-99760ddd1712","outcome":"completed","summary":"I found no defects in the economics area. `.imd-findings.json` has an empty findings list and a coverage row for each of the three entry points, plus three invariant rows.\n\n**What I reviewed:** `src/PLEA.sol` is a plain OpenZeppelin v5.0.2 ERC-20 (that version is the one the README states; I didn't open the library's own version file). It has no constructor arguments, and its constructor makes one mint of 1e27 units to `msg.sender`. It has no overrides, fees, burns, hooks, owner, external calls, `delegatecall` or `selfdestruct`. The project's existing tests pass: 39 of 39, including the invariant suite.\n\n- **Economic Security:** Nothing can be extracted. There is no tax or fee logic, no oracle and no privileged role, so no value can be skimmed or captured by front-running. The usual ERC-20 `approve` race is the standard's own behaviour and isn't a defect here.\n- **Invariant:** The supply stays fixed at 1e27 because `_mint` is only reachable from the constructor. Balances always add up to the supply because OpenZeppelin's `_update` is unchanged. Allowance accounting is standard, and a maximum allowance is treated as unlimited.\n- **Flow Gap:** Every launch flow moves exactly the amount stated. That covers the factory paying the distributor, the factory seeding the pool through the PoolManager, distributor claims, and swaps both ways, since nothing on transfer takes a cut. A failed transfer reverts the whole call, so nothing arrives short.\n\n**Coverage:** All three entry points are `holds`: `approve`, `transfer` and `transferFrom`. I also recorded three invariants as `holds`: the supply stays fixed, the whole supply goes to the deployer, and no privileged freeze or seize exists.\n\n**Limits:** I didn't run the protected floor tests, because they import harness files that aren't in this tree.\n\n**The static-analysis lead:** Aderyn's large-numeric-literal note at line 10 is just the supply constant, `1_000_000_000 * 10 ** 18`, so I didn't report it.\n\n**Write scope:** The assignment's list of paths I may modify was empty, but the task also requires `.imd-findings.json`. That file is the only thing I wrote.","treeHash":null,"usage":{"cachedInputTokens":93171,"inputTokens":462,"model":"claude-opus-5-5","outputTokens":1986,"runtime":"claude","turns":4,"wallClockMs":41191}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"7c748c02cd2ee98f","findings":[],"hash":"0f5d78ecf8d2de349bf448cbc0281de95195c08563ea8fea88517a0d32c4a4bb","nodeId":"816f4194-f0b1-4e3b-a8ae-19b0c118952c","outcome":"completed","summary":"The permissions review of PLEA is complete and found no defects. The report is in `.imd-findings.json` with an empty findings list and nine coverage rows, all `holds`. The scratch tests were removed and the tree has no other changes.\n\n**What was checked**\n\n- **Access Control.** The token is `src/PLEA.sol` plus unmodified OpenZeppelin v5.0.2 ERC20. The constructor mints the whole supply to the caller and hands out no owner, minter, initializer or upgrade role. The ABI exposes only approve, transfer and transferFrom as state-changing. Balances are written only by the holder or an approved spender within its allowance, and allowances only by their owner or by spending.\n- **Asymmetry.** The approve and spend pair, transfer versus transferFrom, and the mint and burn branches of the internal update all mirror correctly. Burn and post-construction mint are unreachable, so supply is fixed.\n- **Trust Gap.** With no privileged actor, fee, price or settable recipient, no seam between access, economics and asymmetry exists. The factory receiving the supply is the launch design and carries no continuing power over holders.\n\n**Evidence gathered**\n\n- The five vendored OpenZeppelin files match their recorded hashes and are byte-identical to the upstream v5.0.2 tag.\n- The existing 39 tests pass with the pinned fuzz seed.\n- A scratch fuzz over random selectors, from both deployer and stranger, left supply and all balances unchanged. The deployer cannot pull from a holder without allowance, and a spender cannot raise its own allowance on another's tokens.\n- An opcode walk of the deployed runtime found no reachable CALL, CREATE, DELEGATECALL, CALLCODE or SELFDESTRUCT.\n\nThe aderyn large-numeric-literal lead is a style note on a correctly written constant and was not reported. The standard ERC-20 approve front-running property is inherent to the specification, documented in the README, and not reported as a defect.","treeHash":null,"usage":{"cachedInputTokens":458036,"inputTokens":258,"model":"claude-fable-5-1","outputTokens":11380,"runtime":"claude","turns":25,"wallClockMs":223243}},{"artifacts":[],"attempt":1,"bundleHash":"247eef978088c76b2df4c85ee129a9500febfdf22d28d51becdf74bf3d2c2c74","device":"f90b809929565af3","findings":[],"hash":"1643f5269531b5fa717c9b734ab8924bbd69ffa4a99fbabbd140ae36d066a17f","nodeId":"6f53ef62-e676-4870-8668-b629602a1285","outcome":"completed","summary":"Added 20 edge-case and fuzz tests, and expanded stateful invariants covering failed-call rollback, allowance limits, conservation, and spendability. All changes are under `test/`.\n\nOffline build and full tests passed with the supplied seed: **59 tests passed**, including 9,000 new fuzz cases and 24,576 invariant-handler calls.\n\nNo implementation defects found.","treeHash":"464ec6161d2a1b58f685029d349fc43b4ec21cba","usage":{"cachedInputTokens":1612032,"inputTokens":80119,"model":"gpt-6-astra","outputTokens":19039,"runtime":"codex","turns":6,"wallClockMs":709576}},{"artifacts":[],"attempt":1,"bundleHash":"b0c06396a9d3c010060f0eace16e91cf75e529b6d11de02f530b7393823748a1","device":"f84fad79f165f267","findings":[],"hash":"1ab8021181d26c52161c4c62e547bf9e3d73ec1815b4064a65ce88cef0e155e3","nodeId":"b6d0d2d6-3c3c-41db-bd28-29b85f50d66a","outcome":"completed","summary":"Implemented PLEA with 18 decimals and exactly 1,000,000,000 tokens minted once to the deployer. Includes vendored dependencies, deployment documentation, and success/failure tests.\n\nVerified:\n\n- `forge build` passes.\n- `forge test` passes: 39 tests using the supplied fuzz seed.\n- `forge fmt --check` passes.\n\nThe separate protected launch harness was not run locally; its requirements and validation limits are documented.","treeHash":"df6086a253242f61ef32dae65a16eb0243d25954","usage":{"cachedInputTokens":386048,"inputTokens":53273,"model":"gpt-6-astra","outputTokens":16073,"runtime":"codex","turns":5,"wallClockMs":474859}},{"artifacts":[],"attempt":1,"bundleHash":"525d8e5ad9b549fec929f2acd18774bbd80719d7a13e368f543c89e796f50c66","device":"3d55f5b0ed8fa3df","findings":[],"hash":"1be41940745d19af84c8a8447823fa2a7ad83df11b813b985b1e1f3f77cea9ea","nodeId":"cc13c960-7492-4022-b8aa-1f3fbf63c748","outcome":"completed","summary":"Created [launch.json](/root/.identitymd/work/fcc374db-5af5-4c1d-9cb0-2841071e1c3f/cc13c960-7492-4022-b8aa-1f3fbf63c748/launch.json) matching PLEA’s constructor, supply, and the exact pool and economics values.\n\nManifest checks and `forge build` passed. `forge test` passed all 39 tests with the supplied fuzz seed.\n\nOnly `launch.json` is changed for submission.","treeHash":"da5f5d0cc478d055318dae458b4620f694667042","usage":{"cachedInputTokens":186624,"inputTokens":34028,"model":"gpt-6-astra","outputTokens":2409,"runtime":"codex","turns":3,"wallClockMs":66318}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"fa99051b60a858d6","findings":[],"hash":"33265ecdb966c2bbe48257e8452b416bde9638fa8fbe1c0ab4556c71e16a65d8","nodeId":"e1e27a17-b24c-457c-9a38-5c00ff0da44b","outcome":"completed","summary":"The math review of PLEA is complete and found no defects. The findings file is written with an empty list and six coverage rows, and the working tree is clean apart from that file.\n\n**What was reviewed.** The token is a 17-line subclass of the vendored OpenZeppelin v5.0.2 ERC20 with one constant and one constructor mint. I checked it against every failure mode in the Math Precision, Boundary and Numerical Gap guides, after the Senior Auditor's Mindset.\n\n- **Math Precision:** the supply constant is a compile-time checked expression equal to 1e27. There is no division, no downcast, no fee or share formula, no decimals conversion. The only arithmetic is OpenZeppelin's balance and allowance updates, whose unchecked blocks sit behind explicit less-than guards.\n- **Boundary:** the ABI has no receive, fallback or payable function and the code makes no external calls or bytes decoding. ETH sent with or without calldata reverts. The only sentinel branches are the zero-address checks, and both sides revert as intended.\n- **Numerical Gap:** the conservation invariant holds exactly because no path truncates. Zero-amount and self-transfer fast paths go through the same update as every other transfer.\n\n**How it was checked.** The existing 39 tests pass with the pinned seed. I wrote a scratch probe covering whole-supply moves, one wei over balance, max uint amounts, self-transfer and self-transferFrom of the whole balance, unlimited and max-minus-one allowances, allowance larger than balance, zero-address corners and a fuzzed conservation chain. All behaved as intended. The scratch file was removed afterwards. I also confirmed the five vendored OpenZeppelin files hash identically to the upstream v5.0.2 tag.\n\n**Static analysis leads.** Slither reported nothing. Aderyn's large-numeric-literal note on line 10 is style only. The literal evaluates to exactly 1e27 and is not a defect.\n\n**Coverage.** All three entry points are marked holds, with three extra rows for the supply invariant, the decimals and scale check, and the external boundary surface. Nothing in my area was left unreached.","treeHash":null,"usage":{"cachedInputTokens":429727,"inputTokens":226,"model":"claude-fable-5-1","outputTokens":10651,"runtime":"claude","turns":21,"wallClockMs":142080}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"63c29c49a249ab7e","findings":[],"hash":"7d5e912c31da845ebe73295239b4ec3d6b01985baa1858243bee769e719cbec1","nodeId":"72b75333-f710-4c6d-9e91-7d9d94fe97de","outcome":"completed","summary":"I found no defects I could back with a reproduction, so `.imd-findings.json` has an empty findings list and five coverage rows marked `holds`: the three entry points plus two invariants.\n\n**What I reviewed:** `src/PLEA.sol` is a plain OpenZeppelin v5.0.2 `ERC20`. Its constructor mints `1_000_000_000 * 10**18` (exactly 1e27) once to `msg.sender`, and it overrides nothing. The vendored OZ files (`ERC20.sol`, `IERC20.sol`, `IERC20Metadata.sol`, `Context.sol`, `draft-IERC6093.sol`) match the sha256 hashes pinned in `DEPENDENCIES.json`, so the code that runs is the stock code.\n\n**Execution Trace:**\n- `transfer` and `transferFrom` go through `_transfer` and then `_update`. Zero addresses are rejected, and the balance is checked before the subtraction, which is the only arithmetic in that path that skips overflow checks.\n- `transferFrom` spends the allowance before moving tokens, and an allowance of `type(uint256).max` is treated as unlimited.\n- Every failure reverts the whole call, and there is no external call or callback anywhere, so reentrancy can't happen.\n- `approve` rejects zero addresses, sets the allowance and emits `Approval`.\n\n**Periphery:** Transfers deliver exactly the amount sent, so every launch flow arrives whole: factory to distributor, distributor to claimants, the pool seed, and swaps through the PoolManager. The existing test suite passes (39 tests, including invariant runs). I did not run the protected floor test myself, because it needs the deployer's environment variables.\n\n**First Principles:**\n- The supply can't grow: there's no mint, owner, pause, blacklist or upgrade entry point.\n- There's no assembly and no low-level call, so no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- `decimals()` returns 18, as expected.\n\n**Static analysis leads:** Slither reported nothing. Aderyn's large-literal note at line 10 is a style point only; the value is correct.\n\n**Left out on purpose:** I didn't report the usual ERC-20 risk that someone can front-run an allowance change by spending the old allowance first. Every standard token has it, and it isn't a defect in this code.\n\nNothing in the repository was modified.","treeHash":null,"usage":{"cachedInputTokens":151881,"inputTokens":10,"model":"claude-opus-5-5","outputTokens":2563,"runtime":"claude","turns":5,"wallClockMs":48637}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"13603a08ada71730","findings":[],"hash":"e2436a17014d631c431e6cf3fc0d5facb62bacfdecd88a8bfbcc04aa6f000766","nodeId":"06054f34-7295-4017-9473-b04aed9b5bd9","outcome":"completed","summary":"I found no defects in PLEA, and `.imd-findings.json` holds an empty findings list with a coverage row for every entry point.\n\n**Specialist findings to check or merge:** none. All four specialists and the test writer reported no findings, so nothing needed reproducing or merging.\n\n**What I checked myself:**\n- **The token:** `src/PLEA.sol` is an unmodified OpenZeppelin v5 `ERC20` that overrides nothing. The constructor mints `1_000_000_000 * 10 ** 18` once to `msg.sender`. There is no other mint, burn, owner, pause or blacklist function. There is no transfer fee or burn either, so the transfers from the factory to the distributor, from the distributor to claimants, and through the pool all move exact amounts.\n- **The entry points:** I traced `approve`, `transfer` and `transferFrom` through the vendored OpenZeppelin `_approve`, `_spendAllowance` and `_update`. Each rejects zero addresses, checks the balance before debiting it, checks the allowance (an unlimited approval is never decreased), and emits the right event. All three are marked `holds`.\n- **Deployment:** The constructor takes no arguments, which matches `constructorArgs: []` in `launch.json`. Supply (`1000000000000000000000000000`), decimals (18), name and symbol all match the manifest. Creation code is 1,752 bytes and deployed code is 2,618, well under the limits. `bytecode_hash = \"none\"` is set, and the reachable runtime code has no DELEGATECALL, CALLCODE or SELFDESTRUCT.\n- **The manifest:** It uses only schema keys and has the right value types. The economics section matches the job's figures, and the notes are under 4,000 characters.\n- **Static analysis:** Aderyn's \"large numeric literal\" warning at `src/PLEA.sol:10` is about style, not a defect. Slither reported nothing.\n- **Tests:** `forge test` passed all 59 existing tests in 4 suites. I didn't run the protected floor tests, because they need the service's environment variables and harness files that aren't in this tree. Instead I read the token against what each of them checks.\n\nI changed no project files. `.imd-findings.json` doesn't show in `git status`, probably because `.gitignore` excludes it.","treeHash":null,"usage":{"cachedInputTokens":148212,"inputTokens":10,"model":"claude-opus-5-5","outputTokens":2555,"runtime":"claude","turns":5,"wallClockMs":50140}}],"verification":[{"checks":[{"durationMs":1559,"exitCode":0,"name":"build","output":"Compiling 28 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.49s\nCompiler run successful!\n","passed":true},{"durationMs":6559,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 5 tests for test/PLEAFactory.t.sol:PLEAFactoryTest\n[PASS] test_create2MintsToFactoryRatherThanFactoryCaller() (gas: 76881)\n[PASS] test_launchDistributionClaimsAndPoolTransfersArriveWhole() (gas: 424232)\n[PASS] test_runtimeFitsDeploymentLimitAndHasNoForbiddenOpcodes() (gas: 2496447)\n[PASS] test_sameCreate2SaltCannotMintAgainAtSameAddress() (gas: 70582)\n[PASS] test_secondDeploymentHasIndependentSupply() (gas: 140331)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 427.59ms (12.89ms CPU time)\n\nRan 33 tests for test/PLEA.t.sol:PLEATest\n[PASS] testFuzz_approveAnyUint256(uint256) (runs: 512, μ: 83555, ~: 83967)\n[PASS] testFuzz_delegatedTransferSpendsOnlyApprovedAmount(uint256,uint256) (runs: 512, μ: 162547, ~: 164865)\nLogs:\n  Bound result 3\n  Bound result 0\n\n[PASS] testFuzz_insufficientAllowanceRevertsWithoutChanges(uint256,uint256) (runs: 512, μ: 122739, ~: 123416)\nLogs:\n  Bound result 10\n  Bound result 927\n\n[PASS] testFuzz_insufficientBalanceRevertsWithoutChanges(uint256,uint256) (runs: 512, μ: 126702, ~: 127050)\nLogs:\n  Bound result 719217905518317378092897069\n  Bound result 5054235844187673341662673698265576353642335\n\n[PASS] testFuzz_transferConservesBalances(address,uint256) (runs: 512, μ: 92957, ~: 93208)\nLogs:\n  Bound result 1098370822521089741596\n\n[PASS] test_allowancesAreIsolatedByOwnerAndSpender() (gas: 204119)\n[PASS] test_approvalDoesNotRequireCurrentBalance() (gas: 78262)\n[PASS] test_approvalRevocationPreventsSpending() (gas: 143755)\n[PASS] test_approveEmitsEventAndReplacesAllowance() (gas: 119410)\n[PASS] test_approveZeroSpenderReverts() (gas: 30409)\n[PASS] test_constructorEmitsExactlyOneMint() (gas: 15502)\n[PASS] test_deployerCannotSpendHolderTokensWithoutApproval() (gas: 94988)\n[PASS] test_failedTransferFromRestoresAllowanceWhenBalanceIsTooLow() (gas: 178444)\n[PASS] test_failedTransferFromToZeroRestoresAllowance() (gas: 114024)\n[PASS] test_fullySpentAllowanceCannotBeReused() (gas: 161641)\n[PASS] test_infiniteAllowanceIsNotDecremented() (gas: 214630)\n[PASS] test_metadataAndInitialSupply() (gas: 107693)\n[PASS] test_nativeEtherIsRejected() (gas: 42684)\n[PASS] test_noAdministrativeMintBurnFreezeOrUpgradeEntrypoints() (gas: 800450)\n[PASS] test_selfTransferPreservesBalance() (gas: 53916)\n[PASS] test_transferDeliversExactAmountAndEmitsEvent() (gas: 91571)\n[PASS] test_transferEntireSupply() (gas: 84083)\n[PASS] test_transferFromAboveAllowanceRevertsAtomically() (gas: 115687)\n[PASS] test_transferFromDeliversExactAmountAndSpendsAllowance() (gas: 174655)\n[PASS] test_transferFromRequiresApprovalEvenWhenCallerIsHolder() (gas: 35725)\n[PASS] test_transferFromSelfPreservesBalanceButConsumesAllowance() (gas: 109499)\n[PASS] test_transferFromWithoutApprovalReverts() (gas: 57777)\n[PASS] test_transferMaximumUintRevertsWithoutOverflow() (gas: 55022)\n[PASS] test_transferMoreThanBalanceReverts() (gas: 109772)\n[PASS] test_transferToZeroReverts() (gas: 47553)\n[PASS] test_zeroTransferFromSucceedsWithoutAllowance() (gas: 81513)\n[PASS] test_zeroTransferFromUnfundedAccountEmitsEvent() (gas: 63100)\n[PASS] test_zeroTransferToZeroAlsoReverts() (gas: 30478)\nSuite result: ok. 33 passed; 0 failed; 0 skipped; finished in 427.63ms (1.37s CPU time)\n\nRan 20 tests for test/PLEAProperties.t.sol:PLEAPropertiesTest\n[PASS] testFuzz_approvalForAnotherOwnerOrSpenderCannotBeBorrowed(uint256,uint256) (runs: 1000, μ: 1365838, ~: 1365742)\nLogs:\n  Bound result 10\n  Bound result 3\n\n[PASS] testFuzz_approvalReplacementIsIdempotentAndIsolated(uint256,uint256) (runs: 1000, μ: 1030369, ~: 1031222)\n[PASS] testFuzz_cumulativeSpendingCannotExceedFiniteGrant(uint256,uint256) (runs: 1000, μ: 1007707, ~: 1009975)\nLogs:\n  Bound result 533029903437472179698794247\n  Bound result 304585780129882518599902830\n\n[PASS] testFuzz_delegatedSelfTransferOnlyChangesAllowance(uint256,uint256,uint256) (runs: 1000, μ: 206840, ~: 207767)\nLogs:\n  Bound result 9818\n  Bound result 3549\n\n[PASS] testFuzz_failedDelegatedOverspendRestoresApproval(uint256,uint256,bool) (runs: 1000, μ: 1006257, ~: 1005015)\nLogs:\n  Bound result 86\n  Bound result 16233\n\n[PASS] testFuzz_rejectedZeroRecipientDoesNotConsumeApproval(uint256,bool) (runs: 1000, μ: 934269, ~: 935167)\nLogs:\n  Bound result 10000000000000000000\n\n[PASS] testFuzz_repeatedRoundTripsHaveNoFeesOrProfit(uint256,uint256) (runs: 1000, μ: 1988980, ~: 1911745)\nLogs:\n  Bound result 23027\n  Bound result 16\n\n[PASS] testFuzz_splittingDelegatedTransfersConsumesTheSameAllowance(uint256,uint256,uint256) (runs: 1000, μ: 349714, ~: 354372)\nLogs:\n  Bound result 15101\n  Bound result 95\n\n[PASS] testFuzz_splittingTransfersMatchesOneTransfer(uint256,uint256,uint256) (runs: 1000, μ: 293696, ~: 294896)\nLogs:\n  Bound result 151483968740039204572412772\n  Bound result 463421933990607182066292352\n  Bound result 236762711695523311063429856\n\n[PASS] test_delegatedSelfTransferStillRequiresSufficientBalance() (gas: 901369)\n[PASS] test_directSelfTransferStillRequiresSufficientBalance() (gas: 841230)\n[PASS] test_fullSupplyCanMoveByDelegationAndReturn() (gas: 289333)\n[PASS] test_maximumFiniteAllowanceIsSpent() (gas: 210308)\n[PASS] test_oneBaseUnitCanRoundTrip() (gas: 866214)\n[PASS] test_ownerCanSpendItsSelfApprovalAndMustConsumeIt() (gas: 133740)\n[PASS] test_refillingAnEmptiedHolderDoesNotRenewSpentAllowance() (gas: 1142699)\n[PASS] test_twoSpendersCannotSpendTheSameBalanceTwice() (gas: 1182469)\n[PASS] test_unlimitedApprovalCanBeRevokedAndReplacedWithFiniteApproval() (gas: 1084897)\n[PASS] test_zeroOwnerCannotBeUsedAsAMintSource() (gas: 814304)\n[PASS] test_zeroTransferToZeroWithUnlimitedAllowanceReverts() (gas: 836248)\nSuite result: ok. 20 passed; 0 failed; 0 skipped; finished in 427.71ms (3.57s CPU time)\n\nRan 1 test for test/PLEAInvariant.t.sol:PLEAInvariantTest\n[PASS]\nPLEAInvariantTest invariants:\n[PASS] invariant_allowancesMatchModel\n[PASS] invariant_metadataIsImmutable\n[PASS] invariant_supplyAndBalancesMatchModel\n PLEAInvariantTest invariants (runs: 256, calls: 24576, reverts: 0)\n\n╭-------------+----------------------------+-------+---------+----------╮\n| Contract    | Selector                   | Calls | Reverts | Discards |\n+=======================================================================+\n| PLEAHandler | approve                    | 1770  | 0       | 0        |\n|-------------+----------------------------+-------+---------+----------|\n| PLEAHandler | approveAndSpend            | 1777  | 0       | 0        |\n|-------------+----------------------------+-------+---------+----------|\n| PLEAHandler | approveMaximum             | 1661  | 0       | 0        |\n|-------------+----------------------------+-------+---------+----------|\n| PLEAHandler | approveZeroSpender         | 1767  | 0       | 0        |\n|-------------+----------------------------+-------+---------+----------|\n| PLEAHandler | revokeAndAttemptSpend      | 1771  | 0       | 0        |\n|-------------+----------------------------+-------+---------+----------|\n| PLEAHandler | roundTrip                  | 1725  | 0       | 0        |\n|-------------+----------------------------+-------+---------+----------|\n| PLEAHandler | transfer                   | 1747  | 0       | 0        |\n|-------------+----------------------------+-------+---------+----------|\n| PLEAHandler | transferAboveBalance       | 1774  | 0       | 0        |\n|-------------+----------------------------+-------+---------+----------|\n| PLEAHandler | transferFrom               | 1770  | 0       | 0        |\n|-------------+----------------------------+-------+---------+----------|\n| PLEAHandler | transferFromAboveAllowance | 1807  | 0       | 0        |\n|-------------+----------------------------+-------+---------+----------|\n| PLEAHandler | transferFromAboveBalance   | 1806  | 0       | 0        |\n|-------------+----------------------------+-------+---------+----------|\n| PLEAHandler | transferFromToZero         | 1733  | 0       | 0        |\n|-------------+----------------------------+-------+---------+----------|\n| PLEAHandler | transferFullBalance        | 1747  | 0       | 0        |\n|-------------+----------------------------+-------+---------+----------|\n| PLEAHandler | transferToZero             | 1721  | 0       | 0        |\n╰-------------+----------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 797\n  Bound result 5450\n  Bound result 4\n  Bound result 978277706047645695571816618\n  Bound result 228\n  Bound result 9295\n  Bound result 0\n  Bound result 86\n  Bound result 127\n  Bound result 999999999999999999999999885\n  Bound result 3\n  Bound result 254\n  Bound result 1630\n  Bound result 0\n  Bound result 0\n  Bound result 5\n  Bound result 963\n  Bound result 999999999999999999999999998\n  Bound result 1000000000000000000000000000\n  Bound result 0\n  Bound result 243\n  Bound result 5857\n  Bound result 0\n  Bound result 1000000000000000000\n  Bound result 357\n  Bound result 96\n  Bound result 1374\n  Bound result 25000000000000000000\n  Bound result 220066585557618634154203896\n  Bound result 779933398235888732442858384\n  Bound result 658546386016735355115271992\n  Bound result 180319948891367460030091941535420926414557573971\n  Bound result 4733\n  Bound result 10931\n  Bound result 18\n  Bound result 5631781504340371051\n  Bound result 95\n  Bound result 0\n  Bound result 95\n  Bound result 12\n  Bound result 244\n  Bound result 8\n  Bound result 24999999999999999999\n  Bound result 4111853259922557\n  Bound result 8139\n  Bound result 0\n  Bound result 5629\n  Bound result 5\n  Bound result 14799426228002450502\n  Bound result 962\n  Bound result 343981567029705674208502964\n  Bound result 191013051\n  Bound result 7660\n  Bound result 0\n  Bound result 67\n  Bound result 242\n  Bound result 86\n  Bound result 20\n  Bound result 58\n  Bound result 8\n  Bound result 0\n  Bound result 1642\n  Bound result 0\n  Bound result 10045\n  Bound result 804448733\n  Bound result 55\n  Bound result 1\n  Bound result 29\n  Bound result 23\n  Bound result 1\n  Bound result 999999999999999999999999921\n  Bound result 1000000000000000000000000000\n  Bound result 1000000000000000000000000000\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 6.47s (6.47s CPU time)\n\nRan 4 test suites in 6.48s (7.76s CPU time): 59 tests passed, 0 failed, 0 skipped (59 total tests)\n","passed":true},{"durationMs":32,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"PLEA.approve(address,uint256)\",\"PLEA.transfer(address,uint256)\",\"PLEA.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"DEPENDENCIES.json\":52,\"README.md\":144,\"foundry.toml\":20,\"remappings.txt\":2,\"src/PLEA.sol\":17,\"test/PLEA.t.sol\":366,\"test/PLEAFactory.t.sol\":125,\"test/PLEAInvariant.t.sol\":296,\"test/PLEAProperties.t.sol\":379,\"test/TESTING.md\":54},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"1643f5269531b5fa717c9b734ab8924bbd69ffa4a99fbabbd140ae36d066a17f","verifiedTreeHash":"464ec6161d2a1b58f685029d349fc43b4ec21cba","verifierVersion":"0.1.0+d372f99e"},{"checks":[{"durationMs":1274,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.19s\nCompiler run successful!\n","passed":true},{"durationMs":1978,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 5 tests for test/PLEAFactory.t.sol:PLEAFactoryTest\n[PASS] test_create2MintsToFactoryRatherThanFactoryCaller() (gas: 76881)\n[PASS] test_launchDistributionClaimsAndPoolTransfersArriveWhole() (gas: 424232)\n[PASS] test_runtimeFitsDeploymentLimitAndHasNoForbiddenOpcodes() (gas: 2496447)\n[PASS] test_sameCreate2SaltCannotMintAgainAtSameAddress() (gas: 70582)\n[PASS] test_secondDeploymentHasIndependentSupply() (gas: 140331)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 16.58ms (11.04ms CPU time)\n\nRan 33 tests for test/PLEA.t.sol:PLEATest\n[PASS] testFuzz_approveAnyUint256(uint256) (runs: 512, μ: 83475, ~: 83967)\n[PASS] testFuzz_delegatedTransferSpendsOnlyApprovedAmount(uint256,uint256) (runs: 512, μ: 162400, ~: 164865)\nLogs:\n  Bound result 0\n  Bound result 0\n\n[PASS] testFuzz_insufficientAllowanceRevertsWithoutChanges(uint256,uint256) (runs: 512, μ: 122702, ~: 123434)\nLogs:\n  Bound result 3\n  Bound result 335497967812030729393996255\n\n[PASS] testFuzz_insufficientBalanceRevertsWithoutChanges(uint256,uint256) (runs: 512, μ: 126616, ~: 127026)\nLogs:\n  Bound result 0\n  Bound result 2\n\n[PASS] testFuzz_transferConservesBalances(address,uint256) (runs: 512, μ: 92912, ~: 93208)\nLogs:\n  Bound result 941\n\n[PASS] test_allowancesAreIsolatedByOwnerAndSpender() (gas: 204119)\n[PASS] test_approvalDoesNotRequireCurrentBalance() (gas: 78262)\n[PASS] test_approvalRevocationPreventsSpending() (gas: 143755)\n[PASS] test_approveEmitsEventAndReplacesAllowance() (gas: 119410)\n[PASS] test_approveZeroSpenderReverts() (gas: 30409)\n[PASS] test_constructorEmitsExactlyOneMint() (gas: 15502)\n[PASS] test_deployerCannotSpendHolderTokensWithoutApproval() (gas: 94988)\n[PASS] test_failedTransferFromRestoresAllowanceWhenBalanceIsTooLow() (gas: 178444)\n[PASS] test_failedTransferFromToZeroRestoresAllowance() (gas: 114024)\n[PASS] test_fullySpentAllowanceCannotBeReused() (gas: 161641)\n[PASS] test_infiniteAllowanceIsNotDecremented() (gas: 214630)\n[PASS] test_metadataAndInitialSupply() (gas: 107693)\n[PASS] test_nativeEtherIsRejected() (gas: 42684)\n[PASS] test_noAdministrativeMintBurnFreezeOrUpgradeEntrypoints() (gas: 800450)\n[PASS] test_selfTransferPreservesBalance() (gas: 53916)\n[PASS] test_transferDeliversExactAmountAndEmitsEvent() (gas: 91571)\n[PASS] test_transferEntireSupply() (gas: 84083)\n[PASS] test_transferFromAboveAllowanceRevertsAtomically() (gas: 115687)\n[PASS] test_transferFromDeliversExactAmountAndSpendsAllowance() (gas: 174655)\n[PASS] test_transferFromRequiresApprovalEvenWhenCallerIsHolder() (gas: 35725)\n[PASS] test_transferFromSelfPreservesBalanceButConsumesAllowance() (gas: 109499)\n[PASS] test_transferFromWithoutApprovalReverts() (gas: 57777)\n[PASS] test_transferMaximumUintRevertsWithoutOverflow() (gas: 55022)\n[PASS] test_transferMoreThanBalanceReverts() (gas: 109772)\n[PASS] test_transferToZeroReverts() (gas: 47553)\n[PASS] test_zeroTransferFromSucceedsWithoutAllowance() (gas: 81513)\n[PASS] test_zeroTransferFromUnfundedAccountEmitsEvent() (gas: 63100)\n[PASS] test_zeroTransferToZeroAlsoReverts() (gas: 30478)\nSuite result: ok. 33 passed; 0 failed; 0 skipped; finished in 28.97ms (97.25ms CPU time)\n\nRan 1 test for test/PLEAInvariant.t.sol:PLEAInvariantTest\n[PASS]\nPLEAInvariantTest invariants:\n[PASS] invariant_allowancesMatchModel\n[PASS] invariant_supplyAndBalancesMatchModel\n PLEAInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------+-----------------------+-------+---------+----------╮\n| Contract    | Selector              | Calls | Reverts | Discards |\n+==================================================================+\n| PLEAHandler | approve               | 1687  | 0       | 0        |\n|-------------+-----------------------+-------+---------+----------|\n| PLEAHandler | approveMaximum        | 1591  | 0       | 0        |\n|-------------+-----------------------+-------+---------+----------|\n| PLEAHandler | revokeAndAttemptSpend | 1621  | 0       | 0        |\n|-------------+-----------------------+-------+---------+----------|\n| PLEAHandler | transfer              | 1667  | 0       | 0        |\n|-------------+-----------------------+-------+---------+----------|\n| PLEAHandler | transferFrom          | 1626  | 0       | 0        |\n╰-------------+-----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 679\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 2841\n  Bound result 3343312294\n  Bound result 0\n  Bound result 3714247997\n  Bound result 5163\n  Bound result 0\n  Bound result 0\n  Bound result 5224\n  Bound result 11\n  Bound result 0\n  Bound result 2318\n  Bound result 1336\n  Bound result 489\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 774252016219924919091228809\n  Bound result 91\n  Bound result 2896\n  Bound result 13\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.88s (1.88s CPU time)\n\nRan 3 test suites in 1.88s (1.93s CPU time): 39 tests passed, 0 failed, 0 skipped (39 total tests)\n","passed":true},{"durationMs":37,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"PLEA.approve(address,uint256)\",\"PLEA.transfer(address,uint256)\",\"PLEA.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"DEPENDENCIES.json\":52,\"README.md\":144,\"foundry.toml\":20,\"remappings.txt\":2,\"src/PLEA.sol\":17,\"test/PLEA.t.sol\":366,\"test/PLEAFactory.t.sol\":125,\"test/PLEAInvariant.t.sol\":117},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":462,"exitCode":0,"name":"slither","output":"slither: no results at low impact or above","passed":true},{"durationMs":329,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/PLEA.sol:10: Large Numeric Literal","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"1ab8021181d26c52161c4c62e547bf9e3d73ec1815b4064a65ce88cef0e155e3","verifiedTreeHash":"df6086a253242f61ef32dae65a16eb0243d25954","verifierVersion":"0.1.0+d372f99e"},{"checks":[{"durationMs":1333,"exitCode":0,"name":"build","output":"Compiling 27 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.25s\nCompiler run successful!\n","passed":true},{"durationMs":2078,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 5 tests for test/PLEAFactory.t.sol:PLEAFactoryTest\n[PASS] test_create2MintsToFactoryRatherThanFactoryCaller() (gas: 76881)\n[PASS] test_launchDistributionClaimsAndPoolTransfersArriveWhole() (gas: 424232)\n[PASS] test_runtimeFitsDeploymentLimitAndHasNoForbiddenOpcodes() (gas: 2496447)\n[PASS] test_sameCreate2SaltCannotMintAgainAtSameAddress() (gas: 70582)\n[PASS] test_secondDeploymentHasIndependentSupply() (gas: 140331)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 18.15ms (8.44ms CPU time)\n\nRan 33 tests for test/PLEA.t.sol:PLEATest\n[PASS] testFuzz_approveAnyUint256(uint256) (runs: 512, μ: 83475, ~: 83967)\n[PASS] testFuzz_delegatedTransferSpendsOnlyApprovedAmount(uint256,uint256) (runs: 512, μ: 162400, ~: 164865)\nLogs:\n  Bound result 3\n  Bound result 2\n\n[PASS] testFuzz_insufficientAllowanceRevertsWithoutChanges(uint256,uint256) (runs: 512, μ: 122702, ~: 123434)\nLogs:\n  Bound result 3\n  Bound result 335497967812030729393996255\n\n[PASS] testFuzz_insufficientBalanceRevertsWithoutChanges(uint256,uint256) (runs: 512, μ: 126616, ~: 127026)\nLogs:\n  Bound result 0\n  Bound result 2\n\n[PASS] testFuzz_transferConservesBalances(address,uint256) (runs: 512, μ: 92912, ~: 93208)\nLogs:\n  Bound result 941\n\n[PASS] test_allowancesAreIsolatedByOwnerAndSpender() (gas: 204119)\n[PASS] test_approvalDoesNotRequireCurrentBalance() (gas: 78262)\n[PASS] test_approvalRevocationPreventsSpending() (gas: 143755)\n[PASS] test_approveEmitsEventAndReplacesAllowance() (gas: 119410)\n[PASS] test_approveZeroSpenderReverts() (gas: 30409)\n[PASS] test_constructorEmitsExactlyOneMint() (gas: 15502)\n[PASS] test_deployerCannotSpendHolderTokensWithoutApproval() (gas: 94988)\n[PASS] test_failedTransferFromRestoresAllowanceWhenBalanceIsTooLow() (gas: 178444)\n[PASS] test_failedTransferFromToZeroRestoresAllowance() (gas: 114024)\n[PASS] test_fullySpentAllowanceCannotBeReused() (gas: 161641)\n[PASS] test_infiniteAllowanceIsNotDecremented() (gas: 214630)\n[PASS] test_metadataAndInitialSupply() (gas: 107693)\n[PASS] test_nativeEtherIsRejected() (gas: 42684)\n[PASS] test_noAdministrativeMintBurnFreezeOrUpgradeEntrypoints() (gas: 800450)\n[PASS] test_selfTransferPreservesBalance() (gas: 53916)\n[PASS] test_transferDeliversExactAmountAndEmitsEvent() (gas: 91571)\n[PASS] test_transferEntireSupply() (gas: 84083)\n[PASS] test_transferFromAboveAllowanceRevertsAtomically() (gas: 115687)\n[PASS] test_transferFromDeliversExactAmountAndSpendsAllowance() (gas: 174655)\n[PASS] test_transferFromRequiresApprovalEvenWhenCallerIsHolder() (gas: 35725)\n[PASS] test_transferFromSelfPreservesBalanceButConsumesAllowance() (gas: 109499)\n[PASS] test_transferFromWithoutApprovalReverts() (gas: 57777)\n[PASS] test_transferMaximumUintRevertsWithoutOverflow() (gas: 55022)\n[PASS] test_transferMoreThanBalanceReverts() (gas: 109772)\n[PASS] test_transferToZeroReverts() (gas: 47553)\n[PASS] test_zeroTransferFromSucceedsWithoutAllowance() (gas: 81513)\n[PASS] test_zeroTransferFromUnfundedAccountEmitsEvent() (gas: 63100)\n[PASS] test_zeroTransferToZeroAlsoReverts() (gas: 30478)\nSuite result: ok. 33 passed; 0 failed; 0 skipped; finished in 18.54ms (93.40ms CPU time)\n\nRan 1 test for test/PLEAInvariant.t.sol:PLEAInvariantTest\n[PASS]\nPLEAInvariantTest invariants:\n[PASS] invariant_allowancesMatchModel\n[PASS] invariant_supplyAndBalancesMatchModel\n PLEAInvariantTest invariants (runs: 128, calls: 8192, reverts: 0)\n\n╭-------------+-----------------------+-------+---------+----------╮\n| Contract    | Selector              | Calls | Reverts | Discards |\n+==================================================================+\n| PLEAHandler | approve               | 1687  | 0       | 0        |\n|-------------+-----------------------+-------+---------+----------|\n| PLEAHandler | approveMaximum        | 1591  | 0       | 0        |\n|-------------+-----------------------+-------+---------+----------|\n| PLEAHandler | revokeAndAttemptSpend | 1621  | 0       | 0        |\n|-------------+-----------------------+-------+---------+----------|\n| PLEAHandler | transfer              | 1667  | 0       | 0        |\n|-------------+-----------------------+-------+---------+----------|\n| PLEAHandler | transferFrom          | 1626  | 0       | 0        |\n╰-------------+-----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 679\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 2841\n  Bound result 3343312294\n  Bound result 0\n  Bound result 3714247997\n  Bound result 5163\n  Bound result 0\n  Bound result 0\n  Bound result 5224\n  Bound result 11\n  Bound result 0\n  Bound result 2318\n  Bound result 1336\n  Bound result 489\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 774252016219924919091228809\n  Bound result 91\n  Bound result 2896\n  Bound result 13\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.97s (1.96s CPU time)\n\nRan 3 test suites in 1.97s (2.00s CPU time): 39 tests passed, 0 failed, 0 skipped (39 total tests)\n","passed":true},{"durationMs":41,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"PLEA.approve(address,uint256)\",\"PLEA.transfer(address,uint256)\",\"PLEA.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"DEPENDENCIES.json\":52,\"README.md\":144,\"foundry.toml\":20,\"launch.json\":24,\"remappings.txt\":2,\"src/PLEA.sol\":17,\"test/PLEA.t.sol\":366,\"test/PLEAFactory.t.sol\":125,\"test/PLEAInvariant.t.sol\":117},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"1be41940745d19af84c8a8447823fa2a7ad83df11b813b985b1e1f3f77cea9ea","verifiedTreeHash":"da5f5d0cc478d055318dae458b4620f694667042","verifierVersion":"0.1.0+d372f99e"}]}