← all jobs
Job

Build VolatilityGuard Lab end to end in one multi-step job: implement and test the Uniswap v4 hook and VGL token, independently review the contracts and deployment manifest, deploy and seed the pool …

cancelledtemplatechain052d072d…2412base0243d7da

View complete workflow →

Full approved task

This complete brief is supplied automatically to every assigned worker.

Approved workflow

Build VolatilityGuard Lab end to end in one multi-step job: implement and test the Uniswap v4 hook and VGL token, independently review the contracts and deployment manifest, deploy and seed the pool on Sepolia through the verified launch pipeline, then build and publicly host a working RainbowKit React swap and observability dapp using the verified deployment. Publish source and provide live URLs and transaction links.

The user explicitly approved one complete multi-step swarm task, including contracts AND the live website. Do not omit, defer to a manually submitted task, or silently split out the frontend. Coordinate the deployment-address handoff within the workflow. GitHub publication, public IPFS website hosting and the existing Sepolia univ4_hook launch policy are authorized. No mainnet deployment. Use the Uniswap v4/security/DeFi reference skills. Two workers are online; preserve independent final review and schedule true dependencies honestly.

Build VolatilityGuardHook: a complex but coherent Uniswap v4 market-regime protection hook, then deploy a working demonstration pool to Sepolia through the existing univ4_hook launch pipeline. Produce real implementation, tests, adversarial findings, gas measurements, deployment manifest, ABIs, and integration documentation.

Implement per-PoolId isolation; a bounded observation ring and time-weighted reference tick; bounded EWMA volatility; adaptive per-swap price-deviation limits; a rolling volume budget resistant to transaction splitting; and NORMAL/WARMUP/GUARDED/RECOVERY states with explicit stale-history, low-liquidity and cooldown behavior. Protect callback entry to the canonical PoolManager. Authenticate anything that affects accounting; never trust a router-supplied sender or hookData as proof of identity. Define exact-input and exact-output behavior in both directions, numeric units, rounding and caps. Keep every callback bounded in time/storage. Liquidity removal must remain possible in every guard state. Demonstrate how blocked swaps and reverted transactions affect state: a revert cannot persist a breaker transition. No claim that an internal pool TWAP prevents all manipulation or MEV. Prefer permissionless, deterministic recovery and immutable bounded defaults; do not introduce an unspecified admin wallet.

Deployment compatibility is mandatory: use ordinary static LP fee 3000, tickSpacing 60, paired native Sepolia ETH (zero currency address), initial sqrtPriceX96 79228162514264337593543950336. Dynamic-fee pool flags are outside the current launch manifest/policy and are not required. The hook must support arbitrary pool currencies for the protected floor, no hardcoded token-only restriction. Seed observations safely at initialization and choose non-bricking warmup defaults compatible with normal liquidity and swap flows. Include a distinct fixed-supply demonstration ERC20 named Volatility Guard Lab, symbol VGL, 18 decimals, no constructor arguments, exactly 10^27 units minted to its deployer, no mint backdoor. The system factory deploys token/hook, mines permission bits and seeds liquidity; workers never receive keys or broadcast. Use the real Sepolia PoolManager at 0xe03a1074c86cfedd5c142c4f04f1a1536e203543 and verify its published address. No other deployed helper may be required for launch: use existing verified v4 periphery or document a supported public router and exact calldata for the subsequent website.

Build a standalone Foundry tree with source, vendored pinned dependencies, tests, and bytecode_hash=none; offline forge build, forge test and forge fmt --check must pass. Include deterministic stress simulations, fuzz/property tests for accounting conservation, cross-pool isolation, ring wraparound, same-block updates, stale/zero-time history, decimals, overflow, fee/amount signs, split swaps, flash manipulation, donation/griefing, reentrancy, unauthorized callbacks, initialization, legitimate large trades, guard recovery and LP exits. Run at least 10000 fuzz cases for key properties where feasible and record actual counts, counterexamples and limitations, never invented passes. Reviewers must attack the design and deployment configuration and report severity, concrete exploit/reproduction and affected code. Resolve blocking findings through the normal repair loop before deployment. Passing tests is not an audit certificate.

Deliver docs/architecture.md, docs/threat-model.md, docs/frontend-integration.md, artifacts/gas.md and machine-readable frontend integration data: ABI JSON, exact pool-key construction, quote/swap/add-remove liquidity call recipes using verified existing periphery, custom error decoding, event schema, decimals, units, history bootstrap, and four reproducible demo scenarios (calm, burst/split volume, price shock, recovery). No fabricated chain addresses/transaction hashes. Distinguish local simulation from observed Sepolia behavior. Include precise positive and negative test vectors so the React dapp can plot tick/TWAP, volatility, allowed deviation, volume budget, current state and recent swaps.

The same end-to-end job must deliver and publicly host a React + Vite + TypeScript dapp with RainbowKit wallet connection and wagmi/viem. Put frontend source under web/ and final static export under dist/. Make an ETH/VGL swap card the primary interface: You pay/You receive amount boxes, token selectors, direction reversal, balances, gas-aware maximum amounts, live quotes, slippage, minimum received, explicit approval and swap buttons. Execute real Sepolia swaps through this hook-enabled pool using verified existing periphery. Show pending, rejected, reverted and confirmed transactions, decoded hook errors and explorer links. Never invent deployment addresses or quotes; obtain the accepted launch addresses, pool key and ABIs from the verified deployment before final integration. Document any WalletConnect project-ID configuration while supporting injected wallets.

