UNPKG

@uniswap/v4-periphery

Version:

🦄 Peripheral smart contracts for interacting with Uniswap v4

1 lines • 100 kB
{"abi":[{"type":"constructor","inputs":[{"name":"_poolManager","type":"address","internalType":"contract IPoolManager"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterAddLiquidity","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"feesAccrued","type":"int256","internalType":"BalanceDelta"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterDonate","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterInitialize","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"tick","type":"int24","internalType":"int24"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterRemoveLiquidity","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"feesAccrued","type":"int256","internalType":"BalanceDelta"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct SwapParams","components":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int128","internalType":"int128"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterSwapCount","inputs":[{"name":"","type":"bytes32","internalType":"PoolId"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"beforeAddLiquidity","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeAddLiquidityCount","inputs":[{"name":"","type":"bytes32","internalType":"PoolId"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"beforeDonate","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeInitialize","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeRemoveLiquidity","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeRemoveLiquidityCount","inputs":[{"name":"","type":"bytes32","internalType":"PoolId"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"beforeSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct SwapParams","components":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BeforeSwapDelta"},{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeSwapCount","inputs":[{"name":"","type":"bytes32","internalType":"PoolId"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getHookPermissions","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Hooks.Permissions","components":[{"name":"beforeInitialize","type":"bool","internalType":"bool"},{"name":"afterInitialize","type":"bool","internalType":"bool"},{"name":"beforeAddLiquidity","type":"bool","internalType":"bool"},{"name":"afterAddLiquidity","type":"bool","internalType":"bool"},{"name":"beforeRemoveLiquidity","type":"bool","internalType":"bool"},{"name":"afterRemoveLiquidity","type":"bool","internalType":"bool"},{"name":"beforeSwap","type":"bool","internalType":"bool"},{"name":"afterSwap","type":"bool","internalType":"bool"},{"name":"beforeDonate","type":"bool","internalType":"bool"},{"name":"afterDonate","type":"bool","internalType":"bool"},{"name":"beforeSwapReturnDelta","type":"bool","internalType":"bool"},{"name":"afterSwapReturnDelta","type":"bool","internalType":"bool"},{"name":"afterAddLiquidityReturnDelta","type":"bool","internalType":"bool"},{"name":"afterRemoveLiquidityReturnDelta","type":"bool","internalType":"bool"}]}],"stateMutability":"pure"},{"type":"function","name":"poolManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPoolManager"}],"stateMutability":"view"},{"type":"error","name":"HookNotImplemented","inputs":[]},{"type":"error","name":"NotPoolManager","inputs":[]}],"bytecode":{"object":"0x60a060405234801561000f575f80fd5b506040516113b83803806113b883398101604081905261002e916102a7565b6001600160a01b038116608052806100453061004c565b50506102d4565b61013f8161013a604080516101c0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915250604080516101c0810182525f808252602082018190526001928201839052606082018190526080820183905260a0820181905260c0820183905260e0820192909252610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915290565b610142565b50565b80511515612000831615151415806101665750602081015115156110008316151514155b8061017d5750604081015115156108008316151514155b806101945750606081015115156104008316151514155b806101ab5750608081015115156102008316151514155b806101c2575060a081015115156101008316151514155b806101d8575060c0810151151560808316151514155b806101ee575060e0810151151560408316151514155b806102055750610100810151151560208316151514155b8061021c5750610120810151151560108316151514155b806102335750610140810151151560088316151514155b8061024a5750610160810151151560048316151514155b806102615750610180810151151560028316151514155b8061027857506101a0810151151560018316151514155b1561028e5761028e630732d7b560e51b83610292565b5050565b815f526001600160a01b03811660045260245ffd5b5f602082840312156102b7575f80fd5b81516001600160a01b03811681146102cd575f80fd5b9392505050565b6080516110946103245f395f81816103f601528181610469015281816104f00152818161056f015281816105fe0152818161068d01528181610713015281816107a0015261082901526110945ff3fe608060405234801561000f575f80fd5b50600436106100fb575f3560e01c8063b6a8b0fa11610093578063db6a945111610063578063db6a9451146103d2578063dc4c90d3146103f1578063dc98354e1461043d578063e1b4af691461028a575f80fd5b8063b6a8b0fa1461028a578063c4e833ce1461029d578063c693995714610394578063dacdbe77146103b3575f80fd5b80636c2bbe7e116100ce5780636c2bbe7e146101de5780636fe7e6eb146102295780639f063efc146101de578063b47b2fb11461023c575f80fd5b806321d0ee70146100ff578063259982e514610148578063575e24b41461015b5780635c338d32146101b1575b5f80fd5b61011261010d366004610b38565b610450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b610112610156366004610b38565b6104d7565b61016e610169366004610bbf565b610554565b604080517fffffffff000000000000000000000000000000000000000000000000000000009094168452602084019290925262ffffff169082015260600161013f565b6101d06101bf366004610c19565b5f6020819052908152604090205481565b60405190815260200161013f565b6101f16101ec366004610c30565b6105e4565b604080517fffffffff00000000000000000000000000000000000000000000000000000000909316835260208301919091520161013f565b610112610237366004610ccc565b610674565b61024f61024a366004610d23565b6106f9565b604080517fffffffff000000000000000000000000000000000000000000000000000000009093168352600f9190910b60208301520161013f565b610112610298366004610da4565b610787565b610387604080516101c0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915250604080516101c0810182525f808252602082018190526001928201839052606082018190526080820183905260a0820181905260c0820183905260e0820192909252610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915290565b60405161013f9190610dfe565b6101d06103a2366004610c19565b60026020525f908152604090205481565b6101d06103c1366004610c19565b60016020525f908152604090205481565b6101d06103e0366004610c19565b60036020525f908152604090205481565b6104187f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b61011261044b366004610f1f565b610810565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146104c0576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104cd8686868686610893565b9695505050505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610547576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104cd86868686866108fd565b5f80803373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105c6576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105d38888888888610960565b925092509250955095509592505050565b5f803373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610655576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610664898989898989896109ca565b9150915097509795505050505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106e4576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106f0858585856109fe565b95945050505050565b5f803373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461076a576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610778888888888888610a31565b91509150965096945050505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146107f7576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108058787878787876109fe565b979650505050505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610880576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61088b8484846109fe565b949350505050565b5f6003816108b06108a936899003890189610f78565b60a0902090565b81526020019081526020015f205f8154809291906108cd9061102b565b909155507f21d0ee7000000000000000000000000000000000000000000000000000000000979650505050505050565b5f6002816109136108a936899003890189610f78565b81526020019081526020015f205f8154809291906109309061102b565b909155507f259982e500000000000000000000000000000000000000000000000000000000979650505050505050565b5f808080806109776108a9368b90038b018b610f78565b81526020019081526020015f205f8154809291906109949061102b565b909155507f575e24b400000000000000000000000000000000000000000000000000000000995f99508998509650505050505050565b5f806040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80600181610a486108a9368b90038b018b610f78565b81526020019081526020015f205f815480929190610a659061102b565b909155507fb47b2fb100000000000000000000000000000000000000000000000000000000995f9950975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610aba575f80fd5b50565b8035610ac881610a99565b919050565b5f60a08284031215610add575f80fd5b50919050565b5f60808284031215610add575f80fd5b5f8083601f840112610b03575f80fd5b50813567ffffffffffffffff811115610b1a575f80fd5b602083019150836020828501011115610b31575f80fd5b9250929050565b5f805f805f6101608688031215610b4d575f80fd5b8535610b5881610a99565b9450610b678760208801610acd565b9350610b768760c08801610ae3565b925061014086013567ffffffffffffffff811115610b92575f80fd5b610b9e88828901610af3565b969995985093965092949392505050565b5f60608284031215610add575f80fd5b5f805f805f6101408688031215610bd4575f80fd5b8535610bdf81610a99565b9450610bee8760208801610acd565b9350610bfd8760c08801610baf565b925061012086013567ffffffffffffffff811115610b92575f80fd5b5f60208284031215610c29575f80fd5b5035919050565b5f805f805f805f6101a0888a031215610c47575f80fd5b8735610c5281610a99565b9650610c618960208a01610acd565b9550610c708960c08a01610ae3565b94506101408801359350610160880135925061018088013567ffffffffffffffff811115610c9c575f80fd5b610ca88a828b01610af3565b989b979a50959850939692959293505050565b8035600281900b8114610ac8575f80fd5b5f805f806101008587031215610ce0575f80fd5b8435610ceb81610a99565b9350610cfa8660208701610acd565b925060c0850135610d0a81610a99565b9150610d1860e08601610cbb565b905092959194509250565b5f805f805f806101608789031215610d39575f80fd5b8635610d4481610a99565b9550610d538860208901610acd565b9450610d628860c08901610baf565b9350610120870135925061014087013567ffffffffffffffff811115610d86575f80fd5b610d9289828a01610af3565b979a9699509497509295939492505050565b5f805f805f806101208789031215610dba575f80fd5b8635610dc581610a99565b9550610dd48860208901610acd565b945060c0870135935060e0870135925061010087013567ffffffffffffffff811115610d86575f80fd5b8151151581526101c081016020830151610e1c602084018215159052565b506040830151610e30604084018215159052565b506060830151610e44606084018215159052565b506080830151610e58608084018215159052565b5060a0830151610e6c60a084018215159052565b5060c0830151610e8060c084018215159052565b5060e0830151610e9460e084018215159052565b50610100830151610eaa61010084018215159052565b50610120830151610ec061012084018215159052565b50610140830151610ed661014084018215159052565b50610160830151610eec61016084018215159052565b50610180830151610f0261018084018215159052565b506101a0830151610f186101a084018215159052565b5092915050565b5f805f60e08486031215610f31575f80fd5b8335610f3c81610a99565b9250610f4b8560208601610acd565b915060c0840135610f5b81610a99565b809150509250925092565b803562ffffff81168114610ac8575f80fd5b5f60a0828403128015610f89575f80fd5b5060405160a0810167ffffffffffffffff81118282101715610fd2577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604052610fde83610abd565b8152610fec60208401610abd565b6020820152610ffd60408401610f66565b604082015261100e60608401610cbb565b606082015261101f60808401610abd565b60808201529392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611080577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b506001019056fea164736f6c634300081a000a","sourceMap":"673:2259:219:-:0;;;1018:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;782:26:144;;;;1066:12:219;879:25:189::1;899:4;879:19;:25::i;:::-;809:102:::0;1018:64:219;673:2259;;1555:142:189;1632:58;1662:5;1669:20;673:2259:219;;;;;;;;-1:-1:-1;673:2259:219;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1191:568:219;;;;;;;;-1:-1:-1;1191:568:219;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1088:678;1669:20:189;1632:29;:58::i;:::-;1555:142;:::o;3610:1599:89:-;3729:28;;:74;;1397:7;16467:29;;:34;;3729:74;;;:166;;-1:-1:-1;3823:27:89;;;;:72;;1460:7;16467:29;;:34;;3823:72;;3729:166;:265;;;-1:-1:-1;3915:30:89;;;;:79;;1528:7;16467:29;;:34;;3915:79;;3729:265;:362;;;-1:-1:-1;4014:29:89;;;;:77;;1594:7;16467:29;;:34;;4014:77;;3729:362;:467;;;-1:-1:-1;4111:33:89;;;;:85;;1665:6;16467:29;;:34;;4111:85;;3729:467;:570;;;-1:-1:-1;4216:32:89;;;;:83;;1733:6;16467:29;;:34;;4216:83;;3729:570;:652;;;-1:-1:-1;4319:22:89;;;;:62;;1791:6;16467:29;;:34;;4319:62;;3729:652;:732;;;-1:-1:-1;4401:21:89;;;;:60;;1847:6;16467:29;;:34;;4401:60;;3729:732;:818;;;-1:-1:-1;4481:24:89;;;;:66;;1907:6;16467:29;;:34;;4481:66;;3729:818;:902;;;-1:-1:-1;4567:23:89;;;;:64;;1965:6;16467:29;;:34;;4567:64;;3729:902;:1009;;;-1:-1:-1;4651:33:89;;;;:87;;2037:6;16467:29;;:34;;4651:87;;3729:1009;:1114;;;-1:-1:-1;4758:32:89;;;;:85;;2107:6;16467:29;;:34;;4758:85;;3729:1114;:1236;;;-1:-1:-1;4863:40:89;;;;:102;;2186:6;16467:29;;:34;;4863:102;;3729:1236;:1384;;;-1:-1:-1;4985:43:89;;;;:128;;2268:6;16467:29;;:34;;4985:128;;3729:1384;3712:1491;;;5138:54;-1:-1:-1;;;5186:4:89;5138:39;:54::i;:::-;3610:1599;;:::o;1009:257:85:-;1133:8;1130:1;1123:19;-1:-1:-1;;;;;1172:4:85;1168:53;1162:4;1155:67;1245:4;1242:1;1235:15;14:312:262;106:6;159:2;147:9;138:7;134:23;130:32;127:52;;;175:1;172;165:12;127:52;201:16;;-1:-1:-1;;;;;246:31:262;;236:42;;226:70;;292:1;289;282:12;226:70;315:5;14:312;-1:-1:-1;;;14:312:262:o;:::-;673:2259:219;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b50600436106100fb575f3560e01c8063b6a8b0fa11610093578063db6a945111610063578063db6a9451146103d2578063dc4c90d3146103f1578063dc98354e1461043d578063e1b4af691461028a575f80fd5b8063b6a8b0fa1461028a578063c4e833ce1461029d578063c693995714610394578063dacdbe77146103b3575f80fd5b80636c2bbe7e116100ce5780636c2bbe7e146101de5780636fe7e6eb146102295780639f063efc146101de578063b47b2fb11461023c575f80fd5b806321d0ee70146100ff578063259982e514610148578063575e24b41461015b5780635c338d32146101b1575b5f80fd5b61011261010d366004610b38565b610450565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b610112610156366004610b38565b6104d7565b61016e610169366004610bbf565b610554565b604080517fffffffff000000000000000000000000000000000000000000000000000000009094168452602084019290925262ffffff169082015260600161013f565b6101d06101bf366004610c19565b5f6020819052908152604090205481565b60405190815260200161013f565b6101f16101ec366004610c30565b6105e4565b604080517fffffffff00000000000000000000000000000000000000000000000000000000909316835260208301919091520161013f565b610112610237366004610ccc565b610674565b61024f61024a366004610d23565b6106f9565b604080517fffffffff000000000000000000000000000000000000000000000000000000009093168352600f9190910b60208301520161013f565b610112610298366004610da4565b610787565b610387604080516101c0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915250604080516101c0810182525f808252602082018190526001928201839052606082018190526080820183905260a0820181905260c0820183905260e0820192909252610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915290565b60405161013f9190610dfe565b6101d06103a2366004610c19565b60026020525f908152604090205481565b6101d06103c1366004610c19565b60016020525f908152604090205481565b6101d06103e0366004610c19565b60036020525f908152604090205481565b6104187f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013f565b61011261044b366004610f1f565b610810565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146104c0576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104cd8686868686610893565b9695505050505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610547576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104cd86868686866108fd565b5f80803373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105c6576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105d38888888888610960565b925092509250955095509592505050565b5f803373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610655576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610664898989898989896109ca565b9150915097509795505050505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106e4576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106f0858585856109fe565b95945050505050565b5f803373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461076a576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610778888888888888610a31565b91509150965096945050505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146107f7576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108058787878787876109fe565b979650505050505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610880576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61088b8484846109fe565b949350505050565b5f6003816108b06108a936899003890189610f78565b60a0902090565b81526020019081526020015f205f8154809291906108cd9061102b565b909155507f21d0ee7000000000000000000000000000000000000000000000000000000000979650505050505050565b5f6002816109136108a936899003890189610f78565b81526020019081526020015f205f8154809291906109309061102b565b909155507f259982e500000000000000000000000000000000000000000000000000000000979650505050505050565b5f808080806109776108a9368b90038b018b610f78565b81526020019081526020015f205f8154809291906109949061102b565b909155507f575e24b400000000000000000000000000000000000000000000000000000000995f99508998509650505050505050565b5f806040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80600181610a486108a9368b90038b018b610f78565b81526020019081526020015f205f815480929190610a659061102b565b909155507fb47b2fb100000000000000000000000000000000000000000000000000000000995f9950975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610aba575f80fd5b50565b8035610ac881610a99565b919050565b5f60a08284031215610add575f80fd5b50919050565b5f60808284031215610add575f80fd5b5f8083601f840112610b03575f80fd5b50813567ffffffffffffffff811115610b1a575f80fd5b602083019150836020828501011115610b31575f80fd5b9250929050565b5f805f805f6101608688031215610b4d575f80fd5b8535610b5881610a99565b9450610b678760208801610acd565b9350610b768760c08801610ae3565b925061014086013567ffffffffffffffff811115610b92575f80fd5b610b9e88828901610af3565b969995985093965092949392505050565b5f60608284031215610add575f80fd5b5f805f805f6101408688031215610bd4575f80fd5b8535610bdf81610a99565b9450610bee8760208801610acd565b9350610bfd8760c08801610baf565b925061012086013567ffffffffffffffff811115610b92575f80fd5b5f60208284031215610c29575f80fd5b5035919050565b5f805f805f805f6101a0888a031215610c47575f80fd5b8735610c5281610a99565b9650610c618960208a01610acd565b9550610c708960c08a01610ae3565b94506101408801359350610160880135925061018088013567ffffffffffffffff811115610c9c575f80fd5b610ca88a828b01610af3565b989b979a50959850939692959293505050565b8035600281900b8114610ac8575f80fd5b5f805f806101008587031215610ce0575f80fd5b8435610ceb81610a99565b9350610cfa8660208701610acd565b925060c0850135610d0a81610a99565b9150610d1860e08601610cbb565b905092959194509250565b5f805f805f806101608789031215610d39575f80fd5b8635610d4481610a99565b9550610d538860208901610acd565b9450610d628860c08901610baf565b9350610120870135925061014087013567ffffffffffffffff811115610d86575f80fd5b610d9289828a01610af3565b979a9699509497509295939492505050565b5f805f805f806101208789031215610dba575f80fd5b8635610dc581610a99565b9550610dd48860208901610acd565b945060c0870135935060e0870135925061010087013567ffffffffffffffff811115610d86575f80fd5b8151151581526101c081016020830151610e1c602084018215159052565b506040830151610e30604084018215159052565b506060830151610e44606084018215159052565b506080830151610e58608084018215159052565b5060a0830151610e6c60a084018215159052565b5060c0830151610e8060c084018215159052565b5060e0830151610e9460e084018215159052565b50610100830151610eaa61010084018215159052565b50610120830151610ec061012084018215159052565b50610140830151610ed661014084018215159052565b50610160830151610eec61016084018215159052565b50610180830151610f0261018084018215159052565b506101a0830151610f186101a084018215159052565b5092915050565b5f805f60e08486031215610f31575f80fd5b8335610f3c81610a99565b9250610f4b8560208601610acd565b915060c0840135610f5b81610a99565b809150509250925092565b803562ffffff81168114610ac8575f80fd5b5f60a0828403128015610f89575f80fd5b5060405160a0810167ffffffffffffffff81118282101715610fd2577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604052610fde83610abd565b8152610fec60208401610abd565b6020820152610ffd60408401610f66565b604082015261100e60608401610cbb565b606082015261101f60808401610abd565b60808201529392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611080577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b506001019056fea164736f6c634300081a000a","sourceMap":"673:2259:219:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3093:290:189;;;;;;:::i;:::-;;:::i;:::-;;;2008:66:262;1996:79;;;1978:98;;1966:2;1951:18;3093:290:189;;;;;;;;2560:284;;;;;;:::i;:::-;;:::i;5032:272::-;;;;;;:::i;:::-;;:::i;:::-;;;;3326:66:262;3314:79;;;3296:98;;3425:2;3410:18;;3403:34;;;;3485:8;3473:21;3453:18;;;3446:49;3284:2;3269:18;5032:272:189;3062:439:262;754:55:219;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3865:25:262;;;3853:2;3838:18;754:55:219;3719:177:262;4329:384:189;;;;;;:::i;:::-;;:::i;:::-;;;;5280:66:262;5268:79;;;5250:98;;5379:2;5364:18;;5357:34;;;;5223:18;4329:384:189;5045:352:262;2134:240:189;;;;;;:::i;:::-;;:::i;5559:298::-;;;;;;:::i;:::-;;:::i;:::-;;;;7327:66:262;7315:79;;;7297:98;;7442:2;7431:22;;;;7426:2;7411:18;;7404:50;7270:18;5559:298:189;7127:333:262;6108:285:189;;;;;;:::i;:::-;;:::i;1088:678:219:-;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1191:568:219;;;;;;;;-1:-1:-1;1191:568:219;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1088:678;;;;;;;;:::i;876:63::-;;;;;;:::i;:::-;;;;;;;;;;;;;;815:54;;;;;;:::i;:::-;;;;;;;;;;;;;;945:66;;;;;;:::i;:::-;;;;;;;;;;;;;;411:41:144;;;;;;;;10485:42:262;10473:55;;;10455:74;;10443:2;10428:18;411:41:144;10287:248:262;1730:224:189;;;;;;:::i;:::-;;:::i;3093:290::-;3298:6;650:10:144;:34;672:11;650:34;;646:63;;693:16;;;;;;;;;;;;;;646:63;3323:53:189::1;3346:6;3354:3;3359:6;3367:8;;3323:22;:53::i;:::-;3316:60:::0;3093:290;-1:-1:-1;;;;;;3093:290:189:o;2560:284::-;2762:6;650:10:144;:34;672:11;650:34;;646:63;;693:16;;;;;;;;;;;;;;646:63;2787:50:189::1;2807:6;2815:3;2820:6;2828:8;;2787:19;:50::i;5032:272::-:0;5201:6;;;650:10:144;:34;672:11;650:34;;646:63;;693:16;;;;;;;;;;;;;;646:63;5255:42:189::1;5267:6;5275:3;5280:6;5288:8;;5255:11;:42::i;:::-;5248:49;;;;;;5032:272:::0;;;;;;;;;:::o;4329:384::-;4595:6;;650:10:144;:34;672:11;650:34;;646:63;;693:16;;;;;;;;;;;;;;646:63;4634:72:189::1;4656:6;4664:3;4669:6;4677:5;4684:11;4697:8;;4634:21;:72::i;:::-;4627:79;;;;4329:384:::0;;;;;;;;;;:::o;2134:240::-;2289:6;650:10:144;:34;672:11;650:34;;646:63;;693:16;;;;;;;;;;;;;;646:63;2318:49:189::1;2335:6;2343:3;2348:12;2362:4;2318:16;:49::i;:::-;2311:56:::0;2134:240;-1:-1:-1;;;;;2134:240:189:o;5559:298::-;5769:6;;650:10:144;:34;672:11;650:34;;646:63;;693:16;;;;;;;;;;;;;;646:63;5802:48:189::1;5813:6;5821:3;5826:6;5834:5;5841:8;;5802:10;:48::i;:::-;5795:55;;;;5559:298:::0;;;;;;;;;:::o;6108:285::-;6307:6;650:10:144;:34;672:11;650:34;;646:63;;693:16;;;;;;;;;;;;;;646:63;6332:54:189::1;6346:6;6354:3;6359:7;6368;6377:8;;6332:13;:54::i;:::-;6325:61:::0;6108:285;-1:-1:-1;;;;;;;6108:285:189:o;1730:224::-;1874:6;650:10:144;:34;672:11;650:34;;646:63;;693:16;;;;;;;;;;;;;;646:63;1903:44:189::1;1921:6;1929:3;1934:12;1903:17;:44::i;:::-;1896:51:::0;1730:224;-1:-1:-1;;;;1730:224:189:o;2643:287:219:-;2805:6;2827:26;2805:6;2854:10;:8;;;;;;;:3;:8;:::i;:::-;515:4:121;496:24;;;271:265;2854:10:219;2827:38;;;;;;;;;;;;:40;;;;;;;;;:::i;:::-;;;;-1:-1:-1;2884:39:219;;2643:287;-1:-1:-1;;;;;;;2643:287:219:o;2359:278::-;2518:6;2540:23;2518:6;2564:10;:8;;;;;;;:3;:8;:::i;:10::-;2540:35;;;;;;;;;;;;:37;;;;;;;;;:::i;:::-;;;;-1:-1:-1;2594:36:219;;2359:278;-1:-1:-1;;;;;;;2359:278:219:o;1772:308::-;1912:6;;;;;1975:10;:8;;;;;;;:3;:8;:::i;:10::-;1959:27;;;;;;;;;;;;:29;;;;;;;;;:::i;:::-;;;;-1:-1:-1;2006:28:219;;830:1:119;;-1:-1:-1;830:1:119;;-1:-1:-1;1772:308:219;-1:-1:-1;;;;;;;1772:308:219:o;4719:280:189:-;4933:6;4941:12;4972:20;;;;;;;;;;;;;;2380:147;2475:6;2500:20;;;;;;;;;;;;;;2086:267:219;2239:6;;2269:14;2239:6;2284:10;:8;;;;;;;:3;:8;:::i;:10::-;2269:26;;;;;;;;;;;;:28;;;;;;;;;:::i;:::-;;;;-1:-1:-1;2315:27:219;;2344:1;;-1:-1:-1;2086:267:219;-1:-1:-1;;;;;;;;2086:267:219:o;14:154:262:-;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;69:93;14:154;:::o;173:134::-;241:20;;270:31;241:20;270:31;:::i;:::-;173:134;;;:::o;312:156::-;372:5;417:3;408:6;403:3;399:16;395:26;392:46;;;434:1;431;424:12;392:46;-1:-1:-1;456:6:262;312:156;-1:-1:-1;312:156:262:o;473:170::-;547:5;592:3;583:6;578:3;574:16;570:26;567:46;;;609:1;606;599:12;648:347;699:8;709:6;763:3;756:4;748:6;744:17;740:27;730:55;;781:1;778;771:12;730:55;-1:-1:-1;804:20:262;;847:18;836:30;;833:50;;;879:1;876;869:12;833:50;916:4;908:6;904:17;892:29;;968:3;961:4;952:6;944;940:19;936:30;933:39;930:59;;;985:1;982;975:12;930:59;648:347;;;;;:::o;1000:829::-;1167:6;1175;1183;1191;1199;1252:3;1240:9;1231:7;1227:23;1223:33;1220:53;;;1269:1;1266;1259:12;1220:53;1308:9;1295:23;1327:31;1352:5;1327:31;:::i;:::-;1377:5;-1:-1:-1;1401:63:262;1456:7;1451:2;1436:18;;1401:63;:::i;:::-;1391:73;;1483:78;1553:7;1547:3;1536:9;1532:19;1483:78;:::i;:::-;1473:88;;1612:3;1601:9;1597:19;1584:33;1640:18;1632:6;1629:30;1626:50;;;1672:1;1669;1662:12;1626:50;1711:58;1761:7;1752:6;1741:9;1737:22;1711:58;:::i;:::-;1000:829;;;;-1:-1:-1;1000:829:262;;-1:-1:-1;1788:8:262;;1685:84;1000:829;-1:-1:-1;;;1000:829:262:o;2087:158::-;2150:5;2195:2;2186:6;2181:3;2177:16;2173:25;2170:45;;;2211:1;2208;2201:12;2250:807;2406:6;2414;2422;2430;2438;2491:3;2479:9;2470:7;2466:23;2462:33;2459:53;;;2508:1;2505;2498:12;2459:53;2547:9;2534:23;2566:31;2591:5;2566:31;:::i;:::-;2616:5;-1:-1:-1;2640:63:262;2695:7;2690:2;2675:18;;2640:63;:::i;:::-;2630:73;;2722:67;2781:7;2775:3;2764:9;2760:19;2722:67;:::i;:::-;2712:77;;2840:3;2829:9;2825:19;2812:33;2868:18;2860:6;2857:30;2854:50;;;2900:1;2897;2890:12;3506:208;3593:6;3646:2;3634:9;3625:7;3621:23;3617:32;3614:52;;;3662:1;3659;3652:12;3614:52;-1:-1:-1;3685:23:262;;3506:208;-1:-1:-1;3506:208:262:o;3901:1139::-;4154:6;4162;4170;4178;4186;4194;4202;4255:3;4243:9;4234:7;4230:23;4226:33;4223:53;;;4272:1;4269;4262:12;4223:53;4311:9;4298:23;4330:31;4355:5;4330:31;:::i;:::-;4380:5;-1:-1:-1;4404:63:262;4459:7;4454:2;4439:18;;4404:63;:::i;:::-;4394:73;;4486:78;4556:7;4550:3;4539:9;4535:19;4486:78;:::i;:::-;4476:88;-1:-1:-1;4637:3:262;4622:19;;4609:33;;-1:-1:-1;4741:3:262;4726:19;;4713:33;;-1:-1:-1;4823:3:262;4808:19;;4795:33;4851:18;4840:30;;4837:50;;;4883:1;4880;4873:12;4837:50;4922:58;4972:7;4963:6;4952:9;4948:22;4922:58;:::i;:::-;3901:1139;;;;-1:-1:-1;3901:1139:262;;-1:-1:-1;3901:1139:262;;;;4896:84;;-1:-1:-1;;;3901:1139:262:o;5402:160::-;5468:20;;5528:1;5517:20;;;5507:31;;5497:59;;5552:1;5549;5542:12;5567:588;5679:6;5687;5695;5703;5756:3;5744:9;5735:7;5731:23;5727:33;5724:53;;;5773:1;5770;5763:12;5724:53;5812:9;5799:23;5831:31;5856:5;5831:31;:::i;:::-;5881:5;-1:-1:-1;5905:63:262;5960:7;5955:2;5940:18;;5905:63;:::i;:::-;5895:73;;6020:3;6009:9;6005:19;5992:33;6034;6059:7;6034:33;:::i;:::-;6086:7;-1:-1:-1;6112:37:262;6144:3;6129:19;;6112:37;:::i;:::-;6102:47;;5567:588;;;;;;;:::o;6160:962::-;6359:6;6367;6375;6383;6391;6399;6452:3;6440:9;6431:7;6427:23;6423:33;6420:53;;;6469:1;6466;6459:12;6420:53;6508:9;6495:23;6527:31;6552:5;6527:31;:::i;:::-;6577:5;-1:-1:-1;6601:63:262;6656:7;6651:2;6636:18;;6601:63;:::i;:::-;6591:73;;6683:67;6742:7;6736:3;6725:9;6721:19;6683:67;:::i;:::-;6673:77;-1:-1:-1;6823:3:262;6808:19;;6795:33;;-1:-1:-1;6905:3:262;6890:19;;6877:33;6933:18;6922:30;;6919:50;;;6965:1;6962;6955:12;6919:50;7004:58;7054:7;7045:6;7034:9;7030:22;7004:58;:::i;:::-;6160:962;;;;-1:-1:-1;6160:962:262;;-1:-1:-1;6160:962:262;;7081:8;;6160:962;-1:-1:-1;;;6160:962:262:o;7465:915::-;7599:6;7607;7615;7623;7631;7639;7692:3;7680:9;7671:7;7667:23;7663:33;7660:53;;;7709:1;7706;7699:12;7660:53;7748:9;7735:23;7767:31;7792:5;7767:31;:::i;:::-;7817:5;-1:-1:-1;7841:63:262;7896:7;7891:2;7876:18;;7841:63;:::i;:::-;7831:73;-1:-1:-1;7977:3:262;7962:19;;7949:33;;-1:-1:-1;8081:3:262;8066:19;;8053:33;;-1:-1:-1;8163:3:262;8148:19;;8135:33;8191:18;8180:30;;8177:50;;;8223:1;8220;8213:12;8481:1801;8704:13;;8455;8448:21;8436:34;;8675:3;8660:19;;8776:4;8768:6;8764:17;8758:24;8791:51;8836:4;8825:9;8821:20;8807:12;8455:13;8448:21;8436:34;;8385:91;8791:51;;8891:4;8883:6;8879:17;8873:24;8906:53;8953:4;8942:9;8938:20;8922:14;8455:13;8448:21;8436:34;;8385:91;8906:53;;9008:4;9000:6;8996:17;8990:24;9023:53;9070:4;9059:9;9055:20;9039:14;8455:13;8448:21;8436:34;;8385:91;9023:53;;9125:4;9117:6;9113:17;9107:24;9140:53;9187:4;9176:9;9172:20;9156:14;8455:13;8448:21;8436:34;;8385:91;9140:53;;9242:4;9234:6;9230:17;9224:24;9257:53;9304:4;9293:9;9289:20;9273:14;8455:13;8448:21;8436:34;;8385:91;9257:53;;9359:4;9351:6;9347:17;9341:24;9374:53;9421:4;9410:9;9406:20;9390:14;8455:13;8448:21;8436:34;;8385:91;9374:53;;9476:4;9468:6;9464:17;9458:24;9491:53;9538:4;9527:9;9523:20;9507:14;8455:13;8448:21;8436:34;;8385:91;9491:53;;9593:6;9585;9581:19;9575:26;9610:55;9657:6;9646:9;9642:22;9626:14;8455:13;8448:21;8436:34;;8385:91;9610:55;;9714:6;9706;9702:19;9696:26;9731:55;9778:6;9767:9;9763:22;9747:14;8455:13;8448:21;8436:34;;8385:91;9731:55;;9835:6;9827;9823:19;9817:26;9852:55;9899:6;9888:9;9884:22;9868:14;8455:13;8448:21;8436:34;;8385:91;9852:55;;9957:6;9949;9945:19;9939:26;9974:56;10022:6;10011:9;10007:22;9990:15;8455:13;8448:21;8436:34;;8385:91;9974:56;;10080:6;10072;10068:19;10062:26;10097:56;10145:6;10134:9;10130:22;10113:15;8455:13;8448:21;8436:34;;8385:91;10097:56;;10203:6;10195;10191:19;10185:26;10220:56;10268:6;10257:9;10253:22;10236:15;8455:13;8448:21;8436:34;;8385:91;10220:56;;8481:1801;;;;:::o;10540:517::-;10645:6;10653;10661;10714:3;10702:9;10693:7;10689:23;10685:33;10682:53;;;10731:1;10728;10721:12;10682:53;10770:9;10757:23;10789:31;10814:5;10789:31;:::i;:::-;10839:5;-1:-1:-1;10863:63:262;10918:7;10913:2;10898:18;;10863:63;:::i;:::-;10853:73;;10978:3;10967:9;10963:19;10950:33;10992;11017:7;10992:33;:::i;:::-;11044:7;11034:17;;;10540:517;;;;;:::o;11062:161::-;11129:20;;11189:8;11178:20;;11168:31;;11158:59;;11213:1;11210;11203:12;11228:925;11313:6;11373:3;11361:9;11352:7;11348:23;11344:33;11389:2;11386:22;;;11404:1;11401;11394:12;11386:22;-1:-1:-1;11453:2:262;11447:9;11495:3;11483:16;;11529:18;11514:34;;11550:22;;;11511:62;11508:242;;;11606:77;11603:1;11596:88;11707:4;11704:1;11697:15;11735:4;11732:1;11725:15;11508:242;11766:2;11759:22;11805:29;11824:9;11805:29;:::i;:::-;11797:6;11790:45;11868:38;11902:2;11891:9;11887:18;11868:38;:::i;:::-;11863:2;11855:6;11851:15;11844:63;11940:37;11973:2;11962:9;11958:18;11940:37;:::i;:::-;11935:2;11927:6;11923:15;11916:62;12011:36;12043:2;12032:9;12028:18;12011:36;:::i;:::-;12006:2;11998:6;11994:15;11987:61;12082:39;12116:3;12105:9;12101:19;12082:39;:::i;:::-;12076:3;12064:16;;12057:65;12068:6;11228:925;-1:-1:-1;;;11228:925:262:o;12158:349::-;12197:3;12228:66;12221:5;12218:77;12215:257;;12328:77;12325:1;12318:88;12429:4;12426:1;12419:15;12457:4;12454:1;12447:15;12215:257;-1:-1:-1;12499:1:262;12488:13;;12158:349::o","linkReferences":{},"immutableReferences":{"66153":[{"start":1014,"length":32},{"start":1129,"length":32},{"start":1264,"length":32},{"start":1391,"length":32},{"start":1534,"length":32},{"start":1677,"length":32},{"start":1811,"length":32},{"start":1952,"length":32},{"start":2089,"length":32}]}},"methodIdentifiers":{"afterAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)":"9f063efc","afterDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)":"e1b4af69","afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)":"6fe7e6eb","afterRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)":"6c2bbe7e","afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)":"b47b2fb1","afterSwapCount(bytes32)":"dacdbe77","beforeAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":"259982e5","beforeAddLiquidityCount(bytes32)":"c6939957","beforeDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)":"b6a8b0fa","beforeInitialize(address,(address,address,uint24,int24,address),uint160)":"dc98354e","beforeRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":"21d0ee70","beforeRemoveLiquidityCount(bytes32)":"db6a9451","beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)":"575e24b4","beforeSwapCount(bytes32)":"5c338d32","getHookPermissions()":"c4e833ce","poolManager()":"dc4c90d3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"_poolManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"HookNotImplemented\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPoolManager\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct ModifyLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"},{\"internalType\":\"BalanceDelta\",\"name\":\"feesAccrued\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"afterAddLiquidity\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"},{\"internalType\":\"BalanceDelta\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"afterDonate\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"afterInitialize\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct ModifyLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"},{\"internalType\":\"BalanceDelta\",\"name\":\"feesAccrued\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"afterRemoveLiquidity\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"},{\"internalType\":\"BalanceDelta\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uin