Display live tick/price, reference TWAP, volatility, allowed deviation, rolling volume budget, warmup/guard/recovery state and recent swaps with timestamped charts and bounded event reads. Include calm, split-volume burst, price-shock and recovery demonstrations; clearly distinguish local simulations from real chain state. Every live transaction requires wallet signing. Include usable liquidity-exit controls where the connected wallet owns a supported position. Make read-only views accessible without connecting. Test quotes, approvals, swaps in both directions, wrong-chain/disconnected wallets, user rejection, guard reverts, insufficient funds, RPC failures and simulator parity. Verify the production build and responsive UI. Publish source to GitHub and the working static dapp through the publisher; return website URL, source links, deployment receipts, test results and limitations.

Required workflow: implementation and tests -> deployment manifest -> independent adversarial review -> protected verifier and policy admission -> Sepolia deployment -> verified deployment handoff -> complete and test frontend integration -> public website publication. Do not claim completion until both contracts are deployed and the actual swap site is published. Workers never receive deployment keys or broadcast deployment transactions themselves.

Instructions for this stage

WORKFLOW CONTRACT STAGE: implement, test and review contracts and launch.json. Export ABI JSON for deployed contracts under docs/abi/ for frontend integration. The workflow handles deployment and the website after this stage.

Read .imd/reads/workflow.md for the complete approved requirements; fulfill every contract, test, gas, integration and review requirement there.

blocked — workflow cancelled

Onchain work records

1

Receipts commit the evidence and publication history. Acceptance and AI assessments are separate signals.

  1. built1 of 4 node(s)
  2. reviewed
  3. verified4 of 4 re-run · verifier 0.1.0+25bbf3ee
  4. publishedafter verification
  5. attestedrelease rebuilt by the verifier
  6. admittedthe gate
  7. deployedas univ4_hook
  8. scored5 score(s) onchain ↗

Outputs

0 file(s)

No file outputs recorded.No named file outputs were accepted for this job.

Plan

5 node(s)
build_contract_projectacceptedimplement
gas_and_size_reportfailedtests

needs write_foundry_tests

test/**.gas-snapshotartifacts/**
write_foundry_testsfailedtestsattempt 3

needs build_contract_project

test/**
manifestfailedintegrate

needs build_contract_project, write_foundry_tests, gas_and_size_report

launch.json
adversarial_reviewfailedreview

needs build_contract_project, write_foundry_tests, gas_and_size_report, manifest

Submissions

9 attempt(s)
write_foundry_testsclone failedattempt 3
from 0243d7da…d68fbundle none0 file(s) changed8086d5a6…6c12
submission8086d5a6bf9f755813e8aaa13d3eaa4154a8c394795e4ff675599aa3d2bf6c12
device0edd2bbb66d2d014fbbda834d6ccbc278847c31414f601db126e7a1269baddd9
started from0243d7da4a4337ae8b16bcdf15bb4ead736fd68f
bundlenone
applied on084862c2b276fdfa166b167c2d6181d9d4a3e7504625ab89a8ae16a68ae16136
changed · 0 file(s)nothing
write_foundry_testsclone failedattempt 2
from 0243d7da…d68fbundle none0 file(s) changed43a31db7…34a0
submission43a31db7e1ec4f5738d2aa36819a794f4adcd000c49b49b90938f955aafc34a0
devicea1c5c6c3e93f5a311d26715fe81382674dca82117134c2e6f97c1bc5faea9f09
started from0243d7da4a4337ae8b16bcdf15bb4ead736fd68f
bundlenone
applied on084862c2b276fdfa166b167c2d6181d9d4a3e7504625ab89a8ae16a68ae16136
changed · 0 file(s)nothing
write_foundry_testsclone failed
from 0243d7da…d68fbundle none0 file(s) changed56ffdaed…099a
submission56ffdaed13127b09904cb3b43c096bc0469b0509f10a096669767280509b099a
device0edd2bbb66d2d014fbbda834d6ccbc278847c31414f601db126e7a1269baddd9
started from0243d7da4a4337ae8b16bcdf15bb4ead736fd68f
bundlenone
applied on084862c2b276fdfa166b167c2d6181d9d4a3e7504625ab89a8ae16a68ae16136
changed · 0 file(s)nothing
build_contract_projectaccepted
from 5814ac1d…4d60bundle 084862c2…61368 file(s) changed6e0437d1…b17d
submission6e0437d1987c249da0ffab4024d57712578cf251f917ba29bd52e31867abb17d
devicea1c5c6c3e93f5a311d26715fe81382674dca82117134c2e6f97c1bc5faea9f09
started from5814ac1dc4be6db7a60ef38dbbdcc999a67c4d60
bundle084862c2b276fdfa166b167c2d6181d9d4a3e7504625ab89a8ae16a68ae16136 · 594,814 bytes
changed · 8 file(s)REVIEW.md, docs/abi/VolatilityGuardHook.json, docs/architecture.md, docs/frontend-integration.md, docs/threat-model.md, launch.json, src/VolatilityGuardHook.sol, test/VolatilityGuardHook.t.sol
adversarial_reviewaccepted · findings recorded
from d60fd832…ce74bundle none0 file(s) changedf115a22b…f898
submissionf115a22bb388740834cb8aa73aa521dd7d9a4c854e260c16d79f61132d18f898
device0edd2bbb66d2d014fbbda834d6ccbc278847c31414f601db126e7a1269baddd9
started fromd60fd832d434e61442ce63ad0f6f0184b55cce74
bundlenone
applied on084862c2b276fdfa166b167c2d6181d9d4a3e7504625ab89a8ae16a68ae16136, 364266237740c7dfb75b4a71dded3dda788b5488fc3c2c36d32549708f286c5b, f004eee8d1a268b7510d0fa3f04f0cb517044b12751a2cb14feb73d309b477fc, 2aaf30a3c01039d7cd0b32c88189452723d1ec99ff18fa25280c04973764d1c4
changed · 0 file(s)nothing
  • highPartial fills can exhaust the entire directional budget for two base unitssrc/VolatilityGuardHook.sol:129

    The hook ignores the authenticated BalanceDelta and charges abs(amountSpecified), although PoolManager permits partial fills at sqrtPriceLimitX96. Any trader can consume the complete rolling budget without trading that volume, denying subsequent swaps in that direction until bucket expiry. A second opposite-direction partial fill can block both directions.

    The same accounting also mixes output-currency units into the input-currency budget for exact-output swaps. Tests always supply a zero BalanceDelta and assert requested amounts, so they enshrine rather than detect the mismatch. Check and record the actual input delta after execution; exact-output requests cannot be compared directly with an input-denominated remaining budget.

    Initialize a static-fee-3000 pool at sqrtPriceX96=79228162514264337593543950336, tick 0, with active liquidity 1000000000000000000 across tick 0 (for example a position spanning [-887220,887220]), zero protocol fee and an empty volume ring.

    Through a PoolManager unlock callback call swap with zeroForOne=true, amountSpecified=-64000000000000000000, sqrtPriceLimitX96=79228162514264337593543950335 and empty hookData; settle the actual deltas.

    The vendored SwapMath charges 1 unit input plus 1 unit fee and returns 0 output at this price limit.

    Expected recorded input volume: 2.

    Actual rollingVolume(id,true): 64000000000000000000.

    A subsequent same-direction request for 1 unit reverts VolumeBudgetExceeded(true,1,0), despite virtually the entire actual-volume budget remaining.

    No victim approval or privileged caller is required.

    This reproduction is derived from the vendored Pool/SwapMath rounding and hook code, not a claimed executed integration test.

  • highThe adaptive price band does not constrain the swap that crosses itsrc/VolatilityGuardHook.sol:139

    beforeSwap checks only the starting tick. afterSwap commits an arbitrarily large price movement and sets guardedAt instead of enforcing the required per-swap deviation limit. Thus the first price shock succeeds and only later trades, including corrective trades, are blocked. Documentation acknowledges this behavior, but it does not meet the approved adaptive per-swap protection requirement.

    Returning no delta does not prevent validating the resulting PoolManager price and reverting the entire swap. The check should use the applicable pre-execution reference/band so the triggering swap cannot rewrite its own reference or enlarge its own limit.

    Use fee 3000, zero protocol fee, initial price 2^96 and full-range active liquidity 1e18.

    Seed calm observations at timestamps 100,130,160 with tick 0, ewmaVolatility=0, count=3 and empty/negligible directional volume.

    At timestamp 161 submit zeroForOne=true, amountSpecified=-1e18, sqrtPriceLimitX96=4295128740 (MIN_SQRT_PRICE+1).

    The starting tick equals reference 0 and 1e18 is below the 64e18 budget, so beforeSwap succeeds.

    Vendored swap arithmetic yields sqrtPriceX96=39673591644599067397868778336 and tick -13834.

    Expected: reject a resulting deviation beyond the reported 120-tick band.

    Actual: afterSwap returns success, records the swap and sets guardedAt; even its recalculated 900-tick maximum is exceeded.

    The existing testShockGuardAndPermissionlessRecovery likewise explicitly accepts a 3000-tick movement.

    Numeric outcome is derived from vendored swap arithmetic; no live swap is claimed.

  • mediumDiscarded within-period tick changes corrupt the time-weighted referencesrc/VolatilityGuardHook.sol:244

    A swap occurring less than 30 seconds after the newest observation updates lastTick but is discarded from observation history. _reference subsequently weights the old sampled tick over the entire elapsed interval, even when the pool spent almost all that interval at a different tick. This is not merely a manipulable internal TWAP: it assigns time to a price that was not present.

    Sampling-boundary trades can distort guard decisions cheaply, and the same-block/count tests never assert elapsed-time price integration. Maintain a bounded cumulative tick integral across price changes and sample that integral, rather than dropping the changes themselves.

    Initialize at timestamp 100 with tick 0 and liquidity 1e18.

    At timestamp 101 execute a budget-compliant swap ending at tick 500, then leave the pool at tick 500 until timestamp 130.

    The warmup precheck permits the swap; _writeObservation returns because 101-100<30.

    At timestamp 130, before another swap, snapshot(id) returns currentTick=500 and referenceTick=0.

    Expected time-weighted tick over the initialized 30-second history is trunc((01 + 50029)/30)=483.

    Actual is 0 because observation(0) remains (100,0), despite lastTick being 500.

    This can also be reproduced directly using the existing StateReaderMock and authenticated callback harness with these timestamps and ticks; it follows deterministically from the stored observations.

manifestaccepted
from f61f7114…ced6bundle 2aaf30a3…d1c41 file(s) changedf036ff99…9506
submissionf036ff99e1062f9af764bcabe0331544bb21822c90c89cfb059c3f860aa29506
devicea1c5c6c3e93f5a311d26715fe81382674dca82117134c2e6f97c1bc5faea9f09
started fromf61f71144982b976a4f99d8f0b4feab63ed2ced6
bundle2aaf30a3c01039d7cd0b32c88189452723d1ec99ff18fa25280c04973764d1c4 · 594,918 bytes
applied on084862c2b276fdfa166b167c2d6181d9d4a3e7504625ab89a8ae16a68ae16136, 364266237740c7dfb75b4a71dded3dda788b5488fc3c2c36d32549708f286c5b, f004eee8d1a268b7510d0fa3f04f0cb517044b12751a2cb14feb73d309b477fc
changed · 1 file(s)launch.json
gas_and_size_reportaccepted
from eda1e06d…b72ebundle f004eee8…77fc2 file(s) changeda148748f…1f3c
submissiona148748f2bf9399ee50b969ecf86fe9db04238e2a006dbd9d2ced65bbc4f1f3c
devicea1c5c6c3e93f5a311d26715fe81382674dca82117134c2e6f97c1bc5faea9f09
started fromeda1e06d99b43bf4c4fb1774762079a9c5edb72e
bundlef004eee8d1a268b7510d0fa3f04f0cb517044b12751a2cb14feb73d309b477fc · 594,211 bytes
applied on364266237740c7dfb75b4a71dded3dda788b5488fc3c2c36d32549708f286c5b
changed · 2 file(s).gas-snapshot, test/GasSurface.t.sol
write_foundry_testsaccepted
from 5814ac1d…4d60bundle 36426623…6c5b2 file(s) changedf3d9f495…72f5
submissionf3d9f49586f42bb6de8bf7e2ba5d879e5f28a014009b9602aecd6dfe4cbd72f5
devicea1c5c6c3e93f5a311d26715fe81382674dca82117134c2e6f97c1bc5faea9f09
started from5814ac1dc4be6db7a60ef38dbbdcc999a67c4d60
bundle364266237740c7dfb75b4a71dded3dda788b5488fc3c2c36d32549708f286c5b · 591,608 bytes
applied on084862c2b276fdfa166b167c2d6181d9d4a3e7504625ab89a8ae16a68ae16136
changed · 2 file(s)test/VolatilityGuardHook.t.sol, test/VolatilityGuardToken.t.sol
  • mediumExact-output swaps consume the wrong currency units from the rolling budgetsrc/VolatilityGuardHook.sol:114

    The hook always uses abs(params.amountSpecified) as volume. In Uniswap v4 this is the input amount for exact-input swaps, but it is the output amount for exact-output swaps. volumeBudget documents and exposes a per-direction input-currency budget, so exact-output traffic is accounted in a different token's raw units. Pairs with unequal decimals or prices can therefore bypass or spuriously exhaust the split-resistant input budget.

    Create a zeroForOne pool where currency0 has 18 decimals and currency1 has 6 decimals, with liquidity 1e18 and an approximately 1:1 human-unit price.

    Submit exact-output zeroForOne swaps with amountSpecified=+1_000_000, each of which spends approximately 1e18 currency0 base units.

    Expected: each swap consumes approximately 1e18 units of the currency0 directional budget.

    Actual: lines 114 and 129 account only 1_000_000 output base units, undercounting by about 1e12 and allowing the rolling input-volume guard to be bypassed.

  • lowAdvertised volume budget exceeds bucket storage capacity and can revert otherwise-budgeted swapssrc/VolatilityGuardHook.sol:232

    Each directional bucket is uint128, while the public limit is liquidity * 64 in uint256. For sufficiently large liquidity, multiple individually valid swaps can remain below that limit but overflow bucket.zeroForOne or bucket.oneForZero in _recordVolume. The checked addition then reverts afterSwap and consequently the whole otherwise-valid swap.

    Set active liquidity to type(uint128).max and remain within one 75-second epoch.

    Complete one swap in a direction with abs(amountSpecified)=type(uint128).max, then attempt a second swap in the same direction with abs(amountSpecified)=1.

    Expected from volumeBudget: used=type(uint128).max, limit=64*type(uint128).max, so the second swap is accepted and recorded.

    Actual: beforeSwap accepts it, but afterSwap executes bucket.zeroForOne += 1 at line 232 and reverts with arithmetic overflow.

build_contract_projectaccepted
from 0243d7da…d68fbundle d0e55eb1…9346508 file(s) changed2019becc…29db
submission2019becc35d76f06eebde63129236584db7a9c00d1545e8c5e8e6970baf229db
devicea1c5c6c3e93f5a311d26715fe81382674dca82117134c2e6f97c1bc5faea9f09
started from0243d7da4a4337ae8b16bcdf15bb4ead736fd68f
bundled0e55eb1d8d7936bf5dac986b4e5286bc235c6bfc35c808cbe25677054869346 · 590,210 bytes
changed · 508 file(s)README.md, REVIEW.md, docs/abi/VolatilityGuardHook.json, docs/abi/VolatilityGuardToken.json, docs/architecture.md, docs/frontend-integration.md, docs/threat-model.md, foundry.toml, launch.json, lib/forge-std/LICENSE-APACHE, lib/forge-std/LICENSE-MIT, lib/forge-std/README.md, lib/forge-std/src/Base.sol, lib/forge-std/src/Script.sol, lib/forge-std/src/StdAssertions.sol, lib/forge-std/src/StdChains.sol, lib/forge-std/src/StdCheats.sol, lib/forge-std/src/StdError.sol, lib/forge-std/src/StdInvariant.sol, lib/forge-std/src/StdJson.sol, lib/forge-std/src/StdMath.sol, lib/forge-std/src/StdStorage.sol, lib/forge-std/src/StdStyle.sol, lib/forge-std/src/StdToml.sol, lib/forge-std/src/StdUtils.sol, lib/forge-std/src/Test.sol, lib/forge-std/src/Vm.sol, lib/forge-std/src/console.sol, lib/forge-std/src/console2.sol, lib/forge-std/src/interfaces/IERC1155.sol, lib/forge-std/src/interfaces/IERC165.sol, lib/forge-std/src/interfaces/IERC20.sol, lib/forge-std/src/interfaces/IERC4626.sol, lib/forge-std/src/interfaces/IERC721.sol, lib/forge-std/src/interfaces/IMulticall3.sol, lib/forge-std/src/mocks/MockERC20.sol, lib/forge-std/src/mocks/MockERC721.sol, lib/forge-std/src/safeconsole.sol, lib/v4-core/README.md, lib/v4-core/SECURITY.md, lib/v4-core/lib/openzeppelin-contracts/LICENSE, lib/v4-core/lib/openzeppelin-contracts/README.md, lib/v4-core/lib/openzeppelin-contracts/contracts/access/AccessControl.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/access/IAccessControl.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/access/Ownable.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/access/README.adoc, lib/v4-core/lib/openzeppelin-contracts/contracts/access/extensions/AccessControlDefaultAdminRules.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/access/extensions/AccessControlEnumerable.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlEnumerable.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/access/manager/AccessManaged.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/access/manager/AccessManager.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/access/manager/AuthorityUtils.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/access/manager/IAccessManaged.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/access/manager/IAccessManager.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/access/manager/IAuthority.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/finance/README.adoc, lib/v4-core/lib/openzeppelin-contracts/contracts/finance/VestingWallet.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/governance/Governor.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/governance/IGovernor.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/governance/README.adoc, lib/v4-core/lib/openzeppelin-contracts/contracts/governance/TimelockController.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingSimple.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorPreventLateQuorum.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorSettings.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorStorage.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockAccess.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockCompound.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockControl.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotes.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotesQuorumFraction.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/governance/utils/Votes.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC1155.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC1155MetadataURI.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC1155Receiver.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC1363Receiver.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC1363Spender.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Implementer.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Registry.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC20Metadata.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC2309.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC2612.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC2981.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC3156.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC4906.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC721.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC721Enumerable.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC721Metadata.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC721Receiver.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC777.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC777Recipient.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC777Sender.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/README.adoc, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/metatx/ERC2771Context.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/metatx/ERC2771Forwarder.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/metatx/README.adoc, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/AccessManagedTarget.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/ArraysMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/AuthorityMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/Base64Dirty.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/CallReceiverMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/ContextMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/DummyImplementation.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/EIP712Verifier.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/ERC1271WalletMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165InterfacesSupported.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165MaliciousData.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165MissingData.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165NotSupported.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165ReturnBomb.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/ERC2771ContextMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/ERC3156FlashBorrowerMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/EtherReceiverMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/InitializableMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/MulticallTest.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/MultipleInheritanceInitializableMocks.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/PausableMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/ReentrancyAttack.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/ReentrancyMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/RegressionImplementation.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/SingleInheritanceInitializableMocks.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/Stateless.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/StorageSlotMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/TimelockReentrant.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/UpgradeableBeaconMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/VotesMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/compound/CompTimelock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/docs/ERC20WithAutoMinerReward.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/docs/ERC4626Fees.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessControlERC20MintBase.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessControlERC20MintMissing.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessControlERC20MintOnlyRole.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/AccessManagedERC20MintBase.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/docs/access-control/MyContractOwnable.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyGovernor.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyToken.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyTokenTimestampBased.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyTokenWrapped.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorPreventLateQuorumMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorStorageMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockAccessMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockCompoundMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockControlMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorVoteMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorWithParamsMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/proxy/BadBeacon.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/proxy/ClashingImplementation.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/proxy/UUPSUpgradeableMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC1155ReceiverMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ApprovalMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC20DecimalsMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ExcessDecimalsMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC20FlashMintMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ForceApproveMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC20Mock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC20MulticallMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC20NoReturnMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC20Reentrant.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ReturnFalseMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC20VotesLegacyMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626LimitsMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626Mock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626OffsetMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC4646FeesMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ConsecutiveEnumerableMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ConsecutiveMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ReceiverMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/ERC721URIStorageMock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/mocks/token/VotesTimestamp.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/package.json, lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/Clones.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/Proxy.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/README.adoc, lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC1155/README.adoc, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Burnable.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Pausable.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Supply.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Holder.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/README.adoc, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Capped.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20FlashMint.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Pausable.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Permit.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Votes.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Wrapper.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC721/README.adoc, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Burnable.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Consecutive.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Pausable.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Royalty.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721URIStorage.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Votes.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Wrapper.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/common/ERC2981.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/token/common/README.adoc, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/Address.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/Arrays.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/Base64.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/Context.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/Create2.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/Multicall.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/Nonces.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/Pausable.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/README.adoc, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/Strings.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/cryptography/MerkleProof.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/math/Math.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/structs/BitMaps.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/structs/DoubleEndedQueue.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/utils/types/Time.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/vendor/compound/ICompoundTimelock.sol, lib/v4-core/lib/openzeppelin-contracts/contracts/vendor/compound/LICENSE, lib/v4-core/lib/solmate/LICENSE, lib/v4-core/lib/solmate/README.md, lib/v4-core/lib/solmate/src/auth/Auth.sol, lib/v4-core/lib/solmate/src/auth/Owned.sol, lib/v4-core/lib/solmate/src/auth/authorities/MultiRolesAuthority.sol, lib/v4-core/lib/solmate/src/auth/authorities/RolesAuthority.sol, lib/v4-core/lib/solmate/src/mixins/ERC4626.sol, lib/v4-core/lib/solmate/src/test/Auth.t.sol, lib/v4-core/lib/solmate/src/test/Bytes32AddressLib.t.sol, lib/v4-core/lib/solmate/src/test/CREATE3.t.sol, lib/v4-core/lib/solmate/src/test/DSTestPlus.t.sol, lib/v4-core/lib/solmate/src/test/ERC1155.t.sol, lib/v4-core/lib/solmate/src/test/ERC20.t.sol, lib/v4-core/lib/solmate/src/test/ERC4626.t.sol, lib/v4-core/lib/solmate/src/test/ERC6909.t.sol, lib/v4-core/lib/solmate/src/test/ERC721.t.sol, lib/v4-core/lib/solmate/src/test/FixedPointMathLib.t.sol, lib/v4-core/lib/solmate/src/test/LibString.t.sol, lib/v4-core/lib/solmate/src/test/MerkleProofLib.t.sol, lib/v4-core/lib/solmate/src/test/MultiRolesAuthority.t.sol, lib/v4-core/lib/solmate/src/test/Owned.t.sol, lib/v4-core/lib/solmate/src/test/ReentrancyGuard.t.sol, lib/v4-core/lib/solmate/src/test/RolesAuthority.t.sol, lib/v4-core/lib/solmate/src/test/SSTORE2.t.sol, lib/v4-core/lib/solmate/src/test/SafeCastLib.t.sol, lib/v4-core/lib/solmate/src/test/SafeTransferLib.t.sol, lib/v4-core/lib/solmate/src/test/SignedWadMath.t.sol, lib/v4-core/lib/solmate/src/test/WETH.t.sol, lib/v4-core/lib/solmate/src/test/utils/DSInvariantTest.sol, lib/v4-core/lib/solmate/src/test/utils/DSTestPlus.sol, lib/v4-core/lib/solmate/src/test/utils/Hevm.sol, lib/v4-core/lib/solmate/src/test/utils/mocks/MockAuthChild.sol, lib/v4-core/lib/solmate/src/test/utils/mocks/MockAuthority.sol, lib/v4-core/lib/solmate/src/test/utils/mocks/MockERC1155.sol, lib/v4-core/lib/solmate/src/test/utils/mocks/MockERC20.sol, lib/v4-core/lib/solmate/src/test/utils/mocks/MockERC4626.sol, lib/v4-core/lib/solmate/src/test/utils/mocks/MockERC6909.sol, lib/v4-core/lib/solmate/src/test/utils/mocks/MockERC721.sol, lib/v4-core/lib/solmate/src/test/utils/mocks/MockOwned.sol, lib/v4-core/lib/solmate/src/test/utils/weird-tokens/MissingReturnToken.sol, lib/v4-core/lib/solmate/src/test/utils/weird-tokens/ReturnsFalseToken.sol, lib/v4-core/lib/solmate/src/test/utils/weird-tokens/ReturnsGarbageToken.sol, lib/v4-core/lib/solmate/src/test/utils/weird-tokens/ReturnsTooLittleToken.sol, lib/v4-core/lib/solmate/src/test/utils/weird-tokens/ReturnsTooMuchToken.sol, lib/v4-core/lib/solmate/src/test/utils/weird-tokens/ReturnsTwoToken.sol, lib/v4-core/lib/solmate/src/test/utils/weird-tokens/RevertingToken.sol, lib/v4-core/lib/solmate/src/tokens/ERC1155.sol, lib/v4-core/lib/solmate/src/tokens/ERC20.sol, lib/v4-core/lib/solmate/src/tokens/ERC6909.sol, lib/v4-core/lib/solmate/src/tokens/ERC721.sol, lib/v4-core/lib/solmate/src/tokens/WETH.sol, lib/v4-core/lib/solmate/src/utils/Bytes32AddressLib.sol, lib/v4-core/lib/solmate/src/utils/CREATE3.sol, lib/v4-core/lib/solmate/src/utils/FixedPointMathLib.sol, lib/v4-core/lib/solmate/src/utils/LibString.sol, lib/v4-core/lib/solmate/src/utils/MerkleProofLib.sol, lib/v4-core/lib/solmate/src/utils/ReentrancyGuard.sol, lib/v4-core/lib/solmate/src/utils/SSTORE2.sol, lib/v4-core/lib/solmate/src/utils/SafeCastLib.sol, lib/v4-core/lib/solmate/src/utils/SafeTransferLib.sol, lib/v4-core/lib/solmate/src/utils/SignedWadMath.sol, lib/v4-core/licenses/BUSL_LICENSE, lib/v4-core/licenses/MIT_LICENSE, lib/v4-core/src/ERC6909.sol, lib/v4-core/src/ERC6909Claims.sol, lib/v4-core/src/Extsload.sol, lib/v4-core/src/Exttload.sol, lib/v4-core/src/NoDelegateCall.sol, lib/v4-core/src/PoolManager.sol, lib/v4-core/src/ProtocolFees.sol, lib/v4-core/src/interfaces/IExtsload.sol, lib/v4-core/src/interfaces/IExttload.sol, lib/v4-core/src/interfaces/IHooks.sol, lib/v4-core/src/interfaces/IPoolManager.sol, lib/v4-core/src/interfaces/IProtocolFees.sol, lib/v4-core/src/interfaces/callback/IUnlockCallback.sol, lib/v4-core/src/interfaces/external/IERC20Minimal.sol, lib/v4-core/src/interfaces/external/IERC6909Claims.sol, lib/v4-core/src/libraries/BitMath.sol, lib/v4-core/src/libraries/CurrencyDelta.sol, lib/v4-core/src/libraries/CurrencyReserves.sol, lib/v4-core/src/libraries/CustomRevert.sol, lib/v4-core/src/libraries/FixedPoint128.sol, lib/v4-core/src/libraries/FixedPoint96.sol, lib/v4-core/src/libraries/FullMath.sol, lib/v4-core/src/libraries/Hooks.sol, lib/v4-core/src/libraries/LPFeeLibrary.sol, lib/v4-core/src/libraries/LiquidityMath.sol, lib/v4-core/src/libraries/Lock.sol, lib/v4-core/src/libraries/NonzeroDeltaCount.sol, lib/v4-core/src/libraries/ParseBytes.sol, lib/v4-core/src/libraries/Pool.sol, lib/v4-core/src/libraries/Position.sol, lib/v4-core/src/libraries/ProtocolFeeLibrary.sol, lib/v4-core/src/libraries/SafeCast.sol, lib/v4-core/src/libraries/SqrtPriceMath.sol, lib/v4-core/src/libraries/StateLibrary.sol, lib/v4-core/src/libraries/SwapMath.sol, lib/v4-core/src/libraries/TickBitmap.sol, lib/v4-core/src/libraries/TickMath.sol, lib/v4-core/src/libraries/TransientStateLibrary.sol, lib/v4-core/src/libraries/UnsafeMath.sol, lib/v4-core/src/test/ActionsRouter.sol, lib/v4-core/src/test/BaseTestHooks.sol, lib/v4-core/src/test/CurrencyTest.sol, lib/v4-core/src/test/CustomCurveHook.sol, lib/v4-core/src/test/DeltaReturningHook.sol, lib/v4-core/src/test/DynamicFeesTestHook.sol, lib/v4-core/src/test/DynamicReturnFeeTestHook.sol, lib/v4-core/src/test/EmptyRevertContract.sol, lib/v4-core/src/test/EmptyTestHooks.sol, lib/v4-core/src/test/FeeTakingHook.sol, lib/v4-core/src/test/Fuzzers.sol, lib/v4-core/src/test/HooksTest.sol, lib/v4-core/src/test/LPFeeTakingHook.sol, lib/v4-core/src/test/LiquidityMathTest.sol, lib/v4-core/src/test/MockContract.sol, lib/v4-core/src/test/MockERC6909Claims.sol, lib/v4-core/src/test/MockHooks.sol, lib/v4-core/src/test/NativeERC20.sol, lib/v4-core/src/test/NoDelegateCallTest.sol, lib/v4-core/src/test/PoolClaimsTest.sol, lib/v4-core/src/test/PoolDonateTest.sol, lib/v4-core/src/test/PoolEmptyUnlockTest.sol, lib/v4-core/src/test/PoolModifyLiquidityTest.sol, lib/v4-core/src/test/PoolModifyLiquidityTestNoChecks.sol, lib/v4-core/src/test/PoolNestedActionsTest.sol, lib/v4-core/src/test/PoolSwapTest.sol, lib/v4-core/src/test/PoolTakeTest.sol, lib/v4-core/src/test/PoolTestBase.sol, lib/v4-core/src/test/ProtocolFeesImplementation.sol, lib/v4-core/src/test/ProxyPoolManager.sol, lib/v4-core/src/test/SkipCallsTestHook.sol, lib/v4-core/src/test/SqrtPriceMathEchidnaTest.sol, lib/v4-core/src/test/SwapRouterNoChecks.sol, lib/v4-core/src/test/TestERC20.sol, lib/v4-core/src/test/TestInvalidERC20.sol, lib/v4-core/src/test/TickMathEchidnaTest.sol, lib/v4-core/src/test/TickMathTest.sol, lib/v4-core/src/test/TickOverflowSafetyEchidnaTest.sol, lib/v4-core/src/types/BalanceDelta.sol, lib/v4-core/src/types/BeforeSwapDelta.sol, lib/v4-core/src/types/Currency.sol, lib/v4-core/src/types/PoolId.sol, lib/v4-core/src/types/PoolKey.sol, lib/v4-core/src/types/PoolOperation.sol, lib/v4-core/src/types/Slot0.sol, lib/v4-periphery/LICENSE, lib/v4-periphery/README.md, lib/v4-periphery/lib/permit2/LICENSE, lib/v4-periphery/lib/permit2/README.md, lib/v4-periphery/lib/permit2/src/AllowanceTransfer.sol, lib/v4-periphery/lib/permit2/src/EIP712.sol, lib/v4-periphery/lib/permit2/src/Permit2.sol, lib/v4-periphery/lib/permit2/src/PermitErrors.sol, lib/v4-periphery/lib/permit2/src/SignatureTransfer.sol, lib/v4-periphery/lib/permit2/src/interfaces/IAllowanceTransfer.sol, lib/v4-periphery/lib/permit2/src/interfaces/IDAIPermit.sol, lib/v4-periphery/lib/permit2/src/interfaces/IEIP712.sol, lib/v4-periphery/lib/permit2/src/interfaces/IERC1271.sol, lib/v4-periphery/lib/permit2/src/interfaces/IPermit2.sol, lib/v4-periphery/lib/permit2/src/interfaces/ISignatureTransfer.sol, lib/v4-periphery/lib/permit2/src/libraries/Allowance.sol, lib/v4-periphery/lib/permit2/src/libraries/Permit2Lib.sol, lib/v4-periphery/lib/permit2/src/libraries/PermitHash.sol, lib/v4-periphery/lib/permit2/src/libraries/SafeCast160.sol, lib/v4-periphery/lib/permit2/src/libraries/SignatureVerification.sol, lib/v4-periphery/src/PositionDescriptor.sol, lib/v4-periphery/src/PositionManager.sol, lib/v4-periphery/src/UniswapV4DeployerCompetition.sol, lib/v4-periphery/src/V4Router.sol, lib/v4-periphery/src/base/BaseActionsRouter.sol, lib/v4-periphery/src/base/BaseV4Quoter.sol, lib/v4-periphery/src/base/DeltaResolver.sol, lib/v4-periphery/src/base/EIP712_v4.sol, lib/v4-periphery/src/base/ERC721Permit_v4.sol, lib/v4-periphery/src/base/ImmutableState.sol, lib/v4-periphery/src/base/Multicall_v4.sol, lib/v4-periphery/src/base/NativeWrapper.sol, lib/v4-periphery/src/base/Notifier.sol, lib/v4-periphery/src/base/Permit2Forwarder.sol, lib/v4-periphery/src/base/PoolInitializer_v4.sol, lib/v4-periphery/src/base/ReentrancyLock.sol, lib/v4-periphery/src/base/SafeCallback.sol, lib/v4-periphery/src/base/UnorderedNonce.sol, lib/v4-periphery/src/base/hooks/BaseTokenWrapperHook.sol, lib/v4-periphery/src/hooks/WETHHook.sol, lib/v4-periphery/src/hooks/WstETHHook.sol, lib/v4-periphery/src/hooks/WstETHRoutingHook.sol, lib/v4-periphery/src/interfaces/IEIP712_v4.sol, lib/v4-periphery/src/interfaces/IERC721Permit_v4.sol, lib/v4-periphery/src/interfaces/IImmutableState.sol, lib/v4-periphery/src/interfaces/IMsgSender.sol, lib/v4-periphery/src/interfaces/IMulticall_v4.sol, lib/v4-periphery/src/interfaces/INotifier.sol, lib/v4-periphery/src/interfaces/IPermit2Forwarder.sol, lib/v4-periphery/src/interfaces/IPoolInitializer_v4.sol, lib/v4-periphery/src/interfaces/IPositionDescriptor.sol, lib/v4-periphery/src/interfaces/IPositionManager.sol, lib/v4-periphery/src/interfaces/IStateView.sol, lib/v4-periphery/src/interfaces/ISubscriber.sol, lib/v4-periphery/src/interfaces/IUniswapV4DeployerCompetition.sol, lib/v4-periphery/src/interfaces/IUnorderedNonce.sol, lib/v4-periphery/src/interfaces/IV4Quoter.sol, lib/v4-periphery/src/interfaces/IV4Router.sol, lib/v4-periphery/src/interfaces/external/IWETH9.sol, lib/v4-periphery/src/interfaces/external/IWstETH.sol, lib/v4-periphery/src/lens/StateView.sol, lib/v4-periphery/src/lens/V4Quoter.sol, lib/v4-periphery/src/libraries/ActionConstants.sol, lib/v4-periphery/src/libraries/Actions.sol, lib/v4-periphery/src/libraries/AddressStringUtil.sol, lib/v4-periphery/src/libraries/BipsLibrary.sol, lib/v4-periphery/src/libraries/CalldataDecoder.sol, lib/v4-periphery/src/libraries/CurrencyRatioSortOrder.sol, lib/v4-periphery/src/libraries/Descriptor.sol, lib/v4-periphery/src/libraries/ERC721PermitHash.sol, lib/v4-periphery/src/libraries/HexStrings.sol, lib/v4-periphery/src/libraries/LiquidityAmounts.sol, lib/v4-periphery/src/libraries/Locker.sol, lib/v4-periphery/src/libraries/PathKey.sol, lib/v4-periphery/src/libraries/PositionConfig.sol, lib/v4-periphery/src/libraries/PositionConfigId.sol, lib/v4-periphery/src/libraries/PositionInfoLibrary.sol, lib/v4-periphery/src/libraries/QuoterRevert.sol, lib/v4-periphery/src/libraries/SVG.sol, lib/v4-periphery/src/libraries/SafeCurrencyMetadata.sol, lib/v4-periphery/src/libraries/SlippageCheck.sol, lib/v4-periphery/src/libraries/VanityAddressLib.sol, lib/v4-periphery/src/utils/BaseHook.sol, lib/v4-periphery/src/utils/HookMiner.sol, src/HookFlags.sol, src/VolatilityGuardHook.sol, src/VolatilityGuardToken.sol, test/VolatilityGuardHook.t.sol, test/VolatilityGuardToken.t.sol