{"abi":[{"type":"constructor","inputs":[{"name":"initialOwner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"clear","inputs":[{"name":"currency","type":"address","internalType":"Currency"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"collectProtocolFees","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"currency","type":"address","internalType":"Currency"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountCollected","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"donate","inputs":[{"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":"delta","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"extsload","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"extsload","inputs":[{"name":"startSlot","type":"bytes32","internalType":"bytes32"},{"name":"nSlots","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"extsload","inputs":[{"name":"slots","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"exttload","inputs":[{"name":"slots","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"exttload","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"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":"tick","type":"int24","internalType":"int24"}],"stateMutability":"nonpayable"},{"type":"function","name":"isOperator","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"isOperator","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"modifyLiquidity","inputs":[{"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 IPoolManager.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":"callerDelta","type":"int256","internalType":"BalanceDelta"},{"name":"feesAccrued","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"protocolFeeController","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"protocolFeesAccrued","inputs":[{"name":"currency","type":"address","internalType":"Currency"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setProtocolFee","inputs":[{"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":"newProtocolFee","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setProtocolFeeController","inputs":[{"name":"controller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settle","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"settleFor","inputs":[{"name":"recipient","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"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 IPoolManager.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":"swapDelta","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"sync","inputs":[{"name":"currency","type":"address","internalType":"Currency"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"take","inputs":[{"name":"currency","type":"address","internalType":"Currency"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transfer","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlock","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"updateDynamicLPFee","inputs":[{"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":"newDynamicLPFee","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Donate","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialize","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"currency0","type":"address","indexed":true,"internalType":"Currency"},{"name":"currency1","type":"address","indexed":true,"internalType":"Currency"},{"name":"fee","type":"uint24","indexed":false,"internalType":"uint24"},{"name":"tickSpacing","type":"int24","indexed":false,"internalType":"int24"},{"name":"hooks","type":"address","indexed":false,"internalType":"contract IHooks"},{"name":"sqrtPriceX96","type":"uint160","indexed":false,"internalType":"uint160"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"}],"anonymous":false},{"type":"event","name":"ModifyLiquidity","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"tickLower","type":"int24","indexed":false,"internalType":"int24"},{"name":"tickUpper","type":"int24","indexed":false,"internalType":"int24"},{"name":"liquidityDelta","type":"int256","indexed":false,"internalType":"int256"},{"name":"salt","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"OperatorSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProtocolFeeControllerUpdated","inputs":[{"name":"protocolFeeController","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProtocolFeeUpdated","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"protocolFee","type":"uint24","indexed":false,"internalType":"uint24"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"int128","indexed":false,"internalType":"int128"},{"name":"amount1","type":"int128","indexed":false,"internalType":"int128"},{"name":"sqrtPriceX96","type":"uint160","indexed":false,"internalType":"uint160"},{"name":"liquidity","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"},{"name":"fee","type":"uint24","indexed":false,"internalType":"uint24"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AlreadyUnlocked","inputs":[]},{"type":"error","name":"CurrenciesOutOfOrderOrEqual","inputs":[{"name":"currency0","type":"address","internalType":"address"},{"name":"currency1","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotSettled","inputs":[]},{"type":"error","name":"DelegateCallNotAllowed","inputs":[]},{"type":"error","name":"InvalidCaller","inputs":[]},{"type":"error","name":"ManagerLocked","inputs":[]},{"type":"error","name":"MustClearExactPositiveDelta","inputs":[]},{"type":"error","name":"NonzeroNativeValue","inputs":[]},{"type":"error","name":"PoolNotInitialized","inputs":[]},{"type":"error","name":"ProtocolFeeCurrencySynced","inputs":[]},{"type":"error","name":"ProtocolFeeTooLarge","inputs":[{"name":"fee","type":"uint24","internalType":"uint24"}]},{"type":"error","name":"SwapAmountCannotBeZero","inputs":[]},{"type":"error","name":"TickSpacingTooLarge","inputs":[{"name":"tickSpacing","type":"int24","internalType":"int24"}]},{"type":"error","name":"TickSpacingTooSmall","inputs":[{"name":"tickSpacing","type":"int24","internalType":"int24"}]},{"type":"error","name":"UnauthorizedDynamicLPFeeUpdate","inputs":[]}],"bytecode":{"object":"0x60a03460a057601f615b2738819003918201601f19168301916001600160401b0383118484101760a45780849260209460405283398101031260a057516001600160a01b0381169081900360a0575f80546001600160a01b0319168217815560405191907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a330608052615a6e90816100b98239608051816131a20152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60a0806040526004361015610012575f80fd5b5f3560e01c908162fdd58e146129c95750806301ffc9a714612928578063095bcdb61461287e5780630b0d9c091461281057806311da60b4146127d3578063156e29f6146127235780631e2eaeaf14612707578063234266d7146124865780632d771389146123f957806335fd631a146123a35780633dd45adb1461235d578063426a8493146122d957806348c894911461206c5780635275965114611f72578063558a729714611eb9578063598af9e714611e3f5780635a6bcfda146112c95780636276cbbe14610e2e5780637e87ce7d14610d0f57806380f0b44c14610c5b5780638161b87414610b235780638da5cb5b14610af157806397e8cd4e14610aac5780639bf6645f14610a5f578063a5841194146109b2578063b6363cf21461093f578063dbd035ff146108e9578063f02de3b2146108b6578063f135baaa1461089a578063f2fde38b1461080c578063f3cd914c146104e1578063f5298aca146103165763fe99049a14610186575f80fd5b346103125760806003193601126103125761019f612a15565b6101a7612a38565b90604435917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885961025b73ffffffffffffffffffffffffffffffffffffffff8060643595169384331415806102ef575b610269575b845f52600460205260405f20875f5260205260405f2061021c878254612c69565b90551693845f52600460205260405f20865f5260205260405f20610241828254612c76565b905560408051338152602081019290925290918291820190565b0390a4602060405160018152f35b845f52600560205260405f208233165f5260205260405f20875f5260205260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036102bc575b50506101fb565b6102c591612c69565b855f52600560205260405f208333165f5260205260405f20885f5260205260405f20555f866102b5565b50845f52600360205260405f208233165f5260205260ff60405f205416156101f6565b5f80fd5b346103125761032436612a5b565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b9577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103cf73ffffffffffffffffffffffffffffffffffffffff805f95169561039d61039586612d26565b339089612d6c565b16923384141580610482575b6103d4575b83855260046020526040852086865260205260408520610241828254612c69565b0390a4005b83855260056020526040852073ffffffffffffffffffffffffffffffffffffffff33168652602052604085208686526020526040852054817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361043b575b50506103ae565b61044491612c69565b84865260056020526040862073ffffffffffffffffffffffffffffffffffffffff331687526020526040862087875260205260408620558681610434565b5083855260036020526040852073ffffffffffffffffffffffffffffffffffffffff3316865260205260ff604086205416156103a9565b7f54e3ca0d000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461031257610120600319360112610312576104fc36612b39565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610312576040519061053382612aae565b60a4358015158103610312578252602082019060c435825260e4359073ffffffffffffffffffffffffffffffffffffffff8216820361031257604084019182526101043567ffffffffffffffff811161031257610594903690600401612be7565b9290937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b9576105c661318b565b51156107e45760a0822092835f52600660205260405f20906105e7826131f2565b60808401958482828a8a5173ffffffffffffffffffffffffffffffffffffffff1693610612946137c0565b90949195606088015160020b908b511515905173ffffffffffffffffffffffffffffffffffffffff1691604051986106498a612aca565b895260208901526040880152606087015262ffffff166080860152885115155f149862ffffff6107669861069f6107539860209d6107c45773ffffffffffffffffffffffffffffffffffffffff8b5116956145d5565b949296829192610797575b505073ffffffffffffffffffffffffffffffffffffffff845116938e6fffffffffffffffffffffffffffffffff60408301511691015160020b90604051958860801d600f0b875288600f0b60208801526040870152606086015260808501521660a08301527f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c03393a38673ffffffffffffffffffffffffffffffffffffffff8a51166139fd565b8094919461076e575b50508233916132ce565b604051908152f35b73ffffffffffffffffffffffffffffffffffffffff61079092511690836132ce565b848061075c565b73ffffffffffffffffffffffffffffffffffffffff165f5260018f5260405f209081540190558e806106aa565b73ffffffffffffffffffffffffffffffffffffffff8e8c015116956145d5565b7fbe8b8507000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610312576020600319360112610312577fffffffffffffffffffffffff0000000000000000000000000000000000000000610846612a15565b73ffffffffffffffffffffffffffffffffffffffff5f549161086b8284163314612c83565b1691829116175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b34610312576020600319360112610312576004355c5f5260205ff35b34610312575f60031936011261031257602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b34610312576108f736612c15565b6040519160408360208152836020820152019160051b8301916020806040850193925b833554815201910190848382101561093657506020809161091a565b60408186030190f35b3461031257604060031936011261031257610958612a15565b73ffffffffffffffffffffffffffffffffffffffff610975612a38565b91165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b34610312576020600319360112610312576109cb612a15565b73ffffffffffffffffffffffffffffffffffffffff81169081610a0f5750505f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d005b610a189061370e565b907f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d005b3461031257610a6d36612c15565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355c8152019101908483821015610936575060208091610a90565b346103125760206003193601126103125773ffffffffffffffffffffffffffffffffffffffff610ada612a15565b165f526001602052602060405f2054604051908152f35b34610312575f60031936011261031257602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461031257606060031936011261031257610b3c612a15565b610b44612a38565b60443573ffffffffffffffffffffffffffffffffffffffff600254163303610c335773ffffffffffffffffffffffffffffffffffffffff821680151580610bf3575b610bcb576020936107669280610bc35750815f526001855260405f20549384925b5f526001865260405f20610bbc848254612c69565b9055612e74565b938492610ba7565b7fc79e5948000000000000000000000000000000000000000000000000000000005f5260045ffd5b508073ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c1614610b86565b7f48f5c3ed000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461031257604060031936011261031257610c74612a15565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b957335f90815273ffffffffffffffffffffffffffffffffffffffff8216602052604090205c610cca602435612d26565b9081600f0b03610ce757610ce59133915f03600f0b90612d6c565b005b7fbda73abf000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103125760c060031936011261031257610d2936612b39565b610d31612b27565b9073ffffffffffffffffffffffffffffffffffffffff600254163303610c3357623e900062fff0008316106103e9610fff8416101615610dfd57602060a07fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f9922092835f526006825260405f20610da7816131f2565b805479ffffff00000000000000000000000000000000000000000000008360b81b16907fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1617905562ffffff60405191168152a2005b62ffffff827fa7abe2f7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b346103125760c060031936011261031257610e4836612b39565b60a4359073ffffffffffffffffffffffffffffffffffffffff821680830361031257610e7261318b565b6060820191825160020b617fff811361129e5750825160020b60018112611273575073ffffffffffffffffffffffffffffffffffffffff815116602082019073ffffffffffffffffffffffffffffffffffffffff8251168082101561123c575050608082019073ffffffffffffffffffffffffffffffffffffffff825116906040840191610f0662ffffff84511682613633565b156112115750610f1b62ffffff8351166136f1565b96835173ffffffffffffffffffffffffffffffffffffffff81169081330361115a575b505060a0852090815f52600660205260405f2090815473ffffffffffffffffffffffffffffffffffffffff16611132576020997fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438927cffffff0000000000000000000000000000000000000000000000000000610fbc60a094614278565b9260d01b168a76ffffff000000000000000000000000000000000000000084861b161717905562ffffff73ffffffffffffffffffffffffffffffffffffffff808a5116965116965116995160020b73ffffffffffffffffffffffffffffffffffffffff885116906040519b8c528c8c015260408b01528860608b015260020b98896080820152a45173ffffffffffffffffffffffffffffffffffffffff81169081330361106e575b8585604051908152f35b6110001661107d575b80611064565b61112992611107604051937f6fe7e6eb0000000000000000000000000000000000000000000000000000000088860152336024860152604485019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60e483015283610104830152610104825261112461012483612ae6565b613ba1565b50828080611077565b7f7983c051000000000000000000000000000000000000000000000000000000005f5260045ffd5b61200016611169575b80610f3e565b61120a90604051907fdc98354e0000000000000000000000000000000000000000000000000000000060208301523360248301526111f4604483018973ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8860e483015260e4825261112461010483612ae6565b5088611163565b7fe65af6a0000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f6e6c983000000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b7fe9e90588000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7fb70024f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461031257610140600319360112610312576112e436612b39565b60807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610312576040519061131b82612a92565b60a4358060020b810361031257825260c4358060020b810361031257602083015260e43560408301526101043560608301526101243567ffffffffffffffff81116103125761136e903690600401612be7565b90927fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b95761139f61318b565b60a0832093845f52600660205260405f206080526113be6080516131f2565b608084015173ffffffffffffffffffffffffffffffffffffffff811690813303611d3a575b5050815160020b92602083015160020b916114016040850151613401565b93606087015160020b9760608201516040519960c08b018b811067ffffffffffffffff821117611d0d57604052338b528860208c01528660408c015287600f0b60608c015260808b015260a08a01525f9185881215611cd6577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276188812611caa57620d89e88613611c7e576040519261149884612a92565b5f84525f60208501525f60408501525f606085015287600f0b611981575b600460805101978960020b5f528860205260405f20988860020b5f5260205260405f206080515460a01c60020b8b81125f1461192b575060028060018c0154600184015490039b015491015490039b5b60a073ffffffffffffffffffffffffffffffffffffffff825116910151906040519160268301528960068301528b600383015281525f603a600c83012091816040820152816020820152525f5260066080510160205260405f20976fffffffffffffffffffffffffffffffff8954169982600f0b155f146118ce578a156118a6576115cb6115c560409f9b6116aa9c6116bc9e5b60018301956115bd60026115b1848a54850361537f565b9501928354850361537f565b965555612d26565b91612d26565b6fffffffffffffffffffffffffffffffff169060801b179a8b965f84600f0b12611838575b5082600f0b6116f4575b5050506116206116118560801d8360801d01613401565b9185600f0b90600f0b01613401565b6fffffffffffffffffffffffffffffffff169060801b1791815160020b90602083015160020b8c8401516060850151918e5194855260208501528d84015260608301527ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec60803393a38873ffffffffffffffffffffffffffffffffffffffff6080820151166134d7565b809491946116c8575b508333916132ce565b82519182526020820152f35b6116ee9073ffffffffffffffffffffffffffffffffffffffff60808401511690836132ce565b856116b3565b60805154929350909173ffffffffffffffffffffffffffffffffffffffff81169060a01c60020b8281121561175a5750509061174e9261174361173961174994613dd4565b91600f0b92613dd4565b906141a3565b613401565b60801b5b8b80806115fa565b92809193125f1461180557611799916117866117496117499361178088600f0b91613dd4565b876141a3565b9361179486600f0b92613dd4565b614146565b6fffffffffffffffffffffffffffffffff169060801b17906fffffffffffffffffffffffffffffffff6117d860036080510192600f0b828454166141ea565b167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055611752565b9061174992509261181b61173961182195613dd4565b90614146565b6fffffffffffffffffffffffffffffffff16611752565b808f915161187a575b015161184e575b8e6115f0565b6118758260805160049160020b5f52016020525f6002604082208281558260018201550155565b611848565b6118a18360805160049160020b5f52016020525f6002604082208281558260018201550155565b611841565b7faefeb924000000000000000000000000000000000000000000000000000000005f5260045ffd5b6115cb6115c560409f9b6116aa9c6116bc9e6fffffffffffffffffffffffffffffffff6118fe89600f0b836141ea565b167fffffffffffffffffffffffffffffffff0000000000000000000000000000000084541617835561159a565b90999089136119515760028060018c0154600184015490039b015491015490039b611506565b9860026001608051015460018c01549003600183015490039a81806080510154910154900391015490039b611506565b6004608051018960020b5f5280602052898960405f206119da81546fffffffffffffffffffffffffffffffff6119bd81831695600f0b866141ea565b16931594858515141595611c4a575b508d600f0b9060801d6139b6565b60801b82179055602087015285528760020b5f5260205260405f208054906fffffffffffffffffffffffffffffffff8216611a188b600f0b826141ea565b901592836fffffffffffffffffffffffffffffffff831615141593611c1d575b8b600f0b9060801d600f0b03916f7fffffffffffffffffffffffffffffff83137fffffffffffffffffffffffffffffffff80000000000000000000000000000000841217611bf057826fffffffffffffffffffffffffffffffff935060801b83831617905516606086015260408501525f88600f0b1215611afd575b8351611ae1575b6040840151156114b657611adc60808c015160020b88600560805101613d88565b6114b6565b611af860808c015160020b8a600560805101613d88565b611abb565b60808b015160020b6fffffffffffffffffffffffffffffffff600181602088015116925f817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276180712817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618050390620d89e8050301810416809111611bc4576fffffffffffffffffffffffffffffffff6060860151161115611ab457867fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b897fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6080515460a01c60020b8b13611a3857600160805101546001840155600260805101546002840155611a38565b6080515460a01c60020b1215611c61575b8e6119cc565b600160805101546001840155600260805101546002840155611c5b565b857f1ad777f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b877fd5e2f7ab000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60448887604051917fc4433ed500000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f604085015113808091611e32575b15611dc75750506040517f259982e5000000000000000000000000000000000000000000000000000000006020820152611dbe9161112482611d928887898c3360248701613347565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283612ae6565b505b85806113e3565b159081611e24575b50611ddb575b50611dc0565b6040517f21d0ee70000000000000000000000000000000000000000000000000000000006020820152611e1d9161112482611d928887898c3360248701613347565b5085611dd5565b610200915016151587611dcf565b5061080082161515611d49565b3461031257606060031936011261031257611e58612a15565b73ffffffffffffffffffffffffffffffffffffffff611e75612a38565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f206044355f52602052602060405f2054604051908152f35b3461031257604060031936011261031257611ed2612a15565b602435908115158092036103125773ffffffffffffffffffffffffffffffffffffffff90335f52600360205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a3602060405160018152f35b346103125760c060031936011261031257611f8c36612b39565b611f94612b27565b906280000062ffffff60408301511614801590612048575b6120205760a090611fbc8361330a565b205f52600660205260405f2090611fd2826131f2565b81547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff1660d09190911b7cffffff000000000000000000000000000000000000000000000000000016179055005b7f30d21641000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff608082015116331415611fac565b346103125760206003193601126103125760043567ffffffffffffffff81116103125761209d903690600401612be7565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c6122b157612129915f9160017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d60405193849283927f91dd7346000000000000000000000000000000000000000000000000000000008452602060048501526024840191612ce8565b038183335af19081156122a6575f916121fe575b507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c6121d65760406020915f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f835194859381855280519182918282880152018686015e5f85828601015201168101030190f35b7f5212cba1000000000000000000000000000000000000000000000000000000005f5260045ffd5b90503d805f833e61220f8183612ae6565b8101906020818303126103125780519067ffffffffffffffff8211610312570181601f820112156103125780519067ffffffffffffffff8211611d0d576040519261228260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612ae6565b8284526020838301011161031257815f9260208093018386015e830101528161213d565b6040513d5f823e3d90fd5b7f5090d6c6000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103125773ffffffffffffffffffffffffffffffffffffffff6122fc36612a5b565b91929092335f52600560205260405f208282165f5260205260405f20845f526020528260405f205560405192835216907fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b602060031936011261031257612371612a15565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b9576107666020916130a9565b34610312576040600319360112610312576024356004356040519160408360208152826020820152019060051b8301916001602060408501935b83548152019101908483821015610936575060206001916123dd565b346103125760206003193601126103125773ffffffffffffffffffffffffffffffffffffffff612427612a15565b612435825f54163314612c83565b16807fffffffffffffffffffffffff000000000000000000000000000000000000000060025416176002557fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc5f80a2005b3461031257610100600319360112610312576124a136612b39565b60c4359060a43560e43567ffffffffffffffff8111610312576124c8903690600401612be7565b9190937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b9576124fa61318b565b60a0842094855f52600660205260405f2094612515866131f2565b60808101805173ffffffffffffffffffffffffffffffffffffffff8116908133036126af575b50506fffffffffffffffffffffffffffffffff6003880154169788156126875760209861256787612d26565b5f0361257287612d26565b5f036fffffffffffffffffffffffffffffffff169060801b179887612673575b8661265e575b50506125a53389856132ce565b60405190868252858a8301527f29ef05caaff9404b7cb6d1c0e9bbae9eaa7ab2541feba1a9c4248594c08156cb60403393a3519273ffffffffffffffffffffffffffffffffffffffff841693843303612603575b8888604051908152f35b601016612611575b806125f9565b6126529561112493611d92926040519788957fe1b4af69000000000000000000000000000000000000000000000000000000008d8801523360248801613238565b5082808080808061260b565b600201908660801b0481540190558980612598565b60018101828960801b048154019055612592565b7fa74f97ab000000000000000000000000000000000000000000000000000000005f5260045ffd5b6020166126bd575b8061253b565b6040517fb6a8b0fa0000000000000000000000000000000000000000000000000000000060208201526127009161112482611d928b898b8d8b3360248801613238565b50886126b7565b3461031257602060031936011261031257600435545f5260205ff35b346103125761273136612a5b565b907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b9577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103cf73ffffffffffffffffffffffffffffffffffffffff805f9416956127b06127a387612d26565b8603600f0b339089612d6c565b169384845260046020526040842086855260205260408420610241828254612c76565b5f600319360112610312577fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b9576020610766336130a9565b3461031257606060031936011261031257612829612a15565b612831612a38565b604435907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b957610ce59261287961286c84612d26565b5f03600f0b339083612d6c565b612e74565b346103125773ffffffffffffffffffffffffffffffffffffffff6128a136612a5b565b91929092335f52600460205260405f20845f5260205260405f206128c6848254612c69565b90551690815f52600460205260405f20835f5260205260405f206128eb828254612c76565b9055604080513380825260208201939093527f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859918190810161025b565b34610312576020600319360112610312576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361031257807f01ffc9a7000000000000000000000000000000000000000000000000000000006020921490811561299f575b506040519015158152f35b7f0f632fb30000000000000000000000000000000000000000000000000000000091501482612994565b346103125760406003193601126103125760209073ffffffffffffffffffffffffffffffffffffffff6129fa612a15565b165f526004825260405f206024355f52825260405f20548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361031257565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361031257565b60031960609101126103125760043573ffffffffffffffffffffffffffffffffffffffff8116810361031257906024359060443590565b6080810190811067ffffffffffffffff821117611d0d57604052565b6060810190811067ffffffffffffffff821117611d0d57604052565b60a0810190811067ffffffffffffffff821117611d0d57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611d0d57604052565b60a4359062ffffff8216820361031257565b60031960a09101126103125760405190612b5282612aca565b8160043573ffffffffffffffffffffffffffffffffffffffff8116810361031257815260243573ffffffffffffffffffffffffffffffffffffffff8116810361031257602082015260443562ffffff811681036103125760408201526064358060020b81036103125760608201526084359073ffffffffffffffffffffffffffffffffffffffff821682036103125760800152565b9181601f840112156103125782359167ffffffffffffffff8311610312576020838186019501011161031257565b9060206003198301126103125760043567ffffffffffffffff811161031257826023820112156103125780600401359267ffffffffffffffff84116103125760248460051b83010111610312576024019190565b91908203918211611bf057565b91908201809211611bf057565b15612c8a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6f80000000000000000000000000000000811015612d4457600f0b90565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190600f0b918215612e6f57612da2919073ffffffffffffffffffffffffffffffffffffffff8092165f521660205260405f2090565b612dae815c92836137a5565b80915d612e1f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d5b565b15612e2657565b60017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d565b505050565b90919073ffffffffffffffffffffffffffffffffffffffff81169081612f665750505f80808093855af115612ea65750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b60205f60448194968260409573ffffffffffffffffffffffffffffffffffffffff988751998a947fa9059cbb00000000000000000000000000000000000000000000000000000000865216600485015260248401525af13d15601f3d11600185511416171692828152826020820152015215612fdf5750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c919073ffffffffffffffffffffffffffffffffffffffff83166130fe57612e1d9034935b6130f885612d26565b90612d6c565b3461316357612e1d9061313a7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c6131358661370e565b612c69565b935f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d6130ef565b7fb0ec849e000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036131ca57565b7f0d89438e000000000000000000000000000000000000000000000000000000005f5260045ffd5b5473ffffffffffffffffffffffffffffffffffffffff161561321057565b7f486aa307000000000000000000000000000000000000000000000000000000005f5260045ffd5b91926132b36101209473ffffffffffffffffffffffffffffffffffffffff6132cb999794168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c083015260e0820152816101008201520191612ce8565b90565b9073ffffffffffffffffffffffffffffffffffffffff6020612e1d94936132fd85848351168660801d90612d6c565b01511690600f0b90612d6c565b62ffffff16620f4240811161331c5750565b7f14002113000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906132cb95936133c46101609473ffffffffffffffffffffffffffffffffffffffff6133f394168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08501526020820151900b60e0840152604081015161010084015260600151610120830152565b816101408201520191612ce8565b9081600f0b918203612d4457565b926134bd9061348e6132cb99979473ffffffffffffffffffffffffffffffffffffffff6101a09895168752602087019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08701526020820151900b60e0860152604081015161010086015260600151610120850152565b610140830152610160820152816101808201520191612ce8565b939590919296945f9673ffffffffffffffffffffffffffffffffffffffff8616331461362857885f6040870151135f146135b757610400871661351e575b50505050505050565b6135aa97999850926135a39695949261356b92613597956040519788967f9f063efc000000000000000000000000000000000000000000000000000000006020890152336024890161340f565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612ae6565b6002821615159161421b565b809261423b565b915f808080808080613515565b95949392919061010086166135cf5750505050505050565b6135aa9799508698509161356b9161361c94936135a3986040519788967f6c2bbe7e000000000000000000000000000000000000000000000000000000006020890152336024890161340f565b6001821615159161421b565b505f96505050505050565b6080811615806136e5575b6136bb576040811615806136d9575b6136bb57610400811615806136cd575b6136bb57610100811615806136c1575b6136bb5773ffffffffffffffffffffffffffffffffffffffff811661369b575062ffffff1662800000141590565b613fff1615908115916136ac575090565b62800000915062ffffff161490565b50505f90565b5060018116151561366d565b5060028116151561365d565b5060048116151561364d565b5060088116151561363e565b6280000062ffffff821614613709576132cb8161330a565b505f90565b73ffffffffffffffffffffffffffffffffffffffff168061372e57504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa9081156122a6575f91613776575090565b90506020813d60201161379d575b8161379160209383612ae6565b81010312610312575190565b3d9150613784565b9190915f8382019384129112908015821691151617611bf057565b6020830151955f9586959194913373ffffffffffffffffffffffffffffffffffffffff8516146139a957608084166137fa575b5050505050565b6138e29261356b6138dc926138c8946040519586947f575e24b4000000000000000000000000000000000000000000000000000000006020870152336024870152613892604487018c73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560e487015260208101516101048701526040015173ffffffffffffffffffffffffffffffffffffffff16610124860152565b610140610144850152610164840191612ce8565b82613ba1565b916060835103613981576040015162ffffff166280000014613975575b600816613910575b808080806137f3565b604001519250608083901d600f0b801561390757613931905f8612956137a5565b931561396d575f84135b613945575f613907565b7ffa0b71d6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f841261393b565b606082015193506138ff565b7f1e048e1d000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f965086955050505050565b90600f0b90600f0b01907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082126f7fffffffffffffffffffffffffffffff831317611bf057565b9196959394929473ffffffffffffffffffffffffffffffffffffffff83163314613b94578460801d94600f0b938860408516613abc575b50505050505f9481600f0b15801590613ab0575b613a54575b5050509190565b613a8b9395505f60208201511290511515145f14613a93576fffffffffffffffffffffffffffffffff169060801b175b809361423b565b5f8080613a4d565b906fffffffffffffffffffffffffffffffff169060801b17613a84565b5082600f0b1515613a48565b613b78613b849461356b61174995613b8a999895613b5d613892966040519788967fb47b2fb1000000000000000000000000000000000000000000000000000000006020890152336024890152604488019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8c610144850152610160610164850152610184840191612ce8565b6004821615159161421b565b906139b6565b5f80808088613a34565b5050505050909150905f90565b9190918251925f8060208301958682865af115613c3f575050604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f3d011683016040523d83523d9060208401915f833e6020845110918215613c0b575b505061398157565b5190517fffffffff000000000000000000000000000000000000000000000000000000009182169116141590505f80613c03565b5183517fffffffff0000000000000000000000000000000000000000000000000000000081169160048110613d53575b50507fffffffff000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01169173ffffffffffffffffffffffffffffffffffffffff604051947f90bfb865000000000000000000000000000000000000000000000000000000008652166004850152166024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fa9e35b2f0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffff000000000000000000000000000000000000000000000000000000009250829060040360031b1b16168280613c6f565b919060020b9060020b90818107613db65705908160081d5f52602052600160ff60405f2092161b8154189055565b601c906044926040519163d4d8f3e683526020830152604082015201fd5b60020b908160ff1d82810118620d89e8811161411a5763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a594001027001000000000000000000000000000000001891600281166140fe575b600481166140e2575b600881166140c6575b601081166140aa575b6020811661408e575b60408116614072575b60808116614056575b610100811661403a575b610200811661401e575b6104008116614002575b6108008116613fe6575b6110008116613fca575b6120008116613fae575b6140008116613f92575b6180008116613f76575b620100008116613f5a575b620200008116613f3f575b620400008116613f24575b6208000016613f0b575b5f12613ee4575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04613edd565b6b048a170391f7dc42444e8fa290910260801c90613ed6565b6d2216e584f5fa1ea926041bedfe9890920260801c91613ecc565b916e5d6af8dedb81196699c329225ee6040260801c91613ec1565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91613eb6565b916f31be135f97d08fd981231505542fcfa60260801c91613eab565b916f70d869a156d2a1b890bb3df62baf32f70260801c91613ea1565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91613e97565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91613e8d565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91613e83565b916ff3392b0822b70005940c7a398e4b70f30260801c91613e79565b916ff987a7253ac413176f2b074cf7815e540260801c91613e6f565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91613e65565b916ffe5dee046a99a2a811c461f1969c30530260801c91613e5b565b916fff2ea16466c96a3843ec78b326b528610260801c91613e52565b916fff973b41fa98c081472e6896dfb254c00260801c91613e49565b916fffcb9843d60f6159c9db58835c9266440260801c91613e40565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91613e37565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91613e2e565b916ffff97272373d413259a46990580e213a0260801c91613e25565b827f8b86327a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b905f83600f0b125f1461417b57614171925f036fffffffffffffffffffffffffffffffff16916156b9565b5f8112612d445790565b614197926fffffffffffffffffffffffffffffffff169161565e565b5f8112612d44575f0390565b905f83600f0b125f146141ce57614171925f036fffffffffffffffffffffffffffffffff16916157b0565b614197926fffffffffffffffffffffffffffffffff16916156f9565b906fffffffffffffffffffffffffffffffff90600f0b911601908160801c61420e57565b6393dafdf15f526004601cfd5b9061422591613ba1565b9015613709576040815103613981576040015190565b61425e906142508360801d8260801d03613401565b92600f0b90600f0b03613401565b6fffffffffffffffffffffffffffffffff169060801b1790565b73fffd8963efd1fc6a506488495d951d516396168273ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d8301161161455c5777ffffffffffffffffffffffffffffffffffffffff000000008160201b168060ff6142f583615857565b16916080831061455057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8182011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c67800000000000000016907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800160401b1717171717171717171717171717693627a301d71055774c85027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556810160801d60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918282145f1461450d5750905090565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff61454184613dd4565b161161454b575090565b905090565b905081607f031b614325565b73ffffffffffffffffffffffffffffffffffffffff907f61487524000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b81156145a8570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6040519290915f6145e585612aae565b5f855260208501925f845260408601955f875280968654956040860151159586155f1461537157610fff8860b81c16945b8151925f948a73ffffffffffffffffffffffffffffffffffffffff16918288528b60a01c60020b90526fffffffffffffffffffffffffffffffff60038d0154169052608083015162400000811615155f146153625762bfffff166146798161330a565b61ffff8816615347575b8096620f424062ffffff83161015615316575b845115615300575050886152a057606083019073ffffffffffffffffffffffffffffffffffffffff825116818110156152695750505173ffffffffffffffffffffffffffffffffffffffff166401000276a381111561523e57505b604051986101008a018a811067ffffffffffffffff821117611d0d576040525f8a525f60208b01525f60408b01525f60608b01525f60808b01525f60a08b01525f60c08b015288155f146152305760018b0154949390945b60e08b01525b801580156151f6575b61509c5788868d8c8e73ffffffffffffffffffffffffffffffffffffffff8351168252602083015160020b602089015160020b90815f8183071291050386155f14614ef1576fffffffffffffffffffffffffffffffff937ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860409460019484600560ff60609716938260020b60081d890b5f5201602052875f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460ff031c9054169283151593845f14614edf579061483360ff92615857565b90031660020b900360020b0260020b5b905b15158684015260020b8060208401521315614eb4575b620d89e8602082015160020b1215614ea6575b73ffffffffffffffffffffffffffffffffffffffff614893602083015160020b613dd4565b16918291015273ffffffffffffffffffffffffffffffffffffffff8551169673ffffffffffffffffffffffffffffffffffffffff60608c0151169283911516818310189118021892015116928d73ffffffffffffffffffffffffffffffffffffffff8316821015915f87125f14614cfb5762ffffff8516620f42400361491b81895f03615401565b948415614cea5761492d8884836156f9565b955b868110614c2e57509660a093929173ffffffffffffffffffffffffffffffffffffffff98978891620f424062ffffff8316145f14614c1a575050865b955b15614c0c579161497c926156b9565b925b60c0820152015260808d0152168c525f8351135f14614bdc5760a08a0151905f8212612d445703926149b960808b015160c08c015190612c76565b5f8112612d44578103908113600116611bf057935b61ffff8716614b94575b6fffffffffffffffffffffffffffffffff60408d01511680614b7a575b5073ffffffffffffffffffffffffffffffffffffffff8c511673ffffffffffffffffffffffffffffffffffffffff60608c01511681145f14614b3e575060408a0151614a8c575b88614a7f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208b015160020b0160020b5b60020b60208d01525b939261474f565b60208a015160020b614a6f565b88614b12576fffffffffffffffffffffffffffffffff614af98d8d8d600460e08201519260206002820154935b015160020b60020b5f520160205260405f2091600183019081549003905560028201908154900390555460801d908c15614b04575b6040015183166141ea565b1660408d0152614a3c565b5f91909103600f0b90614aee565b6fffffffffffffffffffffffffffffffff614af98d8d8d6004600183015492602060e084015193614ab9565b73ffffffffffffffffffffffffffffffffffffffff8b51168103614b63575b50614a78565b614b6c90614278565b60020b60208d01525f614b5d565b60c08b015160801b0460e08b01510160e08b01525f6149f5565b9662ffffff861661ffff881603614bbf5760c08a0151905b8160c08c01510360c08c015201966149d8565b620f424060808b015161ffff89169060c08d015101020490614bac565b60808a015160c08b015101905f8212612d4457019260a08a01515f8112612d4457614c06916137a5565b936149ce565b614c15926157b0565b61497c565b62ffffff614c299216896158e4565b61496b565b9650505092505082918415811517614cdd578e60a09173ffffffffffffffffffffffffffffffffffffffff96845f14614c7857614c6c878284615983565b80978a015f039561496d565b878711614cb657614cb1614cac614ca46fffffffffffffffffffffffffffffffff84168a60601b61459e565b8a8516612c76565b615a17565b614c6c565b614cb1614cac614cd86fffffffffffffffffffffffffffffffff84168a615506565b614ca4565b634f2461b85f526004601cfd5b614cf588828561565e565b9561492f565b91935091908315614e9557614d118582846156b9565b915b828710614d73579073ffffffffffffffffffffffffffffffffffffffff9560a09280965b15614d645791614d46926156f9565b925b614d5f62ffffff8d16620f424081900390866158e4565b61497e565b614d6d9261565e565b92614d48565b50915050838315821517614cdd578d8315614e6b575073ffffffffffffffffffffffffffffffffffffffff8511614e18578460601b6fffffffffffffffffffffffffffffffff851680820615159104015b73ffffffffffffffffffffffffffffffffffffffff83169281841115614e0b578f939573ffffffffffffffffffffffffffffffffffffffff60a093819803165b8096614d37565b634323a5555f526004601cfd5b6fffffffffffffffffffffffffffffffff8416614e43816c01000000000000000000000000886155bf565b9080156145a8576c01000000000000000000000000870915614dc45760010180614dc4575f80fd5b918085614e908873ffffffffffffffffffffffffffffffffffffffff9860a09561590d565b614e04565b614ea08583836157b0565b91614d13565b620d89e8602082015261486e565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618602082015261485b565b5060020b900360020b0260020b614843565b60019194939650600592955001938460020b60081d60010b5f520160205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160ff86161b0119905416908d8b831592831597885f1461503d5750505050610312578f9160018f8f96907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186060928f989560409660ff896fffffffffffffffffffffffffffffffff9a5f03166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f85851693831c63d76453e004161a17031660020b9060020b0160020b0260020b5b90614845565b90956fffffffffffffffffffffffffffffffff955060409450600193987ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618918960ff6060969b811681031660020b9060020b0160020b0260020b615037565b949891955099969298919598602088015160a01b76ffffff0000000000000000000000000000000000000000167fffffffffffffffffff000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8a51169216171782556fffffffffffffffffffffffffffffffff6003830154166fffffffffffffffffffffffffffffffff6040890151168091036151b1575b5082156151a25760e060029101519101555b825190155f82121461518c575061516a6151729293613401565b925103613401565b6fffffffffffffffffffffffffffffffff169060801b1793565b61517292509061519c9103613401565b91613401565b60e06001910151910155615150565b6fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff000000000000000000000000000000006003840154161760038301555f61513e565b5073ffffffffffffffffffffffffffffffffffffffff8c511673ffffffffffffffffffffffffffffffffffffffff60608501511614614758565b60028b015494939094614749565b7f9e4d7cc7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f7c9c6e8f00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b606083019073ffffffffffffffffffffffffffffffffffffffff825116818111156152695750505173ffffffffffffffffffffffffffffffffffffffff1673fffd8963efd1fc6a506488495d951d5263988d2681101561523e57506146f1565b9a509a50509950505050505050505f925f929190565b5f85511315614696577f96206246000000000000000000000000000000000000000000000000000000005f5260045ffd5b62ffffff610fff89169116620f424081830204910103614683565b508960d01c62ffffff16614679565b610fff8860c41c1694614616565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82820991838084109303928084039384700100000000000000000000000000000000111561031257146153f857700100000000000000000000000000000000910990828211900360801b910360801c1790565b50505060801c90565b818102907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83820990828083109203918083039283620f424011156103125714615480577fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c2613993620f4240910990828211900360fa1b910360061c170290565b5050620f424091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c01000000000000000000000000111561031257146154fd576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c0100000000000000000000000084099282808510940393808503948584111561031257146155b8576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818509938380861095039480860395868511156103125714615656579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b6fffffffffffffffffffffffffffffffff6c010000000000000000000000009173ffffffffffffffffffffffffffffffffffffffff80600195169116038060ff1d908101189316926156b0818561548c565b93091515160190565b6fffffffffffffffffffffffffffffffff9073ffffffffffffffffffffffffffffffffffffffff806132cb9594169116038060ff1d90810118911661548c565b9073ffffffffffffffffffffffffffffffffffffffff811673ffffffffffffffffffffffffffffffffffffffff8316116157aa575b73ffffffffffffffffffffffffffffffffffffffff821692831561579e577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615792948185169403169160601b166158e4565b90808206151591040190565b62bfc9215f526004601cfd5b9061572e565b73ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff821611615851575b73ffffffffffffffffffffffffffffffffffffffff811691821561579e576132cb937bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff61584c948185169403169160601b166155bf565b61459e565b906157e4565b8015610312577f07060605060205000602030205040001060502050303040105050304000000006f8421084210842108cc6318c6db6d54be826fffffffffffffffffffffffffffffffff1060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c60ff1060031b1792831c1c601f161a1790565b9291906158f28282866155bf565b9382156145a8570961590057565b9060010190811561031257565b9190811561597e577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff9160601b169216918282029183838311918404141615615971576132cb92614cac928203916158e4565b63f5c787f15f526004601cfd5b505090565b90918015615a115773ffffffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffff000000000000000000000000819460601b169216808202816159d3848361459e565b146159f9575b50906159e86159ed928461459e565b612c76565b80820615159104011690565b83018381106159d9579150615a0d926158e4565b1690565b50905090565b9073ffffffffffffffffffffffffffffffffffffffff8216918203612d445756fea264697066735822122097d188a8b44916f519592a41fedd7832dee4e7b8b39c61067724771d7226b4f864736f6c634300081a0033","sourceMap":"4714:12900:13:-:0;;;;;;;;;;;;;-1:-1:-1;;4714:12900:13;;;;-1:-1:-1;;;;;4714:12900:13;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4714:12900:13;;;;;;;;-1:-1:-1;4714:12900:13;;-1:-1:-1;;;;;;4714:12900:13;;;;;;;;;1075:40:5;-1:-1:-1;;1075:40:5;719:4:12;700:24;;4714:12900:13;;;;;;700:24:12;4714:12900:13;;;;;;;-1:-1:-1;4714:12900:13;;;;;;-1:-1:-1;4714:12900:13;;;;;-1:-1:-1;4714:12900:13","linkReferences":{}},"deployedBytecode":{"object":"0x60a0806040526004361015610012575f80fd5b5f3560e01c908162fdd58e146129c95750806301ffc9a714612928578063095bcdb61461287e5780630b0d9c091461281057806311da60b4146127d3578063156e29f6146127235780631e2eaeaf14612707578063234266d7146124865780632d771389146123f957806335fd631a146123a35780633dd45adb1461235d578063426a8493146122d957806348c894911461206c5780635275965114611f72578063558a729714611eb9578063598af9e714611e3f5780635a6bcfda146112c95780636276cbbe14610e2e5780637e87ce7d14610d0f57806380f0b44c14610c5b5780638161b87414610b235780638da5cb5b14610af157806397e8cd4e14610aac5780639bf6645f14610a5f578063a5841194146109b2578063b6363cf21461093f578063dbd035ff146108e9578063f02de3b2146108b6578063f135baaa1461089a578063f2fde38b1461080c578063f3cd914c146104e1578063f5298aca146103165763fe99049a14610186575f80fd5b346103125760806003193601126103125761019f612a15565b6101a7612a38565b90604435917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885961025b73ffffffffffffffffffffffffffffffffffffffff8060643595169384331415806102ef575b610269575b845f52600460205260405f20875f5260205260405f2061021c878254612c69565b90551693845f52600460205260405f20865f5260205260405f20610241828254612c76565b905560408051338152602081019290925290918291820190565b0390a4602060405160018152f35b845f52600560205260405f208233165f5260205260405f20875f5260205260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036102bc575b50506101fb565b6102c591612c69565b855f52600560205260405f208333165f5260205260405f20885f5260205260405f20555f866102b5565b50845f52600360205260405f208233165f5260205260ff60405f205416156101f6565b5f80fd5b346103125761032436612a5b565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b9577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103cf73ffffffffffffffffffffffffffffffffffffffff805f95169561039d61039586612d26565b339089612d6c565b16923384141580610482575b6103d4575b83855260046020526040852086865260205260408520610241828254612c69565b0390a4005b83855260056020526040852073ffffffffffffffffffffffffffffffffffffffff33168652602052604085208686526020526040852054817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361043b575b50506103ae565b61044491612c69565b84865260056020526040862073ffffffffffffffffffffffffffffffffffffffff331687526020526040862087875260205260408620558681610434565b5083855260036020526040852073ffffffffffffffffffffffffffffffffffffffff3316865260205260ff604086205416156103a9565b7f54e3ca0d000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461031257610120600319360112610312576104fc36612b39565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610312576040519061053382612aae565b60a4358015158103610312578252602082019060c435825260e4359073ffffffffffffffffffffffffffffffffffffffff8216820361031257604084019182526101043567ffffffffffffffff811161031257610594903690600401612be7565b9290937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b9576105c661318b565b51156107e45760a0822092835f52600660205260405f20906105e7826131f2565b60808401958482828a8a5173ffffffffffffffffffffffffffffffffffffffff1693610612946137c0565b90949195606088015160020b908b511515905173ffffffffffffffffffffffffffffffffffffffff1691604051986106498a612aca565b895260208901526040880152606087015262ffffff166080860152885115155f149862ffffff6107669861069f6107539860209d6107c45773ffffffffffffffffffffffffffffffffffffffff8b5116956145d5565b949296829192610797575b505073ffffffffffffffffffffffffffffffffffffffff845116938e6fffffffffffffffffffffffffffffffff60408301511691015160020b90604051958860801d600f0b875288600f0b60208801526040870152606086015260808501521660a08301527f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c03393a38673ffffffffffffffffffffffffffffffffffffffff8a51166139fd565b8094919461076e575b50508233916132ce565b604051908152f35b73ffffffffffffffffffffffffffffffffffffffff61079092511690836132ce565b848061075c565b73ffffffffffffffffffffffffffffffffffffffff165f5260018f5260405f209081540190558e806106aa565b73ffffffffffffffffffffffffffffffffffffffff8e8c015116956145d5565b7fbe8b8507000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610312576020600319360112610312577fffffffffffffffffffffffff0000000000000000000000000000000000000000610846612a15565b73ffffffffffffffffffffffffffffffffffffffff5f549161086b8284163314612c83565b1691829116175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b34610312576020600319360112610312576004355c5f5260205ff35b34610312575f60031936011261031257602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b34610312576108f736612c15565b6040519160408360208152836020820152019160051b8301916020806040850193925b833554815201910190848382101561093657506020809161091a565b60408186030190f35b3461031257604060031936011261031257610958612a15565b73ffffffffffffffffffffffffffffffffffffffff610975612a38565b91165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b34610312576020600319360112610312576109cb612a15565b73ffffffffffffffffffffffffffffffffffffffff81169081610a0f5750505f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d005b610a189061370e565b907f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d005b3461031257610a6d36612c15565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355c8152019101908483821015610936575060208091610a90565b346103125760206003193601126103125773ffffffffffffffffffffffffffffffffffffffff610ada612a15565b165f526001602052602060405f2054604051908152f35b34610312575f60031936011261031257602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461031257606060031936011261031257610b3c612a15565b610b44612a38565b60443573ffffffffffffffffffffffffffffffffffffffff600254163303610c335773ffffffffffffffffffffffffffffffffffffffff821680151580610bf3575b610bcb576020936107669280610bc35750815f526001855260405f20549384925b5f526001865260405f20610bbc848254612c69565b9055612e74565b938492610ba7565b7fc79e5948000000000000000000000000000000000000000000000000000000005f5260045ffd5b508073ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c1614610b86565b7f48f5c3ed000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461031257604060031936011261031257610c74612a15565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b957335f90815273ffffffffffffffffffffffffffffffffffffffff8216602052604090205c610cca602435612d26565b9081600f0b03610ce757610ce59133915f03600f0b90612d6c565b005b7fbda73abf000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103125760c060031936011261031257610d2936612b39565b610d31612b27565b9073ffffffffffffffffffffffffffffffffffffffff600254163303610c3357623e900062fff0008316106103e9610fff8416101615610dfd57602060a07fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f9922092835f526006825260405f20610da7816131f2565b805479ffffff00000000000000000000000000000000000000000000008360b81b16907fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1617905562ffffff60405191168152a2005b62ffffff827fa7abe2f7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b346103125760c060031936011261031257610e4836612b39565b60a4359073ffffffffffffffffffffffffffffffffffffffff821680830361031257610e7261318b565b6060820191825160020b617fff811361129e5750825160020b60018112611273575073ffffffffffffffffffffffffffffffffffffffff815116602082019073ffffffffffffffffffffffffffffffffffffffff8251168082101561123c575050608082019073ffffffffffffffffffffffffffffffffffffffff825116906040840191610f0662ffffff84511682613633565b156112115750610f1b62ffffff8351166136f1565b96835173ffffffffffffffffffffffffffffffffffffffff81169081330361115a575b505060a0852090815f52600660205260405f2090815473ffffffffffffffffffffffffffffffffffffffff16611132576020997fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438927cffffff0000000000000000000000000000000000000000000000000000610fbc60a094614278565b9260d01b168a76ffffff000000000000000000000000000000000000000084861b161717905562ffffff73ffffffffffffffffffffffffffffffffffffffff808a5116965116965116995160020b73ffffffffffffffffffffffffffffffffffffffff885116906040519b8c528c8c015260408b01528860608b015260020b98896080820152a45173ffffffffffffffffffffffffffffffffffffffff81169081330361106e575b8585604051908152f35b6110001661107d575b80611064565b61112992611107604051937f6fe7e6eb0000000000000000000000000000000000000000000000000000000088860152336024860152604485019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60e483015283610104830152610104825261112461012483612ae6565b613ba1565b50828080611077565b7f7983c051000000000000000000000000000000000000000000000000000000005f5260045ffd5b61200016611169575b80610f3e565b61120a90604051907fdc98354e0000000000000000000000000000000000000000000000000000000060208301523360248301526111f4604483018973ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8860e483015260e4825261112461010483612ae6565b5088611163565b7fe65af6a0000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f6e6c983000000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b7fe9e90588000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7fb70024f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461031257610140600319360112610312576112e436612b39565b60807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610312576040519061131b82612a92565b60a4358060020b810361031257825260c4358060020b810361031257602083015260e43560408301526101043560608301526101243567ffffffffffffffff81116103125761136e903690600401612be7565b90927fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b95761139f61318b565b60a0832093845f52600660205260405f206080526113be6080516131f2565b608084015173ffffffffffffffffffffffffffffffffffffffff811690813303611d3a575b5050815160020b92602083015160020b916114016040850151613401565b93606087015160020b9760608201516040519960c08b018b811067ffffffffffffffff821117611d0d57604052338b528860208c01528660408c015287600f0b60608c015260808b015260a08a01525f9185881215611cd6577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276188812611caa57620d89e88613611c7e576040519261149884612a92565b5f84525f60208501525f60408501525f606085015287600f0b611981575b600460805101978960020b5f528860205260405f20988860020b5f5260205260405f206080515460a01c60020b8b81125f1461192b575060028060018c0154600184015490039b015491015490039b5b60a073ffffffffffffffffffffffffffffffffffffffff825116910151906040519160268301528960068301528b600383015281525f603a600c83012091816040820152816020820152525f5260066080510160205260405f20976fffffffffffffffffffffffffffffffff8954169982600f0b155f146118ce578a156118a6576115cb6115c560409f9b6116aa9c6116bc9e5b60018301956115bd60026115b1848a54850361537f565b9501928354850361537f565b965555612d26565b91612d26565b6fffffffffffffffffffffffffffffffff169060801b179a8b965f84600f0b12611838575b5082600f0b6116f4575b5050506116206116118560801d8360801d01613401565b9185600f0b90600f0b01613401565b6fffffffffffffffffffffffffffffffff169060801b1791815160020b90602083015160020b8c8401516060850151918e5194855260208501528d84015260608301527ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec60803393a38873ffffffffffffffffffffffffffffffffffffffff6080820151166134d7565b809491946116c8575b508333916132ce565b82519182526020820152f35b6116ee9073ffffffffffffffffffffffffffffffffffffffff60808401511690836132ce565b856116b3565b60805154929350909173ffffffffffffffffffffffffffffffffffffffff81169060a01c60020b8281121561175a5750509061174e9261174361173961174994613dd4565b91600f0b92613dd4565b906141a3565b613401565b60801b5b8b80806115fa565b92809193125f1461180557611799916117866117496117499361178088600f0b91613dd4565b876141a3565b9361179486600f0b92613dd4565b614146565b6fffffffffffffffffffffffffffffffff169060801b17906fffffffffffffffffffffffffffffffff6117d860036080510192600f0b828454166141ea565b167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055611752565b9061174992509261181b61173961182195613dd4565b90614146565b6fffffffffffffffffffffffffffffffff16611752565b808f915161187a575b015161184e575b8e6115f0565b6118758260805160049160020b5f52016020525f6002604082208281558260018201550155565b611848565b6118a18360805160049160020b5f52016020525f6002604082208281558260018201550155565b611841565b7faefeb924000000000000000000000000000000000000000000000000000000005f5260045ffd5b6115cb6115c560409f9b6116aa9c6116bc9e6fffffffffffffffffffffffffffffffff6118fe89600f0b836141ea565b167fffffffffffffffffffffffffffffffff0000000000000000000000000000000084541617835561159a565b90999089136119515760028060018c0154600184015490039b015491015490039b611506565b9860026001608051015460018c01549003600183015490039a81806080510154910154900391015490039b611506565b6004608051018960020b5f5280602052898960405f206119da81546fffffffffffffffffffffffffffffffff6119bd81831695600f0b866141ea565b16931594858515141595611c4a575b508d600f0b9060801d6139b6565b60801b82179055602087015285528760020b5f5260205260405f208054906fffffffffffffffffffffffffffffffff8216611a188b600f0b826141ea565b901592836fffffffffffffffffffffffffffffffff831615141593611c1d575b8b600f0b9060801d600f0b03916f7fffffffffffffffffffffffffffffff83137fffffffffffffffffffffffffffffffff80000000000000000000000000000000841217611bf057826fffffffffffffffffffffffffffffffff935060801b83831617905516606086015260408501525f88600f0b1215611afd575b8351611ae1575b6040840151156114b657611adc60808c015160020b88600560805101613d88565b6114b6565b611af860808c015160020b8a600560805101613d88565b611abb565b60808b015160020b6fffffffffffffffffffffffffffffffff600181602088015116925f817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276180712817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618050390620d89e8050301810416809111611bc4576fffffffffffffffffffffffffffffffff6060860151161115611ab457867fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b897fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6080515460a01c60020b8b13611a3857600160805101546001840155600260805101546002840155611a38565b6080515460a01c60020b1215611c61575b8e6119cc565b600160805101546001840155600260805101546002840155611c5b565b857f1ad777f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b877fd5e2f7ab000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60448887604051917fc4433ed500000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f604085015113808091611e32575b15611dc75750506040517f259982e5000000000000000000000000000000000000000000000000000000006020820152611dbe9161112482611d928887898c3360248701613347565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283612ae6565b505b85806113e3565b159081611e24575b50611ddb575b50611dc0565b6040517f21d0ee70000000000000000000000000000000000000000000000000000000006020820152611e1d9161112482611d928887898c3360248701613347565b5085611dd5565b610200915016151587611dcf565b5061080082161515611d49565b3461031257606060031936011261031257611e58612a15565b73ffffffffffffffffffffffffffffffffffffffff611e75612a38565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f206044355f52602052602060405f2054604051908152f35b3461031257604060031936011261031257611ed2612a15565b602435908115158092036103125773ffffffffffffffffffffffffffffffffffffffff90335f52600360205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a3602060405160018152f35b346103125760c060031936011261031257611f8c36612b39565b611f94612b27565b906280000062ffffff60408301511614801590612048575b6120205760a090611fbc8361330a565b205f52600660205260405f2090611fd2826131f2565b81547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff1660d09190911b7cffffff000000000000000000000000000000000000000000000000000016179055005b7f30d21641000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff608082015116331415611fac565b346103125760206003193601126103125760043567ffffffffffffffff81116103125761209d903690600401612be7565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c6122b157612129915f9160017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d60405193849283927f91dd7346000000000000000000000000000000000000000000000000000000008452602060048501526024840191612ce8565b038183335af19081156122a6575f916121fe575b507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c6121d65760406020915f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f835194859381855280519182918282880152018686015e5f85828601015201168101030190f35b7f5212cba1000000000000000000000000000000000000000000000000000000005f5260045ffd5b90503d805f833e61220f8183612ae6565b8101906020818303126103125780519067ffffffffffffffff8211610312570181601f820112156103125780519067ffffffffffffffff8211611d0d576040519261228260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612ae6565b8284526020838301011161031257815f9260208093018386015e830101528161213d565b6040513d5f823e3d90fd5b7f5090d6c6000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103125773ffffffffffffffffffffffffffffffffffffffff6122fc36612a5b565b91929092335f52600560205260405f208282165f5260205260405f20845f526020528260405f205560405192835216907fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b602060031936011261031257612371612a15565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b9576107666020916130a9565b34610312576040600319360112610312576024356004356040519160408360208152826020820152019060051b8301916001602060408501935b83548152019101908483821015610936575060206001916123dd565b346103125760206003193601126103125773ffffffffffffffffffffffffffffffffffffffff612427612a15565b612435825f54163314612c83565b16807fffffffffffffffffffffffff000000000000000000000000000000000000000060025416176002557fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc5f80a2005b3461031257610100600319360112610312576124a136612b39565b60c4359060a43560e43567ffffffffffffffff8111610312576124c8903690600401612be7565b9190937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b9576124fa61318b565b60a0842094855f52600660205260405f2094612515866131f2565b60808101805173ffffffffffffffffffffffffffffffffffffffff8116908133036126af575b50506fffffffffffffffffffffffffffffffff6003880154169788156126875760209861256787612d26565b5f0361257287612d26565b5f036fffffffffffffffffffffffffffffffff169060801b179887612673575b8661265e575b50506125a53389856132ce565b60405190868252858a8301527f29ef05caaff9404b7cb6d1c0e9bbae9eaa7ab2541feba1a9c4248594c08156cb60403393a3519273ffffffffffffffffffffffffffffffffffffffff841693843303612603575b8888604051908152f35b601016612611575b806125f9565b6126529561112493611d92926040519788957fe1b4af69000000000000000000000000000000000000000000000000000000008d8801523360248801613238565b5082808080808061260b565b600201908660801b0481540190558980612598565b60018101828960801b048154019055612592565b7fa74f97ab000000000000000000000000000000000000000000000000000000005f5260045ffd5b6020166126bd575b8061253b565b6040517fb6a8b0fa0000000000000000000000000000000000000000000000000000000060208201526127009161112482611d928b898b8d8b3360248801613238565b50886126b7565b3461031257602060031936011261031257600435545f5260205ff35b346103125761273136612a5b565b907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b9577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103cf73ffffffffffffffffffffffffffffffffffffffff805f9416956127b06127a387612d26565b8603600f0b339089612d6c565b169384845260046020526040842086855260205260408420610241828254612c76565b5f600319360112610312577fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b9576020610766336130a9565b3461031257606060031936011261031257612829612a15565b612831612a38565b604435907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104b957610ce59261287961286c84612d26565b5f03600f0b339083612d6c565b612e74565b346103125773ffffffffffffffffffffffffffffffffffffffff6128a136612a5b565b91929092335f52600460205260405f20845f5260205260405f206128c6848254612c69565b90551690815f52600460205260405f20835f5260205260405f206128eb828254612c76565b9055604080513380825260208201939093527f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859918190810161025b565b34610312576020600319360112610312576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361031257807f01ffc9a7000000000000000000000000000000000000000000000000000000006020921490811561299f575b506040519015158152f35b7f0f632fb30000000000000000000000000000000000000000000000000000000091501482612994565b346103125760406003193601126103125760209073ffffffffffffffffffffffffffffffffffffffff6129fa612a15565b165f526004825260405f206024355f52825260405f20548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361031257565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361031257565b60031960609101126103125760043573ffffffffffffffffffffffffffffffffffffffff8116810361031257906024359060443590565b6080810190811067ffffffffffffffff821117611d0d57604052565b6060810190811067ffffffffffffffff821117611d0d57604052565b60a0810190811067ffffffffffffffff821117611d0d57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611d0d57604052565b60a4359062ffffff8216820361031257565b60031960a09101126103125760405190612b5282612aca565b8160043573ffffffffffffffffffffffffffffffffffffffff8116810361031257815260243573ffffffffffffffffffffffffffffffffffffffff8116810361031257602082015260443562ffffff811681036103125760408201526064358060020b81036103125760608201526084359073ffffffffffffffffffffffffffffffffffffffff821682036103125760800152565b9181601f840112156103125782359167ffffffffffffffff8311610312576020838186019501011161031257565b9060206003198301126103125760043567ffffffffffffffff811161031257826023820112156103125780600401359267ffffffffffffffff84116103125760248460051b83010111610312576024019190565b91908203918211611bf057565b91908201809211611bf057565b15612c8a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6f80000000000000000000000000000000811015612d4457600f0b90565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190600f0b918215612e6f57612da2919073ffffffffffffffffffffffffffffffffffffffff8092165f521660205260405f2090565b612dae815c92836137a5565b80915d612e1f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d5b565b15612e2657565b60017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d565b505050565b90919073ffffffffffffffffffffffffffffffffffffffff81169081612f665750505f80808093855af115612ea65750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b60205f60448194968260409573ffffffffffffffffffffffffffffffffffffffff988751998a947fa9059cbb00000000000000000000000000000000000000000000000000000000865216600485015260248401525af13d15601f3d11600185511416171692828152826020820152015215612fdf5750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c919073ffffffffffffffffffffffffffffffffffffffff83166130fe57612e1d9034935b6130f885612d26565b90612d6c565b3461316357612e1d9061313a7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c6131358661370e565b612c69565b935f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d6130ef565b7fb0ec849e000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036131ca57565b7f0d89438e000000000000000000000000000000000000000000000000000000005f5260045ffd5b5473ffffffffffffffffffffffffffffffffffffffff161561321057565b7f486aa307000000000000000000000000000000000000000000000000000000005f5260045ffd5b91926132b36101209473ffffffffffffffffffffffffffffffffffffffff6132cb999794168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c083015260e0820152816101008201520191612ce8565b90565b9073ffffffffffffffffffffffffffffffffffffffff6020612e1d94936132fd85848351168660801d90612d6c565b01511690600f0b90612d6c565b62ffffff16620f4240811161331c5750565b7f14002113000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906132cb95936133c46101609473ffffffffffffffffffffffffffffffffffffffff6133f394168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08501526020820151900b60e0840152604081015161010084015260600151610120830152565b816101408201520191612ce8565b9081600f0b918203612d4457565b926134bd9061348e6132cb99979473ffffffffffffffffffffffffffffffffffffffff6101a09895168752602087019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08701526020820151900b60e0860152604081015161010086015260600151610120850152565b610140830152610160820152816101808201520191612ce8565b939590919296945f9673ffffffffffffffffffffffffffffffffffffffff8616331461362857885f6040870151135f146135b757610400871661351e575b50505050505050565b6135aa97999850926135a39695949261356b92613597956040519788967f9f063efc000000000000000000000000000000000000000000000000000000006020890152336024890161340f565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612ae6565b6002821615159161421b565b809261423b565b915f808080808080613515565b95949392919061010086166135cf5750505050505050565b6135aa9799508698509161356b9161361c94936135a3986040519788967f6c2bbe7e000000000000000000000000000000000000000000000000000000006020890152336024890161340f565b6001821615159161421b565b505f96505050505050565b6080811615806136e5575b6136bb576040811615806136d9575b6136bb57610400811615806136cd575b6136bb57610100811615806136c1575b6136bb5773ffffffffffffffffffffffffffffffffffffffff811661369b575062ffffff1662800000141590565b613fff1615908115916136ac575090565b62800000915062ffffff161490565b50505f90565b5060018116151561366d565b5060028116151561365d565b5060048116151561364d565b5060088116151561363e565b6280000062ffffff821614613709576132cb8161330a565b505f90565b73ffffffffffffffffffffffffffffffffffffffff168061372e57504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa9081156122a6575f91613776575090565b90506020813d60201161379d575b8161379160209383612ae6565b81010312610312575190565b3d9150613784565b9190915f8382019384129112908015821691151617611bf057565b6020830151955f9586959194913373ffffffffffffffffffffffffffffffffffffffff8516146139a957608084166137fa575b5050505050565b6138e29261356b6138dc926138c8946040519586947f575e24b4000000000000000000000000000000000000000000000000000000006020870152336024870152613892604487018c73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560e487015260208101516101048701526040015173ffffffffffffffffffffffffffffffffffffffff16610124860152565b610140610144850152610164840191612ce8565b82613ba1565b916060835103613981576040015162ffffff166280000014613975575b600816613910575b808080806137f3565b604001519250608083901d600f0b801561390757613931905f8612956137a5565b931561396d575f84135b613945575f613907565b7ffa0b71d6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f841261393b565b606082015193506138ff565b7f1e048e1d000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f965086955050505050565b90600f0b90600f0b01907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082126f7fffffffffffffffffffffffffffffff831317611bf057565b9196959394929473ffffffffffffffffffffffffffffffffffffffff83163314613b94578460801d94600f0b938860408516613abc575b50505050505f9481600f0b15801590613ab0575b613a54575b5050509190565b613a8b9395505f60208201511290511515145f14613a93576fffffffffffffffffffffffffffffffff169060801b175b809361423b565b5f8080613a4d565b906fffffffffffffffffffffffffffffffff169060801b17613a84565b5082600f0b1515613a48565b613b78613b849461356b61174995613b8a999895613b5d613892966040519788967fb47b2fb1000000000000000000000000000000000000000000000000000000006020890152336024890152604488019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8c610144850152610160610164850152610184840191612ce8565b6004821615159161421b565b906139b6565b5f80808088613a34565b5050505050909150905f90565b9190918251925f8060208301958682865af115613c3f575050604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f3d011683016040523d83523d9060208401915f833e6020845110918215613c0b575b505061398157565b5190517fffffffff000000000000000000000000000000000000000000000000000000009182169116141590505f80613c03565b5183517fffffffff0000000000000000000000000000000000000000000000000000000081169160048110613d53575b50507fffffffff000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01169173ffffffffffffffffffffffffffffffffffffffff604051947f90bfb865000000000000000000000000000000000000000000000000000000008652166004850152166024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fa9e35b2f0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffff000000000000000000000000000000000000000000000000000000009250829060040360031b1b16168280613c6f565b919060020b9060020b90818107613db65705908160081d5f52602052600160ff60405f2092161b8154189055565b601c906044926040519163d4d8f3e683526020830152604082015201fd5b60020b908160ff1d82810118620d89e8811161411a5763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a594001027001000000000000000000000000000000001891600281166140fe575b600481166140e2575b600881166140c6575b601081166140aa575b6020811661408e575b60408116614072575b60808116614056575b610100811661403a575b610200811661401e575b6104008116614002575b6108008116613fe6575b6110008116613fca575b6120008116613fae575b6140008116613f92575b6180008116613f76575b620100008116613f5a575b620200008116613f3f575b620400008116613f24575b6208000016613f0b575b5f12613ee4575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04613edd565b6b048a170391f7dc42444e8fa290910260801c90613ed6565b6d2216e584f5fa1ea926041bedfe9890920260801c91613ecc565b916e5d6af8dedb81196699c329225ee6040260801c91613ec1565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91613eb6565b916f31be135f97d08fd981231505542fcfa60260801c91613eab565b916f70d869a156d2a1b890bb3df62baf32f70260801c91613ea1565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91613e97565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91613e8d565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91613e83565b916ff3392b0822b70005940c7a398e4b70f30260801c91613e79565b916ff987a7253ac413176f2b074cf7815e540260801c91613e6f565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91613e65565b916ffe5dee046a99a2a811c461f1969c30530260801c91613e5b565b916fff2ea16466c96a3843ec78b326b528610260801c91613e52565b916fff973b41fa98c081472e6896dfb254c00260801c91613e49565b916fffcb9843d60f6159c9db58835c9266440260801c91613e40565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91613e37565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91613e2e565b916ffff97272373d413259a46990580e213a0260801c91613e25565b827f8b86327a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b905f83600f0b125f1461417b57614171925f036fffffffffffffffffffffffffffffffff16916156b9565b5f8112612d445790565b614197926fffffffffffffffffffffffffffffffff169161565e565b5f8112612d44575f0390565b905f83600f0b125f146141ce57614171925f036fffffffffffffffffffffffffffffffff16916157b0565b614197926fffffffffffffffffffffffffffffffff16916156f9565b906fffffffffffffffffffffffffffffffff90600f0b911601908160801c61420e57565b6393dafdf15f526004601cfd5b9061422591613ba1565b9015613709576040815103613981576040015190565b61425e906142508360801d8260801d03613401565b92600f0b90600f0b03613401565b6fffffffffffffffffffffffffffffffff169060801b1790565b73fffd8963efd1fc6a506488495d951d516396168273ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d8301161161455c5777ffffffffffffffffffffffffffffffffffffffff000000008160201b168060ff6142f583615857565b16916080831061455057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8182011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c67800000000000000016907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800160401b1717171717171717171717171717693627a301d71055774c85027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556810160801d60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918282145f1461450d5750905090565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff61454184613dd4565b161161454b575090565b905090565b905081607f031b614325565b73ffffffffffffffffffffffffffffffffffffffff907f61487524000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b81156145a8570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6040519290915f6145e585612aae565b5f855260208501925f845260408601955f875280968654956040860151159586155f1461537157610fff8860b81c16945b8151925f948a73ffffffffffffffffffffffffffffffffffffffff16918288528b60a01c60020b90526fffffffffffffffffffffffffffffffff60038d0154169052608083015162400000811615155f146153625762bfffff166146798161330a565b61ffff8816615347575b8096620f424062ffffff83161015615316575b845115615300575050886152a057606083019073ffffffffffffffffffffffffffffffffffffffff825116818110156152695750505173ffffffffffffffffffffffffffffffffffffffff166401000276a381111561523e57505b604051986101008a018a811067ffffffffffffffff821117611d0d576040525f8a525f60208b01525f60408b01525f60608b01525f60808b01525f60a08b01525f60c08b015288155f146152305760018b0154949390945b60e08b01525b801580156151f6575b61509c5788868d8c8e73ffffffffffffffffffffffffffffffffffffffff8351168252602083015160020b602089015160020b90815f8183071291050386155f14614ef1576fffffffffffffffffffffffffffffffff937ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860409460019484600560ff60609716938260020b60081d890b5f5201602052875f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460ff031c9054169283151593845f14614edf579061483360ff92615857565b90031660020b900360020b0260020b5b905b15158684015260020b8060208401521315614eb4575b620d89e8602082015160020b1215614ea6575b73ffffffffffffffffffffffffffffffffffffffff614893602083015160020b613dd4565b16918291015273ffffffffffffffffffffffffffffffffffffffff8551169673ffffffffffffffffffffffffffffffffffffffff60608c0151169283911516818310189118021892015116928d73ffffffffffffffffffffffffffffffffffffffff8316821015915f87125f14614cfb5762ffffff8516620f42400361491b81895f03615401565b948415614cea5761492d8884836156f9565b955b868110614c2e57509660a093929173ffffffffffffffffffffffffffffffffffffffff98978891620f424062ffffff8316145f14614c1a575050865b955b15614c0c579161497c926156b9565b925b60c0820152015260808d0152168c525f8351135f14614bdc5760a08a0151905f8212612d445703926149b960808b015160c08c015190612c76565b5f8112612d44578103908113600116611bf057935b61ffff8716614b94575b6fffffffffffffffffffffffffffffffff60408d01511680614b7a575b5073ffffffffffffffffffffffffffffffffffffffff8c511673ffffffffffffffffffffffffffffffffffffffff60608c01511681145f14614b3e575060408a0151614a8c575b88614a7f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208b015160020b0160020b5b60020b60208d01525b939261474f565b60208a015160020b614a6f565b88614b12576fffffffffffffffffffffffffffffffff614af98d8d8d600460e08201519260206002820154935b015160020b60020b5f520160205260405f2091600183019081549003905560028201908154900390555460801d908c15614b04575b6040015183166141ea565b1660408d0152614a3c565b5f91909103600f0b90614aee565b6fffffffffffffffffffffffffffffffff614af98d8d8d6004600183015492602060e084015193614ab9565b73ffffffffffffffffffffffffffffffffffffffff8b51168103614b63575b50614a78565b614b6c90614278565b60020b60208d01525f614b5d565b60c08b015160801b0460e08b01510160e08b01525f6149f5565b9662ffffff861661ffff881603614bbf5760c08a0151905b8160c08c01510360c08c015201966149d8565b620f424060808b015161ffff89169060c08d015101020490614bac565b60808a015160c08b015101905f8212612d4457019260a08a01515f8112612d4457614c06916137a5565b936149ce565b614c15926157b0565b61497c565b62ffffff614c299216896158e4565b61496b565b9650505092505082918415811517614cdd578e60a09173ffffffffffffffffffffffffffffffffffffffff96845f14614c7857614c6c878284615983565b80978a015f039561496d565b878711614cb657614cb1614cac614ca46fffffffffffffffffffffffffffffffff84168a60601b61459e565b8a8516612c76565b615a17565b614c6c565b614cb1614cac614cd86fffffffffffffffffffffffffffffffff84168a615506565b614ca4565b634f2461b85f526004601cfd5b614cf588828561565e565b9561492f565b91935091908315614e9557614d118582846156b9565b915b828710614d73579073ffffffffffffffffffffffffffffffffffffffff9560a09280965b15614d645791614d46926156f9565b925b614d5f62ffffff8d16620f424081900390866158e4565b61497e565b614d6d9261565e565b92614d48565b50915050838315821517614cdd578d8315614e6b575073ffffffffffffffffffffffffffffffffffffffff8511614e18578460601b6fffffffffffffffffffffffffffffffff851680820615159104015b73ffffffffffffffffffffffffffffffffffffffff83169281841115614e0b578f939573ffffffffffffffffffffffffffffffffffffffff60a093819803165b8096614d37565b634323a5555f526004601cfd5b6fffffffffffffffffffffffffffffffff8416614e43816c01000000000000000000000000886155bf565b9080156145a8576c01000000000000000000000000870915614dc45760010180614dc4575f80fd5b918085614e908873ffffffffffffffffffffffffffffffffffffffff9860a09561590d565b614e04565b614ea08583836157b0565b91614d13565b620d89e8602082015261486e565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618602082015261485b565b5060020b900360020b0260020b614843565b60019194939650600592955001938460020b60081d60010b5f520160205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160ff86161b0119905416908d8b831592831597885f1461503d5750505050610312578f9160018f8f96907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186060928f989560409660ff896fffffffffffffffffffffffffffffffff9a5f03166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f85851693831c63d76453e004161a17031660020b9060020b0160020b0260020b5b90614845565b90956fffffffffffffffffffffffffffffffff955060409450600193987ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618918960ff6060969b811681031660020b9060020b0160020b0260020b615037565b949891955099969298919598602088015160a01b76ffffff0000000000000000000000000000000000000000167fffffffffffffffffff000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8a51169216171782556fffffffffffffffffffffffffffffffff6003830154166fffffffffffffffffffffffffffffffff6040890151168091036151b1575b5082156151a25760e060029101519101555b825190155f82121461518c575061516a6151729293613401565b925103613401565b6fffffffffffffffffffffffffffffffff169060801b1793565b61517292509061519c9103613401565b91613401565b60e06001910151910155615150565b6fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff000000000000000000000000000000006003840154161760038301555f61513e565b5073ffffffffffffffffffffffffffffffffffffffff8c511673ffffffffffffffffffffffffffffffffffffffff60608501511614614758565b60028b015494939094614749565b7f9e4d7cc7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f7c9c6e8f00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b606083019073ffffffffffffffffffffffffffffffffffffffff825116818111156152695750505173ffffffffffffffffffffffffffffffffffffffff1673fffd8963efd1fc6a506488495d951d5263988d2681101561523e57506146f1565b9a509a50509950505050505050505f925f929190565b5f85511315614696577f96206246000000000000000000000000000000000000000000000000000000005f5260045ffd5b62ffffff610fff89169116620f424081830204910103614683565b508960d01c62ffffff16614679565b610fff8860c41c1694614616565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82820991838084109303928084039384700100000000000000000000000000000000111561031257146153f857700100000000000000000000000000000000910990828211900360801b910360801c1790565b50505060801c90565b818102907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83820990828083109203918083039283620f424011156103125714615480577fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c2613993620f4240910990828211900360fa1b910360061c170290565b5050620f424091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c01000000000000000000000000111561031257146154fd576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c0100000000000000000000000084099282808510940393808503948584111561031257146155b8576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818509938380861095039480860395868511156103125714615656579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b6fffffffffffffffffffffffffffffffff6c010000000000000000000000009173ffffffffffffffffffffffffffffffffffffffff80600195169116038060ff1d908101189316926156b0818561548c565b93091515160190565b6fffffffffffffffffffffffffffffffff9073ffffffffffffffffffffffffffffffffffffffff806132cb9594169116038060ff1d90810118911661548c565b9073ffffffffffffffffffffffffffffffffffffffff811673ffffffffffffffffffffffffffffffffffffffff8316116157aa575b73ffffffffffffffffffffffffffffffffffffffff821692831561579e577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615792948185169403169160601b166158e4565b90808206151591040190565b62bfc9215f526004601cfd5b9061572e565b73ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff821611615851575b73ffffffffffffffffffffffffffffffffffffffff811691821561579e576132cb937bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff61584c948185169403169160601b166155bf565b61459e565b906157e4565b8015610312577f07060605060205000602030205040001060502050303040105050304000000006f8421084210842108cc6318c6db6d54be826fffffffffffffffffffffffffffffffff1060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c60ff1060031b1792831c1c601f161a1790565b9291906158f28282866155bf565b9382156145a8570961590057565b9060010190811561031257565b9190811561597e577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff9160601b169216918282029183838311918404141615615971576132cb92614cac928203916158e4565b63f5c787f15f526004601cfd5b505090565b90918015615a115773ffffffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffff000000000000000000000000819460601b169216808202816159d3848361459e565b146159f9575b50906159e86159ed928461459e565b612c76565b80820615159104011690565b83018381106159d9579150615a0d926158e4565b1690565b50905090565b9073ffffffffffffffffffffffffffffffffffffffff8216918203612d445756fea264697066735822122097d188a8b44916f519592a41fedd7832dee4e7b8b39c61067724771d7226b4f864736f6c634300081a0033","sourceMap":"4714:12900:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6552:13;4714:12900;6552:13;;;4714:12900;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4714:12900:13;;;;;;;:::i;:::-;;;:::i;:::-;;;;;1928:50:8;;4714:12900:13;;;;;;1594:10:8;;;:20;;:55;;;4714:12900:13;1590:237:8;;4714:12900:13;;;;;;;;;;;;;;;;;;1837:31:8;4714:12900:13;;;1837:31:8;:::i;:::-;4714:12900:13;;;;;;;;;;;;;;;;;;;;;1879:33:8;4714:12900:13;;;1879:33:8;:::i;:::-;4714:12900:13;;;;;1594:10:8;4714:12900:13;;;;;;;;;;;;;;;;;1928:50:8;;;;4714:12900:13;;;;;;;1590:237:8;4714:12900:13;;;1683:9:8;4714:12900:13;;;;;1594:10:8;;4714:12900:13;-1:-1:-1;4714:12900:13;;;;-1:-1:-1;4714:12900:13;;;;;;;;;;1734:28:8;1745:17;1734:28;;1730:86;;1590:237;;;;;1730:86;1800:16;;;:::i;:::-;4714:12900:13;;;1683:9:8;4714:12900:13;;;;;1594:10:8;;4714:12900:13;-1:-1:-1;4714:12900:13;;;;-1:-1:-1;4714:12900:13;;;;;;;;;;1730:86:8;;;;1594:55;4714:12900:13;;;;1619:10:8;4714:12900:13;;;;;1594:10:8;;4714:12900:13;-1:-1:-1;4714:12900:13;;;;;-1:-1:-1;4714:12900:13;;;1618:31:8;1594:55;;4714:12900:13;;;;;;;;;;;:::i;:::-;837:84:33;;5411:18:13;5407:59;;3435:52:8;;4714:12900:13;;;;;15068:17;15087:10;15068:17;;;:::i;:::-;15087:10;;;;:::i;:::-;4714:12900;15087:10;;651:14:9;;;:43;;;4714:12900:13;647:269:9;;4714:12900:13;;;;;;;;;;;;;;;;;;3388:31:8;4714:12900:13;;;3388:31:8;:::i;3435:52::-;;;;4714:12900:13;647:269:9;4714:12900:13;;;736:9:9;4714:12900:13;;;;;;15087:10;4714:12900;;;;;;;;;;;;;;;;;781:36:9;800:17;781:36;;777:129;;647:269;;;;;777:129;867:24;;;:::i;:::-;4714:12900:13;;;736:9:9;4714:12900:13;;;;;;15087:10;4714:12900;;;;;;;;;;;;;;;;;777:129:9;;;;651:43;4714:12900:13;;;;670:10:9;4714:12900:13;;;;;;15087:10;4714:12900;;;;;;;;;;;669:25:9;651:43;;5407:59:13;5431:22;4714:12900;814:96:26;4714:12900:13;;814:96:26;4714:12900:13;;;;;-1:-1:-1;;4714:12900:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;837:84:33;;;;;5411:18:13;5407:59;;1169:76:12;;:::i;:::-;4714:12900:13;9596:27;9592:77;;4714:12900;357:173:50;;4714:12900:13;;;;17404:6;4714:12900;;;;;9759:25;;;;:::i;:::-;9968:9;;;4714:12900;;;;;;;;;9968:43;;;;:::i;:::-;10287:15;;;;4714:12900;10287:15;;4714:12900;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10236:302;;4714:12900;;10236:302;;4714:12900;;10236:302;;4714:12900;;;9968:9;10236:302;;4714:12900;;;;;10556:49;;;4714:12900;11055:10;10556:49;11472:17;10712:70;10556:49;4714:12900;10556:49;;;4714:12900;5223:25;;4714:12900;10556:49;11472:17;:::i;:::-;11548:20;;;;;;11544:78;;10556:49;4714:12900;;;;;;11886:16;;4714:12900;;11886:16;;4714:12900;;11916:11;;4714:12900;;;;;;2052:83:47;;9968:9:13;2052:83:47;2241:89;4714:12900:13;;;2241:89:47;;;4714:12900:13;;;;;;;;;;;;9968:9;4714:12900;;;;;;;5223:25;11737:221;4714:12900;11771:10;11737:221;;4714:12900;;;;;10712:70;:::i;:::-;1676:48:47;;;;10894:109:13;;10556:49;11771:10;;;;11055;;:::i;:::-;4714:12900;;;;;;10894:109;4714:12900;10984:18;4714:12900;;;10984:18;;;:::i;:::-;10894:109;;;;11544:78;4714:12900;;;;;;;;;;;;;258:35:27;4714:12900:13;;11544:78;;;;10556:49;4714:12900;10592:13;;;5223:25;4714:12900;10556:49;11472:17;:::i;9592:77::-;9625:31;4714:12900;814:96:26;4714:12900:13;;814:96:26;4714:12900:13;;;;;-1:-1:-1;;4714:12900:13;;;;;;;;:::i;:::-;;;;;756:44:5;4714:12900:13;;;764:10:5;:19;756:44;:::i;:::-;4714:12900:13;;;;;;;;764:10:5;1424:42;4714:12900:13;1424:42:5;;4714:12900:13;;;;;;-1:-1:-1;;4714:12900:13;;;;;;;422:99:11;4714:12900:13;422:99:11;4714:12900:13;;422:99:11;4714:12900:13;;;;;-1:-1:-1;;4714:12900:13;;;;;;;931:36:14;4714:12900:13;;;;;;;;;;;;;;;:::i;:::-;;1664:936:10;;4714:12900:13;1664:936:10;;;;;;;;;;;;;;;;;;4714:12900:13;1664:936:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;4714:12900:13;1664:936:10;;;;;;4714:12900:13;;;;;-1:-1:-1;;4714:12900:13;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;697:88:8;4714:12900:13;;;;;;697:88:8;4714:12900:13;-1:-1:-1;4714:12900:13;;;;;;-1:-1:-1;4714:12900:13;;;;;;;;;;;;;;;;-1:-1:-1;;4714:12900:13;;;;;;;:::i;:::-;;;;;4998:58:49;12908:24:13;;766:73:25;;4714:12900:13;766:73:25;;4714:12900:13;12904:341;13137:24;;;:::i;:::-;937:173:25;;;;;4714:12900:13;;;;;;;;:::i;:::-;;658:936:11;;4714:12900:13;658:936:11;;;;;;;;;;;;;;;;;;4714:12900:13;658:936:11;;;;;;;;;;;;;;;;;;;;;;;;;;;4714:12900:13;;;;;-1:-1:-1;;4714:12900:13;;;;;;;;:::i;:::-;;;;819:71:14;4714:12900:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;4714:12900:13;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4714:12900:13;;;;;;;:::i;:::-;;;:::i;:::-;;;;1917:21:14;4714:12900:13;;1903:10:14;:35;1899:76;;4714:12900:13;;;4998:58:49;;1989:25:14;:77;;;4714:12900:13;1985:257:14;;4714:12900:13;;2421:15:14;;2271:11;;;4714:12900:13;;;;;;;;;;;2270:54:14;;;;4714:12900:13;;;;;;;;2334:48:14;4714:12900:13;;;2334:48:14;:::i;:::-;4714:12900:13;;2421:15:14;:::i;2270:54::-;;;;;;1985:257;2184:34;4714:12900:13;814:96:26;4714:12900:13;;814:96:26;1989:77:14;629:81:25;;4714:12900:13;629:81:25;;4714:12900:13;448:51:49;1989:77:14;;1899:76;1940:22;4714:12900:13;814:96:26;4714:12900:13;;814:96:26;4714:12900:13;;;;;-1:-1:-1;;4714:12900:13;;;;;;;:::i;:::-;837:84:33;;5411:18:13;5407:59;;14074:10;547:238:24;;;;;;;;;;;;956:73;14193:17:13;4714:12900;;14193:17;:::i;:::-;4714:12900;;;;14224:22;14220:77;;14431:10;14074;;4714:12900;;;;;14431:10;;:::i;:::-;4714:12900;14220:77;14248:36;4714:12900;814:96:26;4714:12900:13;;814:96:26;4714:12900:13;;;;;-1:-1:-1;;4714:12900:13;;;;;;;;:::i;:::-;;;:::i;:::-;;;1393:21:14;4714:12900:13;;1379:10:14;:35;1375:76;;1088:252:38;;;;;;;;;;;1465:36:14;1461:97;;4714:12900:13;;1658:38:14;357:173:50;;4714:12900:13;;;;17404:6;4714:12900;;;;;4767:25:36;;;:::i;:::-;4714:12900:13;;2855:254:52;;;;;;;;;4714:12900:13;;;;;;;5223:25;;1658:38:14;4714:12900:13;1461:97:14;4714:12900:13;1084:176:26;1503:28:14;4714:12900:13;1084:176:26;4714:12900:13;;1084:176:26;;4714:12900:13;1084:176:26;4714:12900:13;;;;;-1:-1:-1;;4714:12900:13;;;;;;;;:::i;:::-;;;;;;;;;;;;1169:76:12;;:::i;:::-;6323:15:13;;;4714:12900;;;;;1676:15:44;6323:34:13;;6319:96;;4714:12900;;;;;;6429:34;;6425:96;;5223:25;4714:12900;5223:25;;4714:12900;6552:13;;;5223:25;4714:12900;5223:25;;4714:12900;887:51:49;;;;6531:202:13;;6747:9;;;;;4714:12900;;;;;6776:7;4714:12900;6776:7;;4714:12900;6747:37;4714:12900;;;;6747:37;;:::i;:::-;6746:38;6742:109;;4714:12900;6877:25;4714:12900;;;;6877:25;:::i;:::-;4714:12900;;;;;;8736:10:30;;;:27;8732:59;;4714:12900:13;357:173:50;;4714:12900:13;357:173:50;;4714:12900:13;;;;7009:6;6552:13;4714:12900;;;;;;;;1502:93:52;4360:80:36;;6552:13:13;4458:41:36;7375:101:13;4458:41:36;3217:178:52;4458:41:36;4714:12900:13;4458:41:36;;:::i;:::-;3217:178:52;;;;2578:157;;;;;;3217:178;;4714:12900:13;;;;5223:25;;;4714:12900;5223:25;;4714:12900;;;;;;;;;;;;;;;5223:25;;;;;;4714:12900;;5223:25;;;;6323:15;5223:25;;4714:12900;;;5223:25;;6747:9;5223:25;;4714:12900;7375:101;4714:12900;;;;8736:10:30;;;:27;8732:59;;4714:12900:13;;;;;;;;;8732:59:30;4714:12900:13;16441:29:30;9413:164;;8732:59;;;;9413:164;9474:92;4714:12900:13;1382:7:30;4714:12900:13;;9488:77:30;;;;;;8736:10;9488:77;;;4714:12900:13;1382:7:30;;;;4714:12900:13;1829:6:30;;;;;;4714:12900:13;5223:25;;1829:6:30;;;;;4714:12900:13;1829:6:30;;;5223:25:13;4714:12900;1829:6:30;;;;4714:12900:13;1829:6:30;;;5223:25:13;1829:6:30;;;;4714:12900:13;;1829:6:30;;;4714:12900:13;1829:6:30;;4714:12900:13;1829:6:30;;5223:25:13;1829:6:30;1382:7;;;;4714:12900:13;1382:7:30;;;;4714:12900:13;1382:7:30;9488:77;;;;;;:::i;:::-;9474:92;:::i;:::-;;9413:164;;;;;4360:80:36;4396:31;4714:12900:13;814:96:26;4714:12900:13;;814:96:26;8732:59:30;4714:12900:13;16441:29:30;9007:160;;8732:59;;;;9007:160;9069:87;4714:12900:13;;;9083:72:30;;6552:13:13;9083:72:30;;;8736:10;9083:72;;;4714:12900:13;1319:7:30;;;;;4714:12900:13;1829:6:30;;;;;;4714:12900:13;5223:25;;1829:6:30;;;;;4714:12900:13;1829:6:30;;;5223:25:13;4714:12900;1829:6:30;;;;4714:12900:13;1829:6:30;;;5223:25:13;1829:6:30;;;;4714:12900:13;;1829:6:30;;;4714:12900:13;1829:6:30;;4714:12900:13;1829:6:30;;5223:25:13;1829:6:30;1319:7;;;;;4714:12900:13;1319:7:30;9083:72;;;;;;:::i;9069:87::-;;9007:160;;;6742:109:13;6786:34;4714:12900;1084:176:26;4714:12900:13;1084:176:26;;4714:12900:13;1084:176:26;6531:202:13;3008:319:26;;;4714:12900:13;3008:319:26;;6581:36:13;3008:319:26;;4714:12900:13;3008:319:26;;;;;;;;6425:96:13;6465:28;4714:12900;1431:143:26;4714:12900:13;1431:143:26;;4714:12900:13;1431:143:26;6319:96:13;6359:28;4714:12900;1431:143:26;4714:12900:13;1431:143:26;;4714:12900:13;1431:143:26;4714:12900:13;;;;;-1:-1:-1;;4714:12900:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;837:84:33;;;;5411:18:13;5407:59;;1169:76:12;;:::i;:::-;4714:12900:13;357:173:50;;4714:12900:13;;;;17404:6;4714:12900;;;;;;;7943:25;;;;:::i;:::-;4714:12900;7985:9;;4714:12900;;;;8736:10:30;;;:27;8732:59;;4714:12900:13;;;;;;;;;;;;;;;8367:32;4714:12900;;;;8367:32;:::i;:::-;8434:15;4714:12900;8434:15;;4714:12900;;;;;;;;;;;;;;;;;;;;;;;;;8736:10:30;4714:12900:13;;8165:342;4714:12900;8165:342;;4714:12900;8165:342;4714:12900;8165:342;;4714:12900;;;;;8165:342;;4714:12900;;8165:342;;4714:12900;;8165:342;;4714:12900;;3958:22:36;;;;;3954:85;;1032:7:44;4053:29:36;;4049:86;;1317:6:44;4149:29:36;;4145:86;;4714:12900:13;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;6579:1188:36;;4714:12900:13;;23223:10:36;;;:21;4714:12900:13;;;;;;;;;;;23279:21:36;4714:12900:13;;;;;;;;;;23330:10:36;;4714:12900:13;;1682:98:52;4714:12900:13;1682:98:52;23386:23:36;;;23382:800;23386:23;;;23452:27;4714:12900:13;23452:27:36;4714:12900:13;23452:27:36;;4714:12900:13;;23482:27:36;;4714:12900:13;;;23550:27:36;;4714:12900:13;23580:27:36;;4714:12900:13;;;23382:800:36;;4714:12900:13;;5223:25;;4714:12900;8165:342;;4714:12900;2447:609:37;4714:12900:13;2447:609:37;;;;;;;17404:6:13;2447:609:37;;;;;;;;;;4714:12900:13;2447:609:37;;;;;;;4714:12900:13;2447:609:37;;;;4714:12900:13;2447:609:37;;;;4714:12900:13;;17404:6;7981:14:36;;;4714:12900:13;;;;;;;;;;;;;;6583:19:36;3970:270:37;4714:12900:13;;;4069:14:37;;4065:67;;8340:20:36;8318;4714:12900:13;3970:270:37;;8963:79:13;3970:270:37;9317:10:13;3970:270:37;;4714:12900:13;4434:29:37;;4714:12900:13;4537:100:37;4714:12900:13;4395:100:37;4714:12900:13;;;;;4395:100:37;:::i;:::-;4576:29;;4714:12900:13;;;;;4537:100:37;:::i;:::-;4714:12900:13;;;8318:20:36;:::i;:::-;8340;;:::i;:::-;4714:12900:13;553:115:47;;4714:12900:13;553:115:47;;4714:12900:13;;;;;;;8454:18:36;8450:255;;3970:270:37;4714:12900:13;;;;8725:1774:36;;3970:270:37;785:220:47;;;1049:15;1032;785:220;4714:12900:13;785:220:47;;4714:12900:13;785:220:47;;1032:15;:::i;:::-;785:220;;4714:12900:13;785:220:47;;4714:12900:13;785:220:47;;1049:15;:::i;:::-;4714:12900:13;553:115:47;;4714:12900:13;553:115:47;;4714:12900:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8790:103;4714:12900;8736:10:30;8790:103:13;;7985:9;4714:12900;;7985:9;;4714:12900;;8963:79;:::i;:::-;1676:48:47;;;;9154:109:13;;3970:270:37;8736:10:30;;;9317::13;;:::i;:::-;4714:12900;;;;;;;;;;9154:109;9244:18;7985:9;4714:12900;;7985:9;;4714:12900;;9244:18;;;:::i;:::-;9154:109;;;8725:1774:36;8779:10;;4714:12900:13;8779:10:36;;-1:-1:-1;8779:10:36;;4714:12900:13;1502:93:52;;;4714:12900:13;1682:98:52;4714:12900:13;1682:98:52;8896:16:36;;;;;;9263:38;;;9208:182;9263:38;9303;9263;9208:171;9263:38;;:::i;:::-;4714:12900:13;;;9303:38:36;;:::i;:::-;9208:171;;:::i;:::-;:182;:::i;:::-;4714:12900:13;553:115:47;8892:1597:36;8725:1774;;;;;8892:1597;9456:16;;;;;9452:1037;4714:12900:13;;;9693:135:36;4714:12900:13;9536:135:36;:99;9693;4714:12900:13;9580:38:36;4714:12900:13;;;9580:38:36;;:::i;:::-;9536:99;;:::i;:135::-;4714:12900:13;9723:38:36;4714:12900:13;;;9723:38:36;;:::i;:::-;9693:99;:::i;:135::-;4714:12900:13;553:115:47;;4714:12900:13;553:115:47;;9905:14:36;4714:12900:13;9882:54:36;2447:609:37;9905:14:36;;;4714:12900:13;;;;;;;9882:54:36;:::i;:::-;4714:12900:13;;;;;;;;8892:1597:36;;9452:1037;10329:38;10274:171;10329:38;;;10369;10329;10274:182;10329:38;;:::i;10369:::-;10274:171;;:::i;:182::-;4714:12900:13;553:115:47;8892:1597:36;;8450:255;4714:12900:13;;;;8492:91:36;;8450:255;4714:12900:13;;8600:91:36;;8450:255;;;;8600:91;8662:9;;;;28707:10;28630:100;4714:12900:13;;-1:-1:-1;4714:12900:13;28707:10:36;4714:12900:13;;28700:23:36;4714:12900:13;;;;;;;;;;;;;;28630:100:36;8662:9;8600:91;;8492;8554:9;;;;28707:10;28630:100;4714:12900:13;;-1:-1:-1;4714:12900:13;28707:10:36;4714:12900:13;;28700:23:36;4714:12900:13;;;;;;;;;;;;;;28630:100:36;8554:9;8492:91;;4065:67:37;4085:34;4714:12900:13;814:96:26;4714:12900:13;;814:96:26;3970:270:37;8340:20:36;8318;4714:12900:13;;;8963:79;4714:12900;9317:10;4714:12900;;4180:49:37;4714:12900:13;;;4180:49:37;;:::i;:::-;4714:12900:13;;;;;;;;3970:270:37;;23382:800:36;23632:24;;;;-1:-1:-1;4714:12900:13;;;23699:27:36;4714:12900:13;23699:27:36;;4714:12900:13;;23729:27:36;;4714:12900:13;;;23797:27:36;;4714:12900:13;23827:27:36;;4714:12900:13;;;23628:554:36;23382:800;;23628:554;23936:25;4714:12900:13;;23936:25:36;;;4714:12900:13;;23964:27:36;;4714:12900:13;;;;23994:27:36;;4714:12900:13;;;24082:25:36;;;;;;4714:12900:13;24110:27:36;;4714:12900:13;;;24140:27:36;;4714:12900:13;;;23628:554:36;23382:800;;6579:1188;4714:12900:13;25138:10:36;;;4714:12900:13;;;;;;;;;;;;;26085:35:36;4714:12900:13;;;25303:60:36;4714:12900:13;;;;;;25303:60:36;;:::i;:::-;4714:12900:13;25415:25:36;;25385:24;;;;25384:57;;25452:357;;;6579:1188;26039:81;4714:12900:13;;;;;;26085:35:36;:::i;:::-;4714:12900:13;26130:730:36;;;;;4714:12900:13;;;;;;;;;;;;;;;;;;;;;;25303:60:36;4714:12900:13;;;25303:60:36;;:::i;:::-;25415:25;;4714:12900:13;;;;;25385:24:36;25384:57;;25452:357;;;6579:1188;4714:12900:13;;;;;;;;;;;;;;;;;;;26039:81:36;4714:12900:13;26039:81:36;26130:730;4714:12900:13;26130:730:36;4714:12900:13;;;26130:730:36;;;4714:12900:13;;;;;;;;;;;;;6974:19:36;;6970:508;;6579:1188;4714:12900:13;;7496:120:36;;6579:1188;4714:12900:13;;;;7633:120:36;6579:1188;7633:120;7715:18;4714:12900:13;8165:342;;4714:12900;;;7679:15:36;;;;;7715:18;:::i;:::-;6579:1188;;7496:120;7578:18;4714:12900:13;8165:342;;4714:12900;;;7542:15:36;;;;;7578:18;:::i;:::-;7496:120;;6970:508;4714:12900:13;8165:342;;4714:12900;;;;;;;;;;;27850:357:36;4714:12900:13;27850:357:36;1032:7:44;27850:357:36;;;1032:7:44;27850:357:36;;;1317:6:44;27850:357:36;;;;;4714:12900:13;7125:52:36;;;7121:159;;4714:12900:13;;;;;;7305:52:36;7301:159;6970:508;7301:159;1431:143:26;7385:30:36;4714:12900:13;1431:143:26;4714:12900:13;1431:143:26;;4714:12900:13;1431:143:26;7121:159:36;1431:143:26;7205:30:36;4714:12900:13;1431:143:26;4714:12900:13;1431:143:26;;4714:12900:13;1431:143:26;4714:12900:13;;;;;;;;;;25452:357:36;25621:10;;4714:12900:13;;1682:98:52;4714:12900:13;1682:98:52;25613:25:36;;25452:357;25609:190;4714:12900:13;25687:25:36;;;4714:12900:13;;25658:26:36;;4714:12900:13;;25759:25:36;;;4714:12900:13;;25730:26:36;;4714:12900:13;25452:357:36;;;25621:10;;4714:12900:13;;1682:98:52;4714:12900:13;1682:98:52;-1:-1:-1;25613:25:36;25609:190;;25452:357;;;;25609:190;4714:12900:13;25687:25:36;;;4714:12900:13;;25658:26:36;;4714:12900:13;;25759:25:36;;;4714:12900:13;;25730:26:36;;4714:12900:13;25609:190:36;;4145:86;1431:143:26;4180:29:36;4714:12900:13;1431:143:26;4714:12900:13;1431:143:26;;4714:12900:13;1431:143:26;4049:86:36;1431:143:26;4084:29:36;4714:12900:13;1431:143:26;4714:12900:13;1431:143:26;;4714:12900:13;1431:143:26;3954:85:36;2092:251:26;;;4714:12900:13;2092:251:26;;3982:24:36;2092:251:26;;4714:12900:13;2092:251:26;;;;;;;;4714:12900:13;;;;;;;;;;8732:59:30;4714:12900:13;;;;;9898:25:30;;;:74;;;8732:59;9894:409;;;-1:-1:-1;;4714:12900:13;;10002:78:30;4714:12900:13;10002:78:30;;;9988:93;;10002:78;4714:12900:13;10002:78:30;8736:10;;;;;10002:78;;;;:::i;:::-;;;;;;;;;:::i;9988:93::-;;9894:409;8732:59;;;;9894:409;10102:26;:78;;;;9894:409;10098:205;;;9894:409;;;;10098:205;4714:12900:13;;10210:81:30;4714:12900:13;10210:81:30;;;10196:96;;10210:81;4714:12900:13;10210:81:30;8736:10;;;;;10210:81;;;;:::i;10196:96::-;;10098:205;;;10102:78;4714:12900:13;10132:48:30;;16441:29;:34;;10102:78;;;9898:74;9927:45;4714:12900:13;16441:29:30;;:34;;9898:74;;4714:12900:13;;;;;-1:-1:-1;;4714:12900:13;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;880:108:8;4714:12900:13;;;;;;880:108:8;4714:12900:13;-1:-1:-1;4714:12900:13;;;;-1:-1:-1;4714:12900:13;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4714:12900:13;;;;;;;:::i;:::-;;;;;;;;;;;;;2355:10:8;;4714:12900:13;;2344:10:8;4714:12900:13;;;;;;;;-1:-1:-1;4714:12900:13;;;;-1:-1:-1;4714:12900:13;;;;;;;;;;;;;;;;;2355:10:8;2403:43;4714:12900:13;2355:10:8;2403:43;;4714:12900:13;;;2464:4:8;4714:12900:13;;;;;;;;-1:-1:-1;;4714:12900:13;;;;;;;;:::i;:::-;;;:::i;:::-;15290:7;552:8:31;4714:12900:13;;15290:7;;4714:12900;;1379:24:31;15289:23:13;;:59;;;4714:12900;15285:142;;4714:12900;15436:24;;;;:::i;:::-;357:173:50;4714:12900:13;;15504:6;4714:12900;;;;;5001:25:36;;;;:::i;:::-;4714:12900:13;;3217:178:52;;;;;;;;;;4714:12900:13;;;15285:142;15364:39;4714:12900;814:96:26;4714:12900:13;;814:96:26;15289:59:13;15338:9;4714:12900;15338:9;;;4714:12900;;15316:10;:32;;15289:59;;4714:12900;;;;;-1:-1:-1;;4714:12900:13;;;;;;;;;;;;;;;;;;;:::i;:::-;837:84:33;;5687:60:13;;4714:12900;527:101:33;4714:12900:13;527:101:33;;837:84;527:101;4714:12900:13;;5898:48;;;;;4714:12900;5898:48;;4714:12900;;5898:48;;4714:12900;;;;;;:::i;:::-;5898:48;5914:10;;;5898:48;;;;;;;4714:12900;5898:48;;;4714:12900;622:89:34;;;5957:75:13;;4714:12900;;675:80:33;;837:84;675:80;4714:12900:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5957:75;5992:27;4714:12900;814:96:26;4714:12900:13;;814:96:26;5898:48:13;;;;;4714:12900;5898:48;;;;;;:::i;:::-;;;4714:12900;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5898:48;;;;4714:12900;;;;;;;;;5687:60;5710:24;4714:12900;814:96:26;4714:12900:13;;814:96:26;4714:12900:13;;;;;;;;:::i;:::-;2125:10:8;;;;;4714:12900:13;;2115:9:8;4714:12900:13;;;;;;;;-1:-1:-1;4714:12900:13;;;;-1:-1:-1;4714:12900:13;;;;;;;;;;;;;;;;;2125:10:8;2174:41;4714:12900:13;2125:10:8;2174:41;;4714:12900:13;;;2233:4:8;4714:12900:13;;;;;-1:-1:-1;;4714:12900:13;;;;;;;:::i;:::-;837:84:33;;5411:18:13;5407:59;;13889:18;4714:12900;13889:18;;:::i;4714:12900::-;;;;;-1:-1:-1;;4714:12900:13;;;;;;;;;;656:871:10;;4714:12900:13;656:871:10;4714:12900:13;656:871:10;;;4714:12900:13;656:871:10;;;;;;;;;;4714:12900:13;;;656:871:10;;;;;;;;;;;;;;;;;;;;4714:12900:13;;656:871:10;;;4714:12900:13;;;;;-1:-1:-1;;4714:12900:13;;;;;;;;:::i;:::-;756:44:5;4714:12900:13;;;;764:10:5;:19;756:44;:::i;:::-;4714:12900:13;;;1153:34:14;4714:12900:13;;;1153:34:14;4714:12900:13;1202:40:14;4714:12900:13;1202:40:14;;4714:12900:13;;;;;;-1:-1:-1;;4714:12900:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;837:84:33;;;;;5411:18:13;5407:59;;1169:76:12;;:::i;:::-;4714:12900:13;357:173:50;;4714:12900:13;;;;17404:6;4714:12900;;;;;12326:25;;;;:::i;:::-;12364:9;;;4714:12900;;;;;8736:10:30;;;:27;8732:59;;4714:12900:13;21771:15:36;;4714:12900:13;21771:15:36;;;4714:12900:13;;21800:14:36;;;21796:66;;4714:12900:13;21993:18:36;;;;:::i;:::-;4714:12900:13;;22016:18:36;;;:::i;:::-;4714:12900:13;;;553:115:47;;12364:9:13;553:115:47;;22198:11:36;;22194:143;;4714:12900:13;22354:11:36;22350:143;;4714:12900:13;8736:10:30;;12515::13;8736::30;12515::13;;;:::i;:::-;4714:12900;;;;;;;;;;;12643:44;4714:12900;8736:10:30;12643:44:13;;4714:12900;;;;;8736:10:30;;;:27;8732:59;;4714:12900:13;;;;;;;;;8732:59:30;4714:12900:13;16441:29:30;16169:164;;8732:59;;;;16169:164;16226:96;4714:12900:13;16240:81:30;4714:12900:13;16240:81:30;4714:12900:13;;;16240:81:30;;;;;;;;8736:10;16240:81;;;;:::i;16226:96::-;;16169:164;;;;;;;;22350:143:36;22385:26;;1070:86:46;;12364:9:13;1070:86:46;;4714:12900:13;;258:35:27;4714:12900:13;;22350:143:36;;;;22194;4714:12900:13;22229:26:36;;1070:86:46;;12364:9:13;1070:86:46;;4714:12900:13;;258:35:27;4714:12900:13;;22194:143:36;;21796:66;21816:33;4714:12900:13;814:96:26;4714:12900:13;;814:96:26;8732:59:30;4714:12900:13;16441:29:30;15740:166;;8732:59;;;;15740:166;4714:12900:13;;15812:82:30;4714:12900:13;15812:82:30;;;15798:97;;15812:82;4714:12900:13;15812:82:30;8736:10;;;;;;15812:82;;;;:::i;15798:97::-;;15740:166;;;4714:12900:13;;;;;-1:-1:-1;;4714:12900:13;;;;;;;411:99:10;4714:12900:13;411:99:10;4714:12900:13;;411:99:10;4714:12900:13;;;;;;;:::i;:::-;837:84:33;;;5411:18:13;5407:59;;3235:54:8;;4714:12900:13;;;;;14761:17;14781:10;14761:17;;;:::i;:::-;4714:12900;;;;14781:10;;;;:::i;:::-;4714:12900;;;;;;;;;;;;;;;;;;;3186:33:8;4714:12900:13;;;3186:33:8;:::i;4714:12900:13:-;;-1:-1:-1;;4714:12900:13;;;;;837:84:33;;5411:18:13;5407:59;;4714:12900;13717:19;13725:10;13717:19;:::i;4714:12900::-;;;;;-1:-1:-1;;4714:12900:13;;;;;;;:::i;:::-;;;:::i;:::-;;;837:84:33;;;5411:18:13;5407:59;;13567:6;13500:17;13520:10;13500:17;;;:::i;:::-;4714:12900;;;;13520:10;;;;:::i;:::-;13567:6;:::i;4714:12900::-;;;;;;;;:::i;:::-;1292:10:8;;;;;4714:12900:13;;;;;;;;;;;;;;;;1282:35:8;4714:12900:13;;;1282:35:8;:::i;:::-;4714:12900:13;;;;;;;;;;;;;;;;;;;;;1328:33:8;4714:12900:13;;;1328:33:8;:::i;:::-;4714:12900:13;;;;;1292:10:8;4714:12900:13;;;;;;;;;;1377:54:8;;4714:12900:13;;;;1377:54:8;4714:12900:13;;;;;;-1:-1:-1;;4714:12900:13;;;;;;;;;;;;;;;2762:25:8;4714:12900:13;;2762:25:8;;:100;;;;;4714:12900:13;;;;;;;;;;2762:100:8;4714:12900:13;2837:25:8;;;2762:100;;;4714:12900:13;;;;;-1:-1:-1;;4714:12900:13;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;-1:-1:-1;;4714:12900:13;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;-1:-1:-1;;4714:12900:13;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;4714:12900:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4714:12900:13;;;;;;;;;;;:::o;2098:168:39:-;2177:8;2172:13;;;2168:57;;4714:12900:13;;2098:168:39;:::o;2168:57::-;2187:25;814:96:26;;;;;16554:356:13;;;4714:12900;;16649:10;;;16645:23;;1367:30:24;;439:352;547:238;439:352;;547:238;;;;;;;;;439:352;;1367:30;1500:16;1408:76;;1500:16;;;:::i;:::-;1526:71;;;16760:9:13;;1271:180:34;;;;;;;16756:148:13;16554:356::o;16756:148::-;16835:13;16831:73;;16554:356::o;16831:73::-;763:180:34;;;;;;16554:356:13:o;16645:23::-;16661:7;;;:::o;1472:2873:49:-;;;;4714:12900:13;;;;4998:58:49;1769:24;;1809:163;;-1:-1:-1;1809:163:49;;;;;;;2085:8;2081:127;;1765:2574;1472:2873::o;2081:127::-;3741:1424:26;;;;;4714:12900:13;3741:1424:26;;;3710:21;3741:1424;;;;;;;-1:-1:-1;3741:1424:26;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3741:1424:26;;;;2163:29:49;3741:1424:26;;;;;;;;;;;;;;;1765:2574:49;2238:1774;-1:-1:-1;2238:1774:49;;;;;;;4714:12900:13;2238:1774:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4124:8;4120:209;;1765:2574;1472:2873::o;4120:209::-;3741:1424:26;2238:1774:49;3741:1424:26;;;2238:1774:49;3741:1424:26;;3710:21;3741:1424;;2238:1774:49;3741:1424:26;;;2238:1774:49;;3741:1424:26;;;;2238:1774:49;3741:1424:26;;;;;;;;;;;;;;;;-1:-1:-1;3741:1424:26;;;;4268:28:49;3741:1424:26;;;;2238:1774:49;3741:1424:26;;;;;;;;;;15651:825:13;629:81:25;;;15651:825:13;4714:12900;;;15918:24;;16459:9;15965;;15914:494;;16442:15;;;:::i;:::-;16459:9;;:::i;15914:494::-;16009:9;16005:59;;16459:9;1199:81:25;16323:28:13;1199:81:25;;16278:24:13;;;:::i;:::-;16323:28;:::i;:::-;766:73:25;4714:12900:13;629:81:25;766:73;15914:494:13;;16005:59;16024:27;4714:12900;814:96:26;;4714:12900:13;814:96:26;963:137:12;4714:12900:13;1039:8:12;4714:12900:13;1030:4:12;1022:25;1018:75;;963:137::o;1018:75::-;1049:31;814:96:26;;;;;28286:157:36;4714:12900:13;1502:93:52;;28364:30:36;28360:76;;28286:157::o;28360:76::-;28396:27;-1:-1:-1;814:96:26;;-1:-1:-1;814:96:26;1829:6:30;;;;;;4714:12900:13;1829:6:30;;;;4714:12900:13;;;1829:6:30;;;;4714:12900:13;1829:6:30;;;;;;4714:12900:13;5223:25;;1829:6:30;;;;;4714:12900:13;1829:6:30;;;5223:25:13;4714:12900;1829:6:30;;;;4714:12900:13;1829:6:30;;;5223:25:13;1829:6:30;;;;4714:12900:13;;1829:6:30;;;4714:12900:13;1829:6:30;;4714:12900:13;1829:6:30;;5223:25:13;1829:6:30;;;;;4714:12900:13;1829:6:30;;;4714:12900:13;1829:6:30;;;;;;;;:::i;:::-;;:::o;16988:232:13:-;;4714:12900;17174:13;17206:6;16988:232;;17143:6;5223:25;;;;4714:12900;2052:83:47;;;17143:6:13;;:::i;:::-;17174:13;5223:25;4714:12900;2241:89:47;;;17206:6:13;;:::i;1833:122:31:-;4714:12900:13;;1111:7:31;1667:18;;1888:60;;1833:122;:::o;1888:60::-;1909:22;-1:-1:-1;1084:176:26;;;;-1:-1:-1;1084:176:26;1587:6:30;;;;;;;;4714:12900:13;1587:6:30;;4714:12900:13;;;1587:6:30;;;;4714:12900:13;1829:6:30;;;;;;4714:12900:13;5223:25;;1829:6:30;;;;;4714:12900:13;1829:6:30;;;5223:25:13;4714:12900;1829:6:30;;;;4714:12900:13;1829:6:30;;;5223:25:13;1829:6:30;;;;4714:12900:13;;1829:6:30;;;4714:12900:13;1829:6:30;;4714:12900:13;1829:6:30;;5223:25:13;1829:6:30;1587;;;4714:12900:13;;;;1587:6:30;;;4714:12900:13;1587:6:30;;;;4714:12900:13;;1587:6:30;;;4714:12900:13;1587:6:30;;;;;;;4714:12900:13;1587:6:30;;;;;;4714:12900:13;1587:6:30;;;;;;;;;;:::i;1460:151:39:-;;4714:12900:13;;;1558:6:39;;;1554:50;;1460:151::o;1655:6:30:-;;;;;;;;;4714:12900:13;1655:6:30;;;4714:12900:13;;;1655:6:30;;;;4714:12900:13;1829:6:30;;;;;;4714:12900:13;5223:25;;1829:6:30;;;;;4714:12900:13;1829:6:30;;;5223:25:13;4714:12900;1829:6:30;;;;4714:12900:13;1829:6:30;;;5223:25:13;1829:6:30;;;;4714:12900:13;;1829:6:30;;;4714:12900:13;1829:6:30;;4714:12900:13;1829:6:30;;5223:25:13;1829:6:30;1655;1587;;4714:12900:13;;;;1655:6:30;;;4714:12900:13;1587:6:30;;;;4714:12900:13;;1587:6:30;;;4714:12900:13;1587:6:30;;;;;;;4714:12900:13;1587:6:30;;;;;;4714:12900:13;1587:6:30;1655;;;;4714:12900:13;1655:6:30;;;4714:12900:13;1655:6:30;;;;;;;;:::i;10406:1571::-;;;;;;;;4714:12900:13;;;;;10726:10:30;:27;10722:79;;10812:19;4714:12900:13;10845:21:30;;;4714:12900:13;10845:25:30;10841:1130;4714:12900:13;;;;16441:29:30;;10886:518;;10841:1130;;;;;;;;10406:1571::o;10886:518::-;11366:23;4714:12900:13;;;;;11005:311:30;4714:12900:13;;;;11059:151:30;4714:12900:13;11059:151:30;4714:12900:13;10845:21:30;4714:12900:13;11059:151:30;;;;;;;;10726:10;11059:151;;;;:::i;:::-;;;;;;;;;:::i;:::-;4714:12900:13;16441:29:30;;:34;;11005:311;;:::i;:::-;11366:23;;;:::i;:::-;10886:518;;;;;;;;;;10841:1130;11438:47;;;;;;4714:12900:13;16441:29:30;;11434:527;;10841:1130;;;;;;;10406:1571::o;11434:527::-;11923:23;4714:12900:13;;;;;;;11610:154:30;4714:12900:13;11610:154:30;4714:12900:13;;11556:317:30;4714:12900:13;10845:21:30;4714:12900:13;11610:154:30;;;;;;;;10726:10;11610:154;;;;:::i;:::-;4714:12900:13;16441:29:30;;:34;;11556:317;;:::i;10722:79::-;-1:-1:-1;4714:12900:13;;-1:-1:-1;;;;;;10755:46:30:o;5407:1119::-;4714:12900:13;16441:29:30;;:34;;5625:91;;5407:1119;5621:109;;4714:12900:13;16441:29:30;;:34;;5744:89;;5407:1119;5740:107;;4714:12900:13;16441:29:30;;:34;;5861:107;;5407:1119;5857:158;;4714:12900:13;16441:29:30;;:34;;6041:129;;5407:1119;6024:169;;4714:12900:13;;;;;-1:-1:-1;4714:12900:13;;552:8:31;1379:24;6419:19:30;;5407:1119::o;6377:142::-;1247:13;6454:38;:42;;;;:64;;;6377:142;5407:1119;:::o;6454:64::-;552:8:31;4714:12900:13;;;;1379:24:31;5407:1119:30;:::o;6024:169::-;6181:12;;4714:12900:13;6181:12:30;:::o;6041:129::-;6109:61;4714:12900:13;16441:29:30;;:34;;6041:129;;5861:107;5910:58;4714:12900:13;16441:29:30;;:34;;5861:107;;5744:89;5784:49;4714:12900:13;16441:29:30;;:34;;5744:89;;5625:91;5666:50;4714:12900:13;16441:29:30;;:34;;5625:91;;2333:220:31;552:8;4714:12900:13;;;1379:24:31;2467:33;;2510:13;;;:::i;2467:33::-;2492:8;4714:12900:13;2492:8:31;:::o;4351:276:49:-;4714:12900:13;;4998:58:49;4439:24;;4486:21;;4479:28;:::o;4435:186::-;4714:12900:13;4545:65:49;4714:12900:13;;;4545:65:49;;;;4714:12900:13;4545:65:49;;4604:4;4545:65;;;4714:12900:13;4545:65:49;;;;;;;4714:12900:13;4545:65:49;;;4538:72;;:::o;4545:65::-;;;4714:12900:13;4545:65:49;;4714:12900:13;4545:65:49;;;;;;4714:12900:13;4545:65:49;;;:::i;:::-;;;4714:12900:13;;;;;4538:72:49;:::o;4545:65::-;;;-1:-1:-1;4545:65:49;;809:23:48;;;;;;;;;;;;;;;;;;;;;;;;:::o;12064:1980:30:-;12315:22;;;4714:12900:13;;;;;;12064:1980:30;;;12351:10;4714:12900:13;;;12351:27:30;12347:104;;4714:12900:13;16441:29:30;;12462:1576;;12064:1980;;;;;;:::o;12462:1576::-;12540:86;4714:12900:13;809:23:48;12555:70:30;4714:12900:13;809:23:48;4714:12900:13;;;12555:70:30;;;;12315:22;12555:70;;;12351:10;12555:70;;;4714:12900:13;809:23:48;;;;;4714:12900:13;1829:6:30;;;;;;4714:12900:13;5223:25;;1829:6:30;;;;;4714:12900:13;1829:6:30;;;5223:25:13;4714:12900;1829:6:30;;;;4714:12900:13;1829:6:30;;;5223:25:13;1829:6:30;;;;4714:12900:13;;1829:6:30;;;4714:12900:13;1829:6:30;;4714:12900:13;1829:6:30;;5223:25:13;1829:6:30;809:23:48;;;4714:12900:13;;809:23:48;;;4714:12900:13;809:23:48;;;;;;;4714:12900:13;809:23:48;;;4714:12900:13;;809:23:48;;;4714:12900:13;809:23:48;;;;;;;;;;;;:::i;12555:70:30:-;12540:86;;:::i;:::-;4714:12900:13;12761:2:30;4714:12900:13;;12744:19:30;12740:66;;4714:12900:13;13080:7:30;4714:12900:13;;;552:8:31;1379:24;13076:61:30;;12462:1576;4714:12900:13;16441:29:30;13223:805;;12462:1576;;;;;;;13223:805;4714:12900:13;1104:87:35;;;-1:-1:-1;1713:6:30;2052:83:47;;;4714:12900:13;;13682:332:30;;13223:805;13682:332;13789:34;13751:16;4714:12900:13;13751:16:30;;13789:34;;:::i;:::-;13849:48;;;;4714:12900:13;13862:16:30;;13849:48;13845:151;;13682:332;13223:805;;13845:151;13925:35;4714:12900:13;814:96:26;;4714:12900:13;814:96:26;13849:48:30;4714:12900:13;13881:16:30;;13849:48;;13076:61;12761:2;828:82:35;;;;-1:-1:-1;13076:61:30;;12740:66;12765:28;4714:12900:13;814:96:26;;4714:12900:13;814:96:26;12347:104:30;-1:-1:-1;4714:12900:13;;-1:-1:-1;4714:12900:13;;-1:-1:-1;;;;;12380:71:30:o;4714:12900:13:-;;;;;;;;;;;;;;;;;;:::o;14130:1351:30:-;;;;;;;;4714:12900:13;;;14422:10:30;:27;14418:83;;2052::47;;;2241:89;;;14677:35:30;16441:29;4714:12900:13;16441:29:30;;14673:308;;14130:1351;14991:22;;;;;4714:12900:13;;;2241:89:47;4714:12900:13;15027:25:30;;;:52;;;14130:1351;15023:413;;14130:1351;15445:29;;;;14130:1351;:::o;15023:413::-;15404:21;15108:22;;;4714:12900:13;15108:22:30;;;4714:12900:13;15108:26:30;4714:12900:13;;;;15108:47:30;15107:199;;;;553:115:47;;;2052:83;553:115;;15107:199:30;15095:211;15404:21;;:::i;:::-;15023:413;;;;;15107:199;553:115:47;;;;2052:83;553:115;;15107:199:30;;15027:52;4714:12900:13;;2241:89:47;4714:12900:13;15056:23:30;;15027:52;;14673:308;14798:80;14752:218;4714:12900:13;;14752:207:30;4714:12900:13;14728:242:30;4714:12900:13;;;;;;1769:6:30;4714:12900:13;14798:80:30;;;;;;;;14422:10;14798:80;;;4714:12900:13;;;;;;1829:6:30;;;;;;4714:12900:13;5223:25;;1829:6:30;;;;;4714:12900:13;1829:6:30;;;5223:25:13;4714:12900;1829:6:30;;;;4714:12900:13;1829:6:30;;;5223:25:13;1829:6:30;;;;4714:12900:13;;1829:6:30;;;4714:12900:13;1829:6:30;;4714:12900:13;1829:6:30;;5223:25:13;1829:6:30;4714:12900:13;;;;;;;;;;;;;;;;:::i;14798:80:30:-;4714:12900:13;16441:29:30;;:34;;14752:207;;:::i;:218::-;14728:242;;:::i;:::-;14673:308;;;;;;;14418:83;14451:50;;;;;;;;;4714:12900:13;14451:50:30;:::o;6702:1276::-;;;;6823:116;;;-1:-1:-1;6823:116:30;;;;;;;;;;7033:8;7029:102;;7202:504;;;;;;;;;;;;;;;;;;;6823:116;7202:504;;;-1:-1:-1;7202:504:30;;6823:116;4714:12900:13;;7836:18:30;:68;;;;;6702:1276;7832:140;;;;6702:1276::o;7836:68::-;563:85:35;;;4714:12900:13;;;;;;7858:46:30;;;-1:-1:-1;7836:68:30;;;;7029:102;4714:12900:13;;;;;;;;;;;;7029:102:30;3741:1424:26;;4714:12900:13;3741:1424:26;;;;;;4714:12900:13;3741:1424:26;;;3710:21;3741:1424;;4714:12900:13;;3741:1424:26;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3741:1424:26;;;;7107:23:30;3741:1424:26;;;;4714:12900:13;3741:1424:26;;;;;;;;;;4714:12900:13;;;;;;;;;;;;;;;;;2108:1410:43;;;2509:1003;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2108:1410::o;2509:1003::-;;;;;;;;;;;;;;;;;;;;;3149:4018:44;3297:459;;;;;;;;;;1317:6;3774:35;;3770:78;;6424:727;4356:13;;4383:160;;;;;;;4560:13;3297:459;4560:13;;4556:83;;3149:4018;4667:3;4657:13;;4653:83;;3149:4018;4764:3;4754:13;;4750:83;;3149:4018;4861:4;4851:14;;4847:84;;3149:4018;4959:4;4949:14;;4945:84;;3149:4018;5057:4;5047:14;;5043:84;;3149:4018;4383:160;5145:14;;5141:84;;3149:4018;5253:5;5243:15;;5239:85;;3149:4018;5352:5;5342:15;;5338:85;;3149:4018;5451:5;5441:15;;5437:85;;3149:4018;5550:5;5540:15;;5536:85;;3149:4018;5649:6;5639:16;;5635:86;;3149:4018;5749:6;5739:16;;5735:86;;3149:4018;5849:6;5839:16;;5835:86;;3149:4018;5949:6;5939:16;;5935:86;;3149:4018;6049:7;6039:17;;6035:86;;3149:4018;6149:7;6139:17;;6135:85;;3149:4018;6248:7;6238:17;;6234:83;;3149:4018;6345:7;6335:17;6331:78;;3149:4018;-1:-1:-1;;6424:727:44;;3149:4018;6424:727;4959:4;6424:727;3149:4018;:::o;6424:727::-;;;;;6331:78;6376:25;4714:12900:13;;;4383:160:44;4714:12900:13;;6331:78:44;;6234:83;6279:30;4714:12900:13;;;4383:160:44;4714:12900:13;;6234:83:44;;6135:85;4714:12900:13;6180:32:44;4714:12900:13;4383:160:44;4714:12900:13;6135:85:44;;;6035:86;4714:12900:13;6080:33:44;4714:12900:13;4383:160:44;4714:12900:13;6035:86:44;;;5935;4714:12900:13;5979:34:44;4714:12900:13;4383:160:44;4714:12900:13;5935:86:44;;;5835;4714:12900:13;5879:34:44;4714:12900:13;4383:160:44;4714:12900:13;5835:86:44;;;5735;4714:12900:13;5779:34:44;4714:12900:13;4383:160:44;4714:12900:13;5735:86:44;;;5635;4714:12900:13;5679:34:44;4714:12900:13;4383:160:44;4714:12900:13;5635:86:44;;;5536:85;4714:12900:13;5579:34:44;4714:12900:13;4383:160:44;4714:12900:13;5536:85:44;;;5437;4714:12900:13;5480:34:44;4714:12900:13;4383:160:44;4714:12900:13;5437:85:44;;;5338;4714:12900:13;5381:34:44;4714:12900:13;4383:160:44;4714:12900:13;5338:85:44;;;5239;4714:12900:13;5282:34:44;4714:12900:13;4383:160:44;4714:12900:13;5239:85:44;;;5141:84;4714:12900:13;5183:34:44;4714:12900:13;4383:160:44;4714:12900:13;5141:84:44;;;5043;4714:12900:13;5085:34:44;4714:12900:13;4383:160:44;4714:12900:13;5043:84:44;;;4945;4714:12900:13;4987:34:44;4714:12900:13;4383:160:44;4714:12900:13;4945:84:44;;;4847;4714:12900:13;4889:34:44;4714:12900:13;4383:160:44;4714:12900:13;4847:84:44;;;4750:83;4714:12900:13;4791:34:44;4714:12900:13;4383:160:44;4714:12900:13;4750:83:44;;;4653;4714:12900:13;4694:34:44;4714:12900:13;4383:160:44;4714:12900:13;4653:83:44;;;4556;4714:12900:13;4597:34:44;4714:12900:13;4383:160:44;4714:12900:13;4556:83:44;;;3770:78;1431:143:26;3811:20:44;1431:143:26;;;;;;;13649:424:40;;13850:1;4714:12900:13;;;13838:13:40;:218;13850:1;;;13870:73;4714:12900:13;13850:1:40;4714:12900:13;;;13870:73:40;;:::i;:::-;13850:1;1875:5:39;;1871:49;;13649:424:40;:::o;13838:218::-;13974:71;4714:12900:13;;;13974:71:40;;:::i;:::-;13850:1;1875:5:39;;1871:49;;13850:1:40;4714:12900:13;13649:424:40;:::o;12876:::-;;13077:1;4714:12900:13;;;13065:13:40;:218;13077:1;;;13097:73;4714:12900:13;13077:1:40;4714:12900:13;;;13097:73:40;;:::i;13065:218::-;13201:71;4714:12900:13;;;13201:71:40;;:::i;369:370:32:-;;452:281;369:370;452:281;;;;;;;;;;;369:370::o;452:281::-;;;;;;;8118:485:30;;8259:20;8118:485;8259:20;:::i;:::-;8371:12;;8367:26;;8509:2;4714:12900:13;;8492:19:30;8488:66;;8509:2;1104:87:35;;8118:485:30;:::o;1070:396:47:-;1447:15;1070:396;1430:15;1183:220;;;;;;;1430:15;:::i;:::-;1183:220;;;;;;;1447:15;:::i;:::-;553:115;;;1183:220;553:115;;1070:396;:::o;7627:4752:44:-;2282:66;4714:12900:13;1862:10:44;;;4714:12900:13;8182:79:44;8178:168;;4714:12900:13;;8401:2:44;4714:12900:13;;2282:66:44;4714:12900:13;8463:29:44;;;:::i;:::-;4714:12900:13;;8518:3:44;8511:10;;8518:3;;4714:12900:13;;;;;8507:83:44;8660:196;;;;;;4714:12900:13;8660:196:44;;8869;;;8660;8869;;4714:12900:13;8869:196:44;;9078;;;8660;9078;;4714:12900:13;9078:196:44;;9287;;;8660;9287;;4714:12900:13;9287:196:44;;9496;;;8660;9496;;4714:12900:13;9496:196:44;;9705;;;8660;9705;;4714:12900:13;9705:196:44;;9914;;;;8660;9914;;4714:12900:13;9914:196:44;;10123;;;;8660;10123;;4714:12900:13;10123:196:44;;10332;;;;8660;10332;;4714:12900:13;10332:196:44;;10541;;;;8660;10541;;4714:12900:13;10541:196:44;;10750;;;;8660;10750;;4714:12900:13;10750:196:44;;10959;;;;8660;10959;;4714:12900:13;10959:196:44;;11168;;;;;8660;11168;;4714:12900:13;11168:196:44;;11377:165;;;;;;11168:196;;;;;10959;;;;;10750;;;;;10541;;;;;10332;;;;;10123;;;;;9914;;;;;9705;;;;;9496;;;;;9287;;;;;9078;;;;;8869;;;;;8660;;;;;2282:66;;;8643:2;4714:12900:13;8660:196:44;8869;9078;9287;9496;9705;9914;10123;10332;10541;10750;10959;11168;11377:165;11587:24;2282:66;;;;8518:3;2282:66;4714:12900:13;;2282:66:44;12201:39;2282:66;8518:3;2282:66;4714:12900:13;;12271:91:44;:17;;;:91;4714:12900:13;;;12271:91:44;;;7627:4752;:::o;12271:91::-;4714:12900:13;;;12301:26:44;;;:::i;:::-;4714:12900:13;12301:42:44;:61;;;7627:4752;:::o;12301:61::-;;;1829:6:30;:::o;8507:83:44:-;4714:12900:13;;;8580:3:44;4714:12900:13;;8507:83:44;;8178:168;4714:12900:13;1084:176:26;8281:25:44;1084:176:26;;;;;;;;633:9:38;;;;;;;:::o;:::-;;;;;;;;;;11926:9620:36;4714:12900:13;;;11926:9620:36;;4714:12900:13;;;;:::i;:::-;;;;;;;;;;;;;;;;;;12086:24:36;4714:12900:13;;;12183:17:36;4714:12900:13;12183:17:36;;4714:12900:13;;12245:102:36;4714:12900:13;;12245:102:36;4714:12900:13;;;750:5:38;1882:117:52;;;743:12:38;12245:102:36;;4714:12900:13;;12624:27:36;4714:12900:13;1502:93:52;;;;4714:12900:13;;;;1682:98:52;;;;;4714:12900:13;;;12916:14:36;;;4714:12900:13;;;;13146:20:36;;;4714:12900:13;819:8:31;2836:24;;:29;;13146:141:36;819:8:31;;;975;3147:27;3572:12;;;:::i;:::-;4714:12900:13;;;;;13312:70:36;13302:80;4714:12900:13;563:3:42;4714:12900:13;;;13542:32:36;;13538:200;;13312:70;4714:12900:13;;13946:27:36;13942:92;;-1:-1:-1;;4714:12900:13;;;;14079:24:36;;4714:12900:13;1502:93:52;4714:12900:13;;;14079:53:36;;;;14075:190;;-1:-1:-1;;4714:12900:13;1502:93:52;4714:12900:13;1862:10:44;14513:51:36;;;14509:157;;14045:1021;;4714:12900:13;;;2042:49:44;4714:12900:13;;;;;;;;;;;;;;2042:49:44;;4714:12900:13;;2042:49:44;;;4714:12900:13;;2042:49:44;;;4714:12900:13;;2042:49:44;;;4714:12900:13;13146:20:36;2042:49:44;;;4714:12900:13;1682:98:52;2042:49:44;;;4714:12900:13;2042:49:44;;;;4714:12900:13;;15141:66:36;4714:12900:13;;;15154:25:36;;;4714:12900:13;15141:66:36;;;;;2042:49:44;;;4714:12900:13;15334:5244:36;15343:29;;:80;;;;15334:5244;15341:83;;4714:12900:13;;;;;1502:93:52;4714:12900:13;;;;;;15600:11:36;;4714:12900:13;1682:98:52;4714:12900:13;;15613:18:36;;4714:12900:13;1682:98:52;4714:12900:13;15551:93:36;846:396:43;4714:12900:13;846:396:43;;;;;;;4714:12900:13;;4565:1682:43;4714:12900:13;;;;1676:170:43;1032:7:44;4714:12900:13;1676:170:43;1328:919:42;1676:170:43;;15551:15:36;1676:170:43;4714:12900:13;1676:170:43;;4839:13;1676:170;1682:98:52;1676:170:43;;;4714:12900:13;;-1:-1:-1;4714:12900:13;15551:15:36;4714:12900:13;;;-1:-1:-1;4714:12900:13;4748:17:43;4714:12900:13;1676:170:43;4714:12900:13;;;;4839:20:43;5014:11;;;;5164:194;;;;;;5234:34;;1676:170;5234:34;;:::i;:::-;4714:12900:13;;;1682:98:52;4714:12900:13;633:9:38;;1682:98:52;4714:12900:13;;1682:98:52;4714:12900:13;5164:194:43;4565:1682;;4714:12900:13;;2042:49:44;;;4714:12900:13;1682:98:52;4714:12900:13;2042:49:44;4714:12900:13;2042:49:44;;4714:12900:13;15776:34:36;;15772:106;;4565:1682:43;1317:6:44;4714:12900:13;2042:49:44;;4714:12900:13;1682:98:52;4714:12900:13;15895:34:36;;15891:106;;4565:1682:43;1502:93:52;16082:42:36;4714:12900:13;2042:49:44;;4714:12900:13;1682:98:52;4714:12900:13;16082:42:36;:::i;:::-;4714:12900:13;2042:49:44;;;;4714:12900:13;1502:93:52;4714:12900:13;;;16471:24:36;1502:93:52;4714:12900:13;16471:24:36;;4714:12900:13;;;;;;1328:919:42;;;;;;;;;16514:16:36;;4714:12900:13;;16329:282:36;4714:12900:13;1502:93:52;4714:12900:13;;3923:41:42;;;3993:19;4714:12900:13;3993:19:42;;4027:2922;4714:12900:13;;;;;;563:3:42;4714:12900:13;4111:81:42;4714:12900:13;;;;4111:81:42;:::i;:::-;4221:230;;;;;4254:87;;;;;:::i;:::-;4221:230;;4473:34;;;;;4595:37;;1682:98:52;4595:37:42;;;1502:93:52;4595:37:42;4666:256;;;563:3;4714:12900:13;;;4666:24:42;:256;563:3;;;4666:256;;;;4469:969;;5467:228;;;5500:86;;;;:::i;:::-;4027:2922;;2042:49:44;;;4714:12900:13;2042:49:44;4714:12900:13;13146:20:36;2042:49:44;;4714:12900:13;;;;;;;16660:26:36;16656:568;4714:12900:13;;;1682:98:52;2042:49:44;;;1875:5:39;4714:12900:13;1875:5:39;;1871:49;;4714:12900:13;2042:49:44;16848:30:36;13146:20;2042:49:44;;;;;;;16848:30:36;;:::i;:::-;4714:12900:13;1875:5:39;;1871:49;;2042::44;;;;;1328:919:42;2042:49:44;;;16656:568:36;;4714:12900:13;;;17355:951:36;;16656:568;4714:12900:13;;16514:16:36;;4714:12900:13;;18365:20:36;18361:382;;16656:568;4714:12900:13;1502:93:52;4714:12900:13;;;1502:93:52;4714:12900:13;2042:49:44;;4714:12900:13;;19183:44:36;;19179:1389;1502:93:52;;;2042:49:44;4714:12900:13;2042:49:44;;4714:12900:13;19318:835:36;;19179:1389;4714:12900:13;;;633:9:38;4714:12900:13;2042:49:44;;4714:12900:13;1682:98:52;4714:12900:13;633:9:38;1682:98:52;4714:12900:13;20217:46:36;1682:98:52;4714:12900:13;;15600:11:36;;4714:12900:13;19179:1389:36;15334:5244;;;;20217:46;4714:12900:13;2042:49:44;;4714:12900:13;1682:98:52;4714:12900:13;20217:46:36;;19318:835;4714:12900:13;;;;20080:54:36;2042:49:44;;;29464:10:36;2042:49:44;;;;19489:25:36;4714:12900:13;1682:98:52;19489:25:36;;4714:12900:13;19425:170:36;;2042:49:44;4714:12900:13;1682:98:52;4714:12900:13;;;-1:-1:-1;4714:12900:13;29464:10:36;4714:12900:13;;;-1:-1:-1;4714:12900:13;29546:26:36;1328:919:42;29546:26:36;;4714:12900:13;;;;;;;1682:98:52;29638:26:36;;4714:12900:13;;;;;;;;13146:20:36;4714:12900:13;;;;19972:44:36;;19425:170;4714:12900:13;16514:16:36;4714:12900:13;;;20080:54:36;:::i;:::-;4714:12900:13;;16514:16:36;;4714:12900:13;19318:835:36;;19972:44;4714:12900:13;;;;;;;;19972:44:36;;19425:170;4714:12900:13;20080:54:36;19543:25;;;29464:10;1328:919:42;19543:25:36;;4714:12900:13;2042:49:44;4714:12900:13;2042:49:44;;;;19425:170:36;;;19179:1389;1502:93:52;4714:12900:13;;;20306:45:36;;20302:266;;19179:1389;;;;20302:266;20505:48;;;:::i;:::-;1682:98:52;4714:12900:13;;15600:11:36;;4714:12900:13;20302:266:36;;;18361:382;2042:49:44;;;;13146:20:36;1070:86:46;;2042:49:44;;;;258:35:27;2042:49:44;;;4714:12900:13;18361:382:36;;;17355:951;17854:242;4714:12900:13;;;;;;17855:22:36;4714:12900:13;;2042:49:44;;;;17854:242:36;;2042:49:44;;;;;4714:12900:13;2042:49:44;;;4714:12900:13;258:35:27;17355:951:36;;;17854:242;563:3:42;13146:20:36;2042:49:44;;;4714:12900:13;;;2042:49:44;;;;;258:35:27;4714:12900:13;633:9:38;17854:242:36;;;16656:568;13146:20;2042:49:44;;;;;;;258:35:27;1875:5:39;4714:12900:13;1875:5:39;;1871:49;;258:35:27;2042:49:44;1682:98:52;2042:49:44;;;4714:12900:13;1875:5:39;;1871:49;;17164:45:36;;;:::i;:::-;16656:568;;;5467:228:42;5609:86;;;:::i;:::-;5467:228;;4666:256;4714:12900:13;4852:70:42;4714:12900:13;;4852:70:42;;:::i;:::-;4666:256;;4469:969;5021:33;;;;;;;;6731:358:40;;;;;;;;7172:190;1682:98:52;7172:190:40;1502:93:52;7172:190:40;;;;;;7197:74;;;;;:::i;:::-;4714:12900:13;;;;;;4469:969:42;;;7172:190:40;4834:27;;;4714:12900:13;;5042:42:40;5043:28;4884:47;4714:12900:13;;;;295:2:28;4714:12900:13;4884:47:40;:::i;:::-;4714:12900:13;;;5043:28:40;:::i;:::-;5042:42;:::i;:::-;7172:190;;4834:172;5042:42;5043:28;4954:52;4714:12900:13;;;4954:52:40;;:::i;:::-;4834:172;;6731:358;;4714:12900:13;6731:358:40;;;;4221:230:42;4364:87;;;;;:::i;:::-;4221:230;;;4027:2922;5746:232;;-1:-1:-1;5746:232:42;;;;;;5779:88;;;;;:::i;:::-;5746:232;;6000:37;;;;;6126;1502:93:52;6126:37:42;1682:98:52;6126:37:42;5996:516;;;6540:226;;;6573:85;;;;:::i;:::-;6540:226;;6864:70;4714:12900:13;;;563:3:42;4714:12900:13;;;;6529:237:42;6864:70;:::i;:::-;4027:2922;;6540:226;6681:85;;;:::i;:::-;6540:226;;;5996:516;6297:36;;;;;8211:358:40;;;;;;;8646:194;;;;;-1:-1:-1;4714:12900:13;5152:27:40;;4714:12900:13;;;295:2:28;4714:12900:13;;;;558:86:46;;;;;;;;5152:205:40;4714:12900:13;5468:277:40;;;;;;;;;4714:12900:13;;;;1682:98:52;4714:12900:13;;;;;8646:194:40;5996:516:42;;;;5468:277:40;;4714:12900:13;5468:277:40;;;;5152:205;4714:12900:13;;;5315:25:29;;335:27:28;5315:25:29;;:::i;:::-;5358;;;;;335:27:28;5358:25:29;;5354:90;5152:205:40;5354:90:29;4714:12900:13;;5416:12:29;5152:205:40;4714:12900:13;;;;8646:194:40;8764:76;;;;;1502:93:52;8764:76:40;1682:98:52;8764:76:40;;:::i;:::-;8646:194;;5746:232:42;5890:88;;;;;:::i;:::-;5746:232;;;15891:106:36;1317:6:44;4714:12900:13;2042:49:44;;4714:12900:13;15891:106:36;;15772;1032:7:44;4714:12900:13;2042:49:44;;4714:12900:13;15772:106:36;;5164:194:43;4714:12900:13;1682:98:52;4714:12900:13;633:9:38;;1682:98:52;4714:12900:13;;1682:98:52;4714:12900:13;5164:194:43;;4565:1682;1328:919:42;4714:12900:13;;;;;15551:15:36;4714:12900:13;;;;5702:13:43;4714:12900:13;1682:98:52;4714:12900:13;1676:170:43;;4714:12900:13;;;;15551:15:36;4714:12900:13;;;;;;1328:919:42;1676:170:43;4714:12900:13;;;;5647:20:43;4714:12900:13;;5702:20:43;5869:11;;;;;;;;6019:213;;;;;;4714:12900:13;;;;;;1766:834:23;;1328:919:42;1766:834:23;;;;1032:7:44;4714:12900:13;1766:834:23;;;;4714:12900:13;1766:834:23;1676:170:43;1766:834:23;4714:12900:13;1766:834:23;4714:12900:13;1766:834:23;;;;;;;;;;;;;;;;4714:12900:13;1676:170:43;;;1766:834:23;;;;;;;;4714:12900:13;;1682:98:52;4714:12900:13;;1682:98:52;4714:12900:13;;1682:98:52;4714:12900:13;;1682:98:52;4714:12900:13;6019:213:43;4565:1682;;;6019:213;1676:170;;4714:12900:13;1676:170:43;;4714:12900:13;1676:170:43;;1328:919:42;1676:170:43;;1032:7:44;1676:170:43;;;4714:12900:13;1676:170:43;;;;4714:12900:13;;;1682:98:52;4714:12900:13;;1682:98:52;4714:12900:13;;1682:98:52;4714:12900:13;;1682:98:52;4714:12900:13;6019:213:43;;15341:83:36;;;;;;;;;;;;;4714:12900:13;20620:11:36;;4714:12900:13;1682:98:52;2578:157;;;2342:131;1502:93;4714:12900:13;;;2342:131:52;;;;4714:12900:13;;;12916:14:36;;;4714:12900:13;;;;20744:16:36;;4714:12900:13;;20726:34:36;;;20722:73;;15334:5244;-1:-1:-1;4714:12900:13;;;;2042:49:44;1682:98:52;2042:49:44;;;20873:25:36;;4714:12900:13;20842:177:36;4714:12900:13;;;;;21115:26:36;;21100:42;4714:12900:13;;21210:27:36;;21239:62;21210:27;;;:::i;:::-;4714:12900:13;;;21239:62:36;:::i;:::-;4714:12900:13;553:115:47;;13146:20:36;553:115:47;;21096:434:36;11926:9620::o;21096:434::-;21470:27;4714:12900:13;;;21406:62:36;4714:12900:13;;21406:62:36;:::i;:::-;21470:27;;:::i;20842:177::-;2042:49:44;1328:919:42;2042:49:44;;;20956:25:36;;4714:12900:13;20842:177:36;;20722:73;4714:12900:13;;;12916:14:36;;;4714:12900:13;;;12916:14:36;;;4714:12900:13;20722:73:36;;;15343:80;4714:12900:13;1502:93:52;4714:12900:13;;;1502:93:52;4714:12900:13;15399:24:36;;4714:12900:13;;15376:47:36;15343:80;;15141:66;1682:98:52;15182:25:36;;4714:12900:13;15141:66:36;;;;;;14509:157;14584:30;4714:12900:13;1084:176:26;;;;4714:12900:13;1084:176:26;14075:190:36;3008:319:26;;;4714:12900:13;3008:319:26;;14152:34:36;3008:319:26;;;;;;;;;;;14045:1021:36;4714:12900:13;14700:24:36;;4714:12900:13;1502:93:52;4714:12900:13;;;14700:53:36;;;;14696:190;;-1:-1:-1;;4714:12900:13;1502:93:52;4714:12900:13;2042:49:44;14903:51:36;;;14899:157;;14045:1021;;;13942:92;13975:59;;;;;;;;;;;;;;4714:12900:13;13975:59:36;4714:12900:13;13975:59:36;;;:::o;13538:200::-;4714:12900:13;;;13624:26:36;13620:108;13538:200;13620:108;13670:30;4714:12900:13;814:96:26;;4714:12900:13;814:96:26;13312:70:36;4714:12900:13;1864:240:38;;;;;;;;;;;;;13312:70:36;;13146:141;2089:105:52;;;;4714:12900:13;2089:105:52;13146:141:36;;12245:102;4714:12900:13;;;;;12245:102:36;;;741:4141:29;;4714:12900:13;;;1347:147:29;;;;;;;;;;;;;;;;1619:19;;258:35:27;1619:19:29;4714:12900:13;;;1720:10:29;1716:177;;258:35:27;2224:95:29;;2391:145;;;;;;2977:82;4714:12900:13;2391:145:29;;2977:82;;3363:21;741:4141;:::o;1716:177::-;1750:98;;;;;1865:13;:::o;741:4141::-;4714:12900:13;;;1347:147:29;;;;;;;;;;;;;;;;1619:19;;563:3:42;1619:19:29;4714:12900:13;;;1720:10:29;1716:177;;4714:12900:13;2224:95:29;563:3:42;2224:95:29;;2391:145;;;;;;4714:12900:13;;2391:145:29;;2977:82;;3363:21;4714:12900:13;741:4141:29;:::o;1716:177::-;1750:98;;563:3:42;1750:98:29;;;1865:13;:::o;741:4141::-;;4714:12900:13;;;1347:147:29;;;;;;;;;;;;;;;;1619:19;;335:27:28;1619:19:29;4714:12900:13;;;1720:10:29;1716:177;;335:27:28;2224:95:29;;2391:145;;;;;;4714:12900:13;;2391:145:29;;2977:82;;3363:21;741:4141;:::o;1716:177::-;1750:98;;;;;1865:13;:::o;741:4141::-;;4714:12900:13;;;1347:147:29;;335:27:28;1347:147:29;;;;;;;;;;;;;1619:19;;;;4714:12900:13;;;1720:10:29;1716:177;;335:27:28;2224:95:29;;;4714:12900:13;;;;2716:31:29;2811:94;;;3776:1;4714:12900:13;3757:1:29;4714:12900:13;3756:21:29;4714:12900:13;;;3776:1:29;4714:12900:13;;;;;3776:1:29;4714:12900:13;;;;;3776:1:29;4714:12900:13;;;;;3776:1:29;4714:12900:13;;;;;3776:1:29;4714:12900:13;;;;;3776:1:29;4714:12900:13;;3254:96:29;;;;4714:12900:13;3254:96:29;;;2391:145;;;;;;4714:12900:13;2391:145:29;;2977:82;3363:21;4714:12900:13;741:4141:29;:::o;1716:177::-;1750:98;;;;1865:13;:::o;741:4141::-;;4714:12900:13;;;1347:147:29;;;;;;;;;;;;;;;;1619:19;;;;4714:12900:13;;;1720:10:29;1716:177;;2224:95;;;;4714:12900:13;;;;2716:31:29;2811:94;;;3776:1;4714:12900:13;3757:1:29;4714:12900:13;3756:21:29;4714:12900:13;;;3776:1:29;4714:12900:13;;;;;3776:1:29;4714:12900:13;;;;;3776:1:29;4714:12900:13;;;;;3776:1:29;4714:12900:13;;;;;3776:1:29;4714:12900:13;;;;;3776:1:29;4714:12900:13;;3254:96:29;;;;4714:12900:13;3254:96:29;;;2391:145;;;;;;4714:12900:13;2391:145:29;;2977:82;3363:21;4714:12900:13;741:4141:29;:::o;1716:177::-;1750:98;;;;;1865:13;:::o;11589:938:40:-;4714:12900:13;335:27:28;11589:938:40;10595:530;11589:938;14040:4;11589:938;10595:530;;;;;;;;;;;4714:12900:13;;12323:51:40;;;;;:::i;:::-;12384:137;;;;;;11589:938;:::o;:::-;4714:12900:13;11589:938:40;10595:530;11589:938;12323:51;11589:938;;10595:530;;;;;;;;;;;4714:12900:13;;12323:51:40;:::i;9398:1050::-;;4714:12900:13;;;;;;9600:29:40;9596:98;;9398:1050;4714:12900:13;9783:262:40;;;;;;;4714:12900:13;;10262:64:40;10211:220;4714:12900:13;;;1862:10:44;;4714:12900:13;;295:2:28;4714:12900:13;;10262:64:40;:::i;:::-;558:86:46;;;;;;;;;9398:1050:40;:::o;9783:262::-;;;;;;;9596:98;;;;9398:1050;4714:12900:13;;;;;;9600:29:40;9596:98;;9398:1050;4714:12900:13;9783:262:40;;;;;;;10361:70;10211:220;4714:12900:13;;10361:54:40;10211:220;4714:12900:13;;;1862:10:44;;4714:12900:13;;295:2:28;4714:12900:13;;10361:54:40;:::i;:::-;:70;:::i;9596:98::-;9631:63;9596:98;;653:664:23;742:5;;4714:12900:13;;759:552:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;653:664;:::o;5164:296:29:-;;;;5315:25;;;;;:::i;:::-;5358;;;;;;5354:90;;5164:296::o;5354:90::-;4714:12900:13;;;5416:12:29;;;4714:12900:13;;5164:296:29:o;1535:2065:40:-;;;1831:11;;1827:32;;4714:12900:13;;;295:2:28;4714:12900:13;;1946:1648:40;4714:12900:13;;;;;2951:462:40;;;;;;;;;;;;;3497:72;4714:12900:13;3497:60:40;4714:12900:13;;;3497:60:40;;:::i;2951:462::-;;1946:1648;2951:462;;;;1827:32;1844:15;;;:::o;1535:2065::-;;;1831:11;;1827:32;;4714:12900:13;;;;295:2:28;4714:12900:13;;;;;;;2054:16:40;;;;;:::i;:::-;:28;2050:345;;1535:2065;2526:21;;;2525:32;2526:21;;;:::i;:::-;2525:32;:::i;:::-;558:86:46;;;;;;;;4714:12900:13;1535:2065:40;:::o;2050:345::-;258:35:27;;2174:25:40;;;2050:345;2170:207;2293:60;;;;;:::i;:::-;4714:12900:13;2278:76:40;:::o;1827:32::-;1844:15;;;;:::o;460:155:39:-;;4714:12900:13;;;562:6:39;;;558:50;;460:155::o","linkReferences":{},"immutableReferences":{"1586":[{"start":12706,"length":32}]}},"methodIdentifiers":{"allowance(address,address,uint256)":"598af9e7","approve(address,uint256,uint256)":"426a8493","balanceOf(address,uint256)":"00fdd58e","burn(address,uint256,uint256)":"f5298aca","clear(address,uint256)":"80f0b44c","collectProtocolFees(address,address,uint256)":"8161b874","donate((address,address,uint24,int24,address),uint256,uint256,bytes)":"234266d7","extsload(bytes32)":"1e2eaeaf","extsload(bytes32,uint256)":"35fd631a","extsload(bytes32[])":"dbd035ff","exttload(bytes32)":"f135baaa","exttload(bytes32[])":"9bf6645f","initialize((address,address,uint24,int24,address),uint160)":"6276cbbe","isOperator(address,address)":"b6363cf2","mint(address,uint256,uint256)":"156e29f6","modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":"5a6bcfda","owner()":"8da5cb5b","protocolFeeController()":"f02de3b2","protocolFeesAccrued(address)":"97e8cd4e","setOperator(address,bool)":"558a7297","setProtocolFee((address,address,uint24,int24,address),uint24)":"7e87ce7d","setProtocolFeeController(address)":"2d771389","settle()":"11da60b4","settleFor(address)":"3dd45adb","supportsInterface(bytes4)":"01ffc9a7","swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)":"f3cd914c","sync(address)":"a5841194","take(address,address,uint256)":"0b0d9c09","transfer(address,uint256,uint256)":"095bcdb6","transferFrom(address,address,uint256,uint256)":"fe99049a","transferOwnership(address)":"f2fde38b","unlock(bytes)":"48c89491","updateDynamicLPFee((address,address,uint24,int24,address),uint24)":"52759651"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyUnlocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currency1\",\"type\":\"address\"}],\"name\":\"CurrenciesOutOfOrderOrEqual\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CurrencyNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegateCallNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ManagerLocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustClearExactPositiveDelta\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonzeroNativeValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeeCurrencySynced\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"ProtocolFeeTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapAmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"TickSpacingTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"TickSpacingTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorizedDynamicLPFeeUpdate\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Donate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"ModifyLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"OperatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"protocolFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"protocolFee\",\"type\":\"uint24\"}],\"name\":\"ProtocolFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"amount0\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"amount1\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"clear\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"collectProtocolFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCollected\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"donate\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"extsload\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"startSlot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nSlots\",\"type\":\"uint256\"}],\"name\":\"extsload\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"slots\",\"type\":\"bytes32[]\"}],\"name\":\"extsload\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"slots\",\"type\":\"bytes32[]\"}],\"name\":\"exttload\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"exttload\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"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\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOperator\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"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 IPoolManager.ModifyLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"modifyLiquidity\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"callerDelta\",\"type\":\"int256\"},{\"internalType\":\"BalanceDelta\",\"name\":\"feesAccrued\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFeeController\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"protocolFeesAccrued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"uint24\",\"name\":\"newProtocolFee\",\"type\":\"uint24\"}],\"name\":\"setProtocolFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"setProtocolFeeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"settleFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct IPoolManager.SwapParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"swapDelta\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"take\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"unlock\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"uint24\",\"name\":\"newDynamicLPFee\",\"type\":\"uint24\"}],\"name\":\"updateDynamicLPFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Donate(bytes32,address,uint256,uint256)\":{\"params\":{\"amount0\":\"The amount donated in currency0\",\"amount1\":\"The amount donated in currency1\",\"id\":\"The abi encoded hash of the pool key struct for the pool that was donated to\",\"sender\":\"The address that initiated the donate call\"}},\"Initialize(bytes32,address,address,uint24,int24,address,uint160,int24)\":{\"params\":{\"currency0\":\"The first currency of the pool by address sort order\",\"currency1\":\"The second currency of the pool by address sort order\",\"fee\":\"The fee collected upon every swap in the pool, denominated in hundredths of a bip\",\"hooks\":\"The hooks contract address for the pool, or address(0) if none\",\"id\":\"The abi encoded hash of the pool key struct for the new pool\",\"sqrtPriceX96\":\"The price of the pool on initialization\",\"tick\":\"The initial tick of the pool corresponding to the initialized price\",\"tickSpacing\":\"The minimum number of ticks between initialized ticks\"}},\"ModifyLiquidity(bytes32,address,int24,int24,int256,bytes32)\":{\"params\":{\"id\":\"The abi encoded hash of the pool key struct for the pool that was modified\",\"liquidityDelta\":\"The amount of liquidity that was added or removed\",\"salt\":\"The extra data to make positions unique\",\"sender\":\"The address that modified the pool\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"Swap(bytes32,address,int128,int128,uint160,uint128,int24,uint24)\":{\"params\":{\"amount0\":\"The delta of the currency0 balance of the pool\",\"amount1\":\"The delta of the currency1 balance of the pool\",\"fee\":\"The swap fee in hundredths of a bip\",\"id\":\"The abi encoded hash of the pool key struct for the pool that was modified\",\"liquidity\":\"The liquidity of the pool after the swap\",\"sender\":\"The address that initiated the swap call, and that received the callback\",\"sqrtPriceX96\":\"The sqrt(price) of the pool after the swap, as a Q64.96\",\"tick\":\"The log base 1.0001 of the price of the pool after the swap\"}}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of the token.\",\"id\":\"The id of the token.\",\"spender\":\"The address of the spender.\"},\"returns\":{\"_0\":\"bool True, always\"}},\"burn(address,uint256,uint256)\":{\"details\":\"The id is converted to a uint160 to correspond to a currency address If the upper 12 bytes are not 0, they will be 0-ed out\",\"params\":{\"amount\":\"The amount of currency to burn\",\"from\":\"The address to burn the tokens from\",\"id\":\"The currency address to burn from ERC6909s, as a uint256\"}},\"clear(address,uint256)\":{\"details\":\"This could be used to clear a balance that is considered dust. Additionally, the amount must be the exact positive balance. This is to enforce that the caller is aware of the amount being cleared.\"},\"collectProtocolFees(address,address,uint256)\":{\"details\":\"This will revert if the contract is unlocked\",\"params\":{\"amount\":\"The amount of currency to withdraw\",\"currency\":\"The currency to withdraw\",\"recipient\":\"The address to receive the protocol fees\"},\"returns\":{\"amountCollected\":\"The amount of currency successfully withdrawn\"}},\"donate((address,address,uint24,int24,address),uint256,uint256,bytes)\":{\"details\":\"Calls to donate can be frontrun adding just-in-time liquidity, with the aim of receiving a portion donated funds. Donors should keep this in mind when designing donation mechanisms.This function donates to in-range LPs at slot0.tick. In certain edge-cases of the swap algorithm, the `sqrtPrice` of a pool can be at the lower boundary of tick `n`, but the `slot0.tick` of the pool is already `n - 1`. In this case a call to `donate` would donate to tick `n - 1` (slot0.tick) not tick `n` (getTickAtSqrtPrice(slot0.sqrtPriceX96)). Read the comments in `Pool.swap()` for more information about this.\",\"params\":{\"amount0\":\"The amount of currency0 to donate\",\"amount1\":\"The amount of currency1 to donate\",\"hookData\":\"The data to pass through to the donate hooks\",\"key\":\"The key of the pool to donate to\"},\"returns\":{\"delta\":\"BalanceDelta The delta of the caller after the donate\"}},\"extsload(bytes32)\":{\"params\":{\"slot\":\"Key of slot to sload\"},\"returns\":{\"_0\":\"The value of the slot as bytes32\"}},\"extsload(bytes32,uint256)\":{\"params\":{\"nSlots\":\"Number of slots to load into return value\",\"startSlot\":\"Key of slot to start sloading from\"},\"returns\":{\"_0\":\"List of loaded values.\"}},\"extsload(bytes32[])\":{\"params\":{\"slots\":\"List of slots to SLOAD from.\"},\"returns\":{\"_0\":\"List of loaded values.\"}},\"exttload(bytes32)\":{\"params\":{\"slot\":\"Key of slot to tload\"},\"returns\":{\"_0\":\"The value of the slot as bytes32\"}},\"exttload(bytes32[])\":{\"params\":{\"slots\":\"List of slots to tload\"},\"returns\":{\"_0\":\"List of loaded values\"}},\"initialize((address,address,uint24,int24,address),uint160)\":{\"details\":\"A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee\",\"params\":{\"key\":\"The pool key for the pool to initialize\",\"sqrtPriceX96\":\"The initial square root price\"},\"returns\":{\"tick\":\"The initial tick of the pool\"}},\"mint(address,uint256,uint256)\":{\"details\":\"The id is converted to a uint160 to correspond to a currency address If the upper 12 bytes are not 0, they will be 0-ed out\",\"params\":{\"amount\":\"The amount of currency to mint\",\"id\":\"The currency address to mint to ERC6909s, as a uint256\",\"to\":\"The address to mint the tokens to\"}},\"modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)\":{\"details\":\"Poke by calling with a zero liquidityDelta\",\"params\":{\"hookData\":\"The data to pass through to the add/removeLiquidity hooks\",\"key\":\"The pool to modify liquidity in\",\"params\":\"The parameters for modifying the liquidity\"},\"returns\":{\"callerDelta\":\"The balance delta of the caller of modifyLiquidity. This is the total of both principal, fee deltas, and hook deltas if applicable\",\"feesAccrued\":\"The balance delta of the fees generated in the liquidity range. Returned for informational purposes\"}},\"setOperator(address,bool)\":{\"params\":{\"approved\":\"The approval status.\",\"operator\":\"The address of the operator.\"},\"returns\":{\"_0\":\"bool True, always\"}},\"setProtocolFee((address,address,uint24,int24,address),uint24)\":{\"params\":{\"key\":\"The key of the pool to set a protocol fee for\",\"newProtocolFee\":\"The fee to set\"}},\"setProtocolFeeController(address)\":{\"params\":{\"controller\":\"The new protocol fee controller\"}},\"settle()\":{\"returns\":{\"_0\":\"The amount of currency settled\"}},\"settleFor(address)\":{\"params\":{\"recipient\":\"The address to credit for the payment\"},\"returns\":{\"_0\":\"The amount of currency settled\"}},\"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)\":{\"details\":\"Swapping on low liquidity pools may cause unexpected swap amounts when liquidity available is less than amountSpecified. Additionally note that if interacting with hooks that have the BEFORE_SWAP_RETURNS_DELTA_FLAG or AFTER_SWAP_RETURNS_DELTA_FLAG the hook may alter the swap input/output. Integrators should perform checks on the returned swapDelta.\",\"params\":{\"hookData\":\"The data to pass through to the swap hooks\",\"key\":\"The pool to swap in\",\"params\":\"The parameters for swapping\"},\"returns\":{\"swapDelta\":\"The balance delta of the address swapping\"}},\"sync(address)\":{\"details\":\"This MUST be called before any ERC20 tokens are sent into the contract, but can be skipped for native tokens because the amount to settle is determined by the sent value. However, if an ERC20 token has been synced and not settled, and the caller instead wants to settle native funds, this function can be called with the native currency to then be able to settle the native currency\"},\"take(address,address,uint256)\":{\"details\":\"Will revert if the requested amount is not available, consider using `mint` insteadCan also be used as a mechanism for free flash loans\",\"params\":{\"amount\":\"The amount of currency to withdraw\",\"currency\":\"The currency to withdraw from the pool manager\",\"to\":\"The address to withdraw to\"}},\"transfer(address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of the token.\",\"id\":\"The id of the token.\",\"receiver\":\"The address of the receiver.\"},\"returns\":{\"_0\":\"bool True, always, unless the function reverts\"}},\"transferFrom(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of the token.\",\"id\":\"The id of the token.\",\"receiver\":\"The address of the receiver.\",\"sender\":\"The address of the sender.\"},\"returns\":{\"_0\":\"bool True, always, unless the function reverts\"}},\"unlock(bytes)\":{\"details\":\"The only functions callable without an unlocking are `initialize` and `updateDynamicLPFee`\",\"params\":{\"data\":\"Any data to pass to the callback, via `IUnlockCallback(msg.sender).unlockCallback(data)`\"},\"returns\":{\"result\":\"The data returned by the call to `IUnlockCallback(msg.sender).unlockCallback(data)`\"}},\"updateDynamicLPFee((address,address,uint24,int24,address),uint24)\":{\"details\":\"A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee\",\"params\":{\"key\":\"The key of the pool to update dynamic LP fees for\",\"newDynamicLPFee\":\"The new dynamic pool LP fee\"}}},\"title\":\"PoolManager\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyUnlocked()\":[{\"notice\":\"Thrown when unlock is called, but the contract is already unlocked\"}],\"CurrenciesOutOfOrderOrEqual(address,address)\":[{\"notice\":\"PoolKey must have currencies where address(currency0) < address(currency1)\"}],\"CurrencyNotSettled()\":[{\"notice\":\"Thrown when a currency is not netted out after the contract is unlocked\"}],\"InvalidCaller()\":[{\"notice\":\"Thrown when collectProtocolFees or setProtocolFee is not called by the controller.\"}],\"ManagerLocked()\":[{\"notice\":\"Thrown when a function is called that requires the contract to be unlocked, but it is not\"}],\"MustClearExactPositiveDelta()\":[{\"notice\":\"Thrown when `clear` is called with an amount that is not exactly equal to the open currency delta.\"}],\"NonzeroNativeValue()\":[{\"notice\":\"Thrown when native currency is passed to a non native settlement\"}],\"PoolNotInitialized()\":[{\"notice\":\"Thrown when trying to interact with a non-initialized pool\"}],\"ProtocolFeeCurrencySynced()\":[{\"notice\":\"Thrown when collectProtocolFees is attempted on a token that is synced.\"}],\"ProtocolFeeTooLarge(uint24)\":[{\"notice\":\"Thrown when protocol fee is set too high\"}],\"SwapAmountCannotBeZero()\":[{\"notice\":\"Thrown when trying to swap amount of 0\"}],\"TickSpacingTooLarge(int24)\":[{\"notice\":\"Pools are limited to type(int16).max tickSpacing in #initialize, to prevent overflow\"}],\"TickSpacingTooSmall(int24)\":[{\"notice\":\"Pools must have a positive non-zero tickSpacing passed to #initialize\"}],\"UnauthorizedDynamicLPFeeUpdate()\":[{\"notice\":\"Thrown when a call to updateDynamicLPFee is made by an address that is not the hook, or on a pool that does not have a dynamic swap fee.\"}]},\"events\":{\"Donate(bytes32,address,uint256,uint256)\":{\"notice\":\"Emitted for donations\"},\"Initialize(bytes32,address,address,uint24,int24,address,uint160,int24)\":{\"notice\":\"Emitted when a new pool is initialized\"},\"ModifyLiquidity(bytes32,address,int24,int24,int256,bytes32)\":{\"notice\":\"Emitted when a liquidity position is modified\"},\"ProtocolFeeControllerUpdated(address)\":{\"notice\":\"Emitted when the protocol fee controller address is updated in setProtocolFeeController.\"},\"ProtocolFeeUpdated(bytes32,uint24)\":{\"notice\":\"Emitted when the protocol fee is updated for a pool.\"},\"Swap(bytes32,address,int128,int128,uint160,uint128,int24,uint24)\":{\"notice\":\"Emitted for swaps between currency0 and currency1\"}},\"kind\":\"user\",\"methods\":{\"allowance(address,address,uint256)\":{\"notice\":\"Spender allowance of an id.\"},\"approve(address,uint256,uint256)\":{\"notice\":\"Approves an amount of an id to a spender.\"},\"balanceOf(address,uint256)\":{\"notice\":\"Owner balance of an id.\"},\"burn(address,uint256,uint256)\":{\"notice\":\"Called by the user to move value from ERC6909 balance\"},\"clear(address,uint256)\":{\"notice\":\"WARNING - Any currency that is cleared, will be non-retrievable, and locked in the contract permanently. A call to clear will zero out a positive balance WITHOUT a corresponding transfer.\"},\"collectProtocolFees(address,address,uint256)\":{\"notice\":\"Collects the protocol fees for a given recipient and currency, returning the amount collected\"},\"donate((address,address,uint24,int24,address),uint256,uint256,bytes)\":{\"notice\":\"Donate the given currency amounts to the in-range liquidity providers of a pool\"},\"extsload(bytes32)\":{\"notice\":\"Called by external contracts to access granular pool state\"},\"extsload(bytes32,uint256)\":{\"notice\":\"Called by external contracts to access granular pool state\"},\"extsload(bytes32[])\":{\"notice\":\"Called by external contracts to access sparse pool state\"},\"exttload(bytes32)\":{\"notice\":\"Called by external contracts to access transient storage of the contract\"},\"exttload(bytes32[])\":{\"notice\":\"Called by external contracts to access sparse transient pool state\"},\"initialize((address,address,uint24,int24,address),uint160)\":{\"notice\":\"Initialize the state for a given pool ID\"},\"isOperator(address,address)\":{\"notice\":\"Checks if a spender is approved by an owner as an operator\"},\"mint(address,uint256,uint256)\":{\"notice\":\"Called by the user to move value into ERC6909 balance\"},\"modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)\":{\"notice\":\"Modify the liquidity for the given pool\"},\"protocolFeeController()\":{\"notice\":\"Returns the current protocol fee controller address\"},\"protocolFeesAccrued(address)\":{\"notice\":\"Given a currency address, returns the protocol fees accrued in that currency\"},\"setOperator(address,bool)\":{\"notice\":\"Sets or removes an operator for the caller.\"},\"setProtocolFee((address,address,uint24,int24,address),uint24)\":{\"notice\":\"Sets the protocol fee for the given pool\"},\"setProtocolFeeController(address)\":{\"notice\":\"Sets the protocol fee controller\"},\"settle()\":{\"notice\":\"Called by the user to pay what is owed\"},\"settleFor(address)\":{\"notice\":\"Called by the user to pay on behalf of another address\"},\"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)\":{\"notice\":\"Swap against the given pool\"},\"sync(address)\":{\"notice\":\"Writes the current ERC20 balance of the specified currency to transient storage This is used to checkpoint balances for the manager and derive deltas for the caller.\"},\"take(address,address,uint256)\":{\"notice\":\"Called by the user to net out some value owed to the user\"},\"transfer(address,uint256,uint256)\":{\"notice\":\"Transfers an amount of an id from the caller to a receiver.\"},\"transferFrom(address,address,uint256,uint256)\":{\"notice\":\"Transfers an amount of an id from a sender to a receiver.\"},\"unlock(bytes)\":{\"notice\":\"All interactions on the contract that account deltas require unlocking. A caller that calls `unlock` must implement `IUnlockCallback(msg.sender).unlockCallback(data)`, where they interact with the remaining functions on this contract.\"},\"updateDynamicLPFee((address,address,uint24,int24,address),uint24)\":{\"notice\":\"Updates the pools lp fees for the a pool that has enabled dynamic lp fees.\"}},\"notice\":\"Holds the state for all pools\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/v4-periphery/lib/v4-core/src/PoolManager.sol\":\"PoolManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":30000},\"remappings\":[\":@ensdomains/=lib/v4-periphery/lib/v4-core/node_modules/@ensdomains/\",\":@openzeppelin/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/\",\":@openzeppelin/contracts/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/contracts/\",\":@uniswap/v2-core/=node_modules/@uniswap/v2-core/\",\":@uniswap/v3-core/=node_modules/@uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":@uniswap/v4-core/=lib/v4-periphery/lib/v4-core/\",\":@uniswap/v4-periphery/=lib/v4-periphery/\",\":ds-test/=lib/solmate/lib/ds-test/src/\",\":erc4626-tests/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=lib/v4-periphery/lib/v4-core/node_modules/hardhat/\",\":openzeppelin-contracts/=lib/permit2/lib/openzeppelin-contracts/\",\":permit2/=lib/permit2/\",\":solmate/=lib/solmate/\",\":v3-periphery/=lib/v3-periphery/contracts/\",\":v4-core/=lib/v4-periphery/lib/v4-core/src/\",\":v4-periphery/=lib/v4-periphery/\"],\"viaIR\":true},\"sources\":{\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/v4-periphery/lib/v4-core/src/ERC6909.sol\":{\"keccak256\":\"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6\",\"dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q\"]},\"lib/v4-periphery/lib/v4-core/src/ERC6909Claims.sol\":{\"keccak256\":\"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c\",\"dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i\"]},\"lib/v4-periphery/lib/v4-core/src/Extsload.sol\":{\"keccak256\":\"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51\",\"dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU\"]},\"lib/v4-periphery/lib/v4-core/src/Exttload.sol\":{\"keccak256\":\"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c\",\"dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG\"]},\"lib/v4-periphery/lib/v4-core/src/NoDelegateCall.sol\":{\"keccak256\":\"0xacb81aecb7c74c86650a035462dae38c313b4b7b5842e14b645f864f61da2b51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://363a0e15fc30ea68a5d52a78772facecde6433ea156e3ec2ce25068c97cd5ad6\",\"dweb:/ipfs/QmYhWaF3wH71SDx5TZr9qEXXQf5FYQvdjoo3B2qWiAbm18\"]},\"lib/v4-periphery/lib/v4-core/src/PoolManager.sol\":{\"keccak256\":\"0xaa234912d8bc3a54c80f3973b34823cfac88d01fe9481765b7a5925dccbc9b79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6faf4019cd6cfcaa434631e2f9709389abd8ab339d51096f404f260cc255b5e1\",\"dweb:/ipfs/QmZ8aLGm3b2L4UuzrerGmpyB2f32cUcNUL6qvzNBqop45k\"]},\"lib/v4-periphery/lib/v4-core/src/ProtocolFees.sol\":{\"keccak256\":\"0x81362ef1d19670b41cefc2b6f2dc0333b6743fe39a1929edd36bd9b6a1111755\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de483bbd8bf9a53b9644d7f9a6a6fe77ae527b755cf29e1db8725de89e70c7aa\",\"dweb:/ipfs/Qmex3PcgJGbYsuDNaMXc8mg5fW1DNaPGiNToPpAAzz6GEq\"]},\"lib/v4-periphery/lib/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"lib/v4-periphery/lib/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"lib/v4-periphery/lib/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0x4c9571aed0c2b6ef11832545554fc11ffdb03746daaf5c73683c00600bfc7ec0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e78b34b58ce9de91b91943b4f3cc3ce121d0b151e123e8a600ac5ef64d91db6c\",\"dweb:/ipfs/QmRkaQnPCYwLrXgbpGujJTx32PaZK63KSPJJV1XmnQuCMb\"]},\"lib/v4-periphery/lib/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xb29607eefac17cb3b0a6f7ca1225a4f5a4baf4873fd1689c770e1fa0b3465399\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d1c9d83b6910d2cbd8b711438072b57f7feffcc18321330c0d83e73159c9c828\",\"dweb:/ipfs/QmZfkdqayzYHAiGXrXLXYNaiS6JXSQmKyJLDQHvaXYi5Y2\"]},\"lib/v4-periphery/lib/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"]},\"lib/v4-periphery/lib/v4-core/src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"lib/v4-periphery/lib/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"lib/v4-periphery/lib/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/BitMath.sol\":{\"keccak256\":\"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e\",\"dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/CurrencyDelta.sol\":{\"keccak256\":\"0x80dbd898cf0f90c5c27192689b16c34edc765d6ab21b8358e3bb792c7fef238c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://107698da024313f132d9fe28deb920b5c03d14624889c3ce5720e588f03635bb\",\"dweb:/ipfs/QmQteUbhj5SsWbvSF6U8niBUSrETqVbEwULc8E7vS4Kbnn\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725\",\"dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb\",\"dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4\",\"dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/Hooks.sol\":{\"keccak256\":\"0x27b1c3b8aa3d07d8e3123970695745929315685a5ffaa7342c3ba3582f37fecb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa3bb092dc205eaa1b9defc93e9bbad5f4c5c44e1c4aa531dfca2574c2aba9ba\",\"dweb:/ipfs/QmR1soxkepHNkbGxAMaK4XqhQ4VxWn69dewzGkQJNx5byM\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475\",\"dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99\",\"dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/NonzeroDeltaCount.sol\":{\"keccak256\":\"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59\",\"dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/ParseBytes.sol\":{\"keccak256\":\"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17\",\"dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/Pool.sol\":{\"keccak256\":\"0x53cd1b8791274c3599ed62fb8d2eb428bfad6cefa2002b5e684250b89e681371\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://469124e41971bbd78107099961aaef5c6cb8035d236647f9e6ce2b0d9e1318cf\",\"dweb:/ipfs/QmWjfugsTJa8jB15dm6acpixXLgDoEMa1me9tMeEXxsazU\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/Position.sol\":{\"keccak256\":\"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2\",\"dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/ProtocolFeeLibrary.sol\":{\"keccak256\":\"0xf483001899229ab10f5a626fe1c5866134d9e965b48ce6cf55ce0d7f74f7d8ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ba9211a7f69bbb44649c35211eb29d193c09032ec600064ef9d04b4625dd8ba\",\"dweb:/ipfs/QmQSjQvtguYgMJSkkKRhHjxasfX9xfTbrbcZ1QmjUVb787\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0xf8079fe6e3460db495451d06b1705e18f1c4075c1af96a31ad313545f7082982\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://582fc51546723a0a8acccf782f69b530bacf9b3ef929458e82569b7121f0b138\",\"dweb:/ipfs/QmSBXcmqZdFsM7M4sRaiyQAxykCeMNFKyKgBcwSMTw1bcF\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/SwapMath.sol\":{\"keccak256\":\"0x6baa782ae523269c079cc763639a9b91a25fcfa1743c049c76e43741ef494bd9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://035c337e62e05262a5bd5d3bc85bc9a383c1013001216b429f49cf1e129a0812\",\"dweb:/ipfs/QmU7s4h58Fh2A6mM8yeorZ2ygwEJMQw8zdZLLkHeDoSWxD\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/TickBitmap.sol\":{\"keccak256\":\"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d\",\"dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/TickMath.sol\":{\"keccak256\":\"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70\",\"dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva\"]},\"lib/v4-periphery/lib/v4-core/src/libraries/UnsafeMath.sol\":{\"keccak256\":\"0xa6e55e0a43a15df2df471d9972cd48f613d07c663ecb8bbeaf7623f6f99bcce4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02ea6e13879fc5a5f35149a2f1cd8af3a1f0877ff69101dad53841d16f515572\",\"dweb:/ipfs/QmcpL4gdG6hL2w1wqs2Vw4J1EFCwBs9T1Qd4p16CtECQkn\"]},\"lib/v4-periphery/lib/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"lib/v4-periphery/lib/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"lib/v4-periphery/lib/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"]},\"lib/v4-periphery/lib/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"]},\"lib/v4-periphery/lib/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"]},\"lib/v4-periphery/lib/v4-core/src/types/Slot0.sol\":{\"keccak256\":\"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8\",\"dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyUnlocked"},{"inputs":[{"internalType":"address","name":"currency0","type":"address"},{"internalType":"address","name":"currency1","type":"address"}],"type":"error","name":"CurrenciesOutOfOrderOrEqual"},{"inputs":[],"type":"error","name":"CurrencyNotSettled"},{"inputs":[],"type":"error","name":"DelegateCallNotAllowed"},{"inputs":[],"type":"error","name":"InvalidCaller"},{"inputs":[],"type":"error","name":"ManagerLocked"},{"inputs":[],"type":"error","name":"MustClearExactPositiveDelta"},{"inputs":[],"type":"error","name":"NonzeroNativeValue"},{"inputs":[],"type":"error","name":"PoolNotInitialized"},{"inputs":[],"type":"error","name":"ProtocolFeeCurrencySynced"},{"inputs":[{"internalType":"uint24","name":"fee","type":"uint24"}],"type":"error","name":"ProtocolFeeTooLarge"},{"inputs":[],"type":"error","name":"SwapAmountCannotBeZero"},{"inputs":[{"internalType":"int24","name":"tickSpacing","type":"int24"}],"type":"error","name":"TickSpacingTooLarge"},{"inputs":[{"internalType":"int24","name":"tickSpacing","type":"int24"}],"type":"error","name":"TickSpacingTooSmall"},{"inputs":[],"type":"error","name":"UnauthorizedDynamicLPFeeUpdate"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount0","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1","type":"uint256","indexed":false}],"type":"event","name":"Donate","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"Currency","name":"currency0","type":"address","indexed":true},{"internalType":"Currency","name":"currency1","type":"address","indexed":true},{"internalType":"uint24","name":"fee","type":"uint24","indexed":false},{"internalType":"int24","name":"tickSpacing","type":"int24","indexed":false},{"internalType":"contract IHooks","name":"hooks","type":"address","indexed":false},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false}],"type":"event","name":"Initialize","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"int24","name":"tickLower","type":"int24","indexed":false},{"internalType":"int24","name":"tickUpper","type":"int24","indexed":false},{"internalType":"int256","name":"liquidityDelta","type":"int256","indexed":false},{"internalType":"bytes32","name":"salt","type":"bytes32","indexed":false}],"type":"event","name":"ModifyLiquidity","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"OperatorSet","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"protocolFeeController","type":"address","indexed":true}],"type":"event","name":"ProtocolFeeControllerUpdated","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"uint24","name":"protocolFee","type":"uint24","indexed":false}],"type":"event","name":"ProtocolFeeUpdated","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"int128","name":"amount0","type":"int128","indexed":false},{"internalType":"int128","name":"amount1","type":"int128","indexed":false},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160","indexed":false},{"internalType":"uint128","name":"liquidity","type":"uint128","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false},{"internalType":"uint24","name":"fee","type":"uint24","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"clear"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"Currency","name":"currency","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"collectProtocolFees","outputs":[{"internalType":"uint256","name":"amountCollected","type":"uint256"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","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":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"donate","outputs":[{"internalType":"BalanceDelta","name":"delta","type":"int256"}]},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"extsload","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"startSlot","type":"bytes32"},{"internalType":"uint256","name":"nSlots","type":"uint256"}],"stateMutability":"view","type":"function","name":"extsload","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"slots","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"extsload","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"slots","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"exttload","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"exttload","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","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":"uint160","name":"sqrtPriceX96","type":"uint160"}],"stateMutability":"nonpayable","type":"function","name":"initialize","outputs":[{"internalType":"int24","name":"tick","type":"int24"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"isOperator","type":"bool"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","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 IPoolManager.ModifyLiquidityParams","name":"params","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":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"modifyLiquidity","outputs":[{"internalType":"BalanceDelta","name":"callerDelta","type":"int256"},{"internalType":"BalanceDelta","name":"feesAccrued","type":"int256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeeController","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"}],"stateMutability":"view","type":"function","name":"protocolFeesAccrued","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","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":"uint24","name":"newProtocolFee","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFee"},{"inputs":[{"internalType":"address","name":"controller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFeeController"},{"inputs":[],"stateMutability":"payable","type":"function","name":"settle","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"stateMutability":"payable","type":"function","name":"settleFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","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 IPoolManager.SwapParams","name":"params","type":"tuple","components":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}]},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"BalanceDelta","name":"swapDelta","type":"int256"}]},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"sync"},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"take"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"unlock","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","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":"uint24","name":"newDynamicLPFee","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"updateDynamicLPFee"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256,uint256)":{"params":{"amount":"The amount of the token.","id":"The id of the token.","spender":"The address of the spender."},"returns":{"_0":"bool True, always"}},"burn(address,uint256,uint256)":{"details":"The id is converted to a uint160 to correspond to a currency address If the upper 12 bytes are not 0, they will be 0-ed out","params":{"amount":"The amount of currency to burn","from":"The address to burn the tokens from","id":"The currency address to burn from ERC6909s, as a uint256"}},"clear(address,uint256)":{"details":"This could be used to clear a balance that is considered dust. Additionally, the amount must be the exact positive balance. This is to enforce that the caller is aware of the amount being cleared."},"collectProtocolFees(address,address,uint256)":{"details":"This will revert if the contract is unlocked","params":{"amount":"The amount of currency to withdraw","currency":"The currency to withdraw","recipient":"The address to receive the protocol fees"},"returns":{"amountCollected":"The amount of currency successfully withdrawn"}},"donate((address,address,uint24,int24,address),uint256,uint256,bytes)":{"details":"Calls to donate can be frontrun adding just-in-time liquidity, with the aim of receiving a portion donated funds. Donors should keep this in mind when designing donation mechanisms.This function donates to in-range LPs at slot0.tick. In certain edge-cases of the swap algorithm, the `sqrtPrice` of a pool can be at the lower boundary of tick `n`, but the `slot0.tick` of the pool is already `n - 1`. In this case a call to `donate` would donate to tick `n - 1` (slot0.tick) not tick `n` (getTickAtSqrtPrice(slot0.sqrtPriceX96)). Read the comments in `Pool.swap()` for more information about this.","params":{"amount0":"The amount of currency0 to donate","amount1":"The amount of currency1 to donate","hookData":"The data to pass through to the donate hooks","key":"The key of the pool to donate to"},"returns":{"delta":"BalanceDelta The delta of the caller after the donate"}},"extsload(bytes32)":{"params":{"slot":"Key of slot to sload"},"returns":{"_0":"The value of the slot as bytes32"}},"extsload(bytes32,uint256)":{"params":{"nSlots":"Number of slots to load into return value","startSlot":"Key of slot to start sloading from"},"returns":{"_0":"List of loaded values."}},"extsload(bytes32[])":{"params":{"slots":"List of slots to SLOAD from."},"returns":{"_0":"List of loaded values."}},"exttload(bytes32)":{"params":{"slot":"Key of slot to tload"},"returns":{"_0":"The value of the slot as bytes32"}},"exttload(bytes32[])":{"params":{"slots":"List of slots to tload"},"returns":{"_0":"List of loaded values"}},"initialize((address,address,uint24,int24,address),uint160)":{"details":"A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee","params":{"key":"The pool key for the pool to initialize","sqrtPriceX96":"The initial square root price"},"returns":{"tick":"The initial tick of the pool"}},"mint(address,uint256,uint256)":{"details":"The id is converted to a uint160 to correspond to a currency address If the upper 12 bytes are not 0, they will be 0-ed out","params":{"amount":"The amount of currency to mint","id":"The currency address to mint to ERC6909s, as a uint256","to":"The address to mint the tokens to"}},"modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":{"details":"Poke by calling with a zero liquidityDelta","params":{"hookData":"The data to pass through to the add/removeLiquidity hooks","key":"The pool to modify liquidity in","params":"The parameters for modifying the liquidity"},"returns":{"callerDelta":"The balance delta of the caller of modifyLiquidity. This is the total of both principal, fee deltas, and hook deltas if applicable","feesAccrued":"The balance delta of the fees generated in the liquidity range. Returned for informational purposes"}},"setOperator(address,bool)":{"params":{"approved":"The approval status.","operator":"The address of the operator."},"returns":{"_0":"bool True, always"}},"setProtocolFee((address,address,uint24,int24,address),uint24)":{"params":{"key":"The key of the pool to set a protocol fee for","newProtocolFee":"The fee to set"}},"setProtocolFeeController(address)":{"params":{"controller":"The new protocol fee controller"}},"settle()":{"returns":{"_0":"The amount of currency settled"}},"settleFor(address)":{"params":{"recipient":"The address to credit for the payment"},"returns":{"_0":"The amount of currency settled"}},"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)":{"details":"Swapping on low liquidity pools may cause unexpected swap amounts when liquidity available is less than amountSpecified. Additionally note that if interacting with hooks that have the BEFORE_SWAP_RETURNS_DELTA_FLAG or AFTER_SWAP_RETURNS_DELTA_FLAG the hook may alter the swap input/output. Integrators should perform checks on the returned swapDelta.","params":{"hookData":"The data to pass through to the swap hooks","key":"The pool to swap in","params":"The parameters for swapping"},"returns":{"swapDelta":"The balance delta of the address swapping"}},"sync(address)":{"details":"This MUST be called before any ERC20 tokens are sent into the contract, but can be skipped for native tokens because the amount to settle is determined by the sent value. However, if an ERC20 token has been synced and not settled, and the caller instead wants to settle native funds, this function can be called with the native currency to then be able to settle the native currency"},"take(address,address,uint256)":{"details":"Will revert if the requested amount is not available, consider using `mint` insteadCan also be used as a mechanism for free flash loans","params":{"amount":"The amount of currency to withdraw","currency":"The currency to withdraw from the pool manager","to":"The address to withdraw to"}},"transfer(address,uint256,uint256)":{"params":{"amount":"The amount of the token.","id":"The id of the token.","receiver":"The address of the receiver."},"returns":{"_0":"bool True, always, unless the function reverts"}},"transferFrom(address,address,uint256,uint256)":{"params":{"amount":"The amount of the token.","id":"The id of the token.","receiver":"The address of the receiver.","sender":"The address of the sender."},"returns":{"_0":"bool True, always, unless the function reverts"}},"unlock(bytes)":{"details":"The only functions callable without an unlocking are `initialize` and `updateDynamicLPFee`","params":{"data":"Any data to pass to the callback, via `IUnlockCallback(msg.sender).unlockCallback(data)`"},"returns":{"result":"The data returned by the call to `IUnlockCallback(msg.sender).unlockCallback(data)`"}},"updateDynamicLPFee((address,address,uint24,int24,address),uint24)":{"details":"A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee","params":{"key":"The key of the pool to update dynamic LP fees for","newDynamicLPFee":"The new dynamic pool LP fee"}}},"version":1},"userdoc":{"kind":"user","methods":{"allowance(address,address,uint256)":{"notice":"Spender allowance of an id."},"approve(address,uint256,uint256)":{"notice":"Approves an amount of an id to a spender."},"balanceOf(address,uint256)":{"notice":"Owner balance of an id."},"burn(address,uint256,uint256)":{"notice":"Called by the user to move value from ERC6909 balance"},"clear(address,uint256)":{"notice":"WARNING - Any currency that is cleared, will be non-retrievable, and locked in the contract permanently. A call to clear will zero out a positive balance WITHOUT a corresponding transfer."},"collectProtocolFees(address,address,uint256)":{"notice":"Collects the protocol fees for a given recipient and currency, returning the amount collected"},"donate((address,address,uint24,int24,address),uint256,uint256,bytes)":{"notice":"Donate the given currency amounts to the in-range liquidity providers of a pool"},"extsload(bytes32)":{"notice":"Called by external contracts to access granular pool state"},"extsload(bytes32,uint256)":{"notice":"Called by external contracts to access granular pool state"},"extsload(bytes32[])":{"notice":"Called by external contracts to access sparse pool state"},"exttload(bytes32)":{"notice":"Called by external contracts to access transient storage of the contract"},"exttload(bytes32[])":{"notice":"Called by external contracts to access sparse transient pool state"},"initialize((address,address,uint24,int24,address),uint160)":{"notice":"Initialize the state for a given pool ID"},"isOperator(address,address)":{"notice":"Checks if a spender is approved by an owner as an operator"},"mint(address,uint256,uint256)":{"notice":"Called by the user to move value into ERC6909 balance"},"modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":{"notice":"Modify the liquidity for the given pool"},"protocolFeeController()":{"notice":"Returns the current protocol fee controller address"},"protocolFeesAccrued(address)":{"notice":"Given a currency address, returns the protocol fees accrued in that currency"},"setOperator(address,bool)":{"notice":"Sets or removes an operator for the caller."},"setProtocolFee((address,address,uint24,int24,address),uint24)":{"notice":"Sets the protocol fee for the given pool"},"setProtocolFeeController(address)":{"notice":"Sets the protocol fee controller"},"settle()":{"notice":"Called by the user to pay what is owed"},"settleFor(address)":{"notice":"Called by the user to pay on behalf of another address"},"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)":{"notice":"Swap against the given pool"},"sync(address)":{"notice":"Writes the current ERC20 balance of the specified currency to transient storage This is used to checkpoint balances for the manager and derive deltas for the caller."},"take(address,address,uint256)":{"notice":"Called by the user to net out some value owed to the user"},"transfer(address,uint256,uint256)":{"notice":"Transfers an amount of an id from the caller to a receiver."},"transferFrom(address,address,uint256,uint256)":{"notice":"Transfers an amount of an id from a sender to a receiver."},"unlock(bytes)":{"notice":"All interactions on the contract that account deltas require unlocking. A caller that calls `unlock` must implement `IUnlockCallback(msg.sender).unlockCallback(data)`, where they interact with the remaining functions on this contract."},"updateDynamicLPFee((address,address,uint24,int24,address),uint24)":{"notice":"Updates the pools lp fees for the a pool that has enabled dynamic lp fees."}},"version":1}},"settings":{"remappings":["@ensdomains/=lib/v4-periphery/lib/v4-core/node_modules/@ensdomains/","@openzeppelin/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/","@openzeppelin/contracts/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/contracts/","@uniswap/v2-core/=node_modules/@uniswap/v2-core/","@uniswap/v3-core/=node_modules/@uniswap/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","@uniswap/v4-core/=lib/v4-periphery/lib/v4-core/","@uniswap/v4-periphery/=lib/v4-periphery/","ds-test/=lib/solmate/lib/ds-test/src/","erc4626-tests/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","hardhat/=lib/v4-periphery/lib/v4-core/node_modules/hardhat/","openzeppelin-contracts/=lib/permit2/lib/openzeppelin-contracts/","permit2/=lib/permit2/","solmate/=lib/solmate/","v3-periphery/=lib/v3-periphery/contracts/","v4-core/=lib/v4-periphery/lib/v4-core/src/","v4-periphery/=lib/v4-periphery/"],"optimizer":{"enabled":true,"runs":30000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/v4-periphery/lib/v4-core/src/PoolManager.sol":"PoolManager"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"lib/v4-periphery/lib/v4-core/src/ERC6909.sol":{"keccak256":"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f","urls":["bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6","dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/ERC6909Claims.sol":{"keccak256":"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49","urls":["bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c","dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/Extsload.sol":{"keccak256":"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce","urls":["bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51","dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/Exttload.sol":{"keccak256":"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54","urls":["bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c","dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/NoDelegateCall.sol":{"keccak256":"0xacb81aecb7c74c86650a035462dae38c313b4b7b5842e14b645f864f61da2b51","urls":["bzz-raw://363a0e15fc30ea68a5d52a78772facecde6433ea156e3ec2ce25068c97cd5ad6","dweb:/ipfs/QmYhWaF3wH71SDx5TZr9qEXXQf5FYQvdjoo3B2qWiAbm18"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/PoolManager.sol":{"keccak256":"0xaa234912d8bc3a54c80f3973b34823cfac88d01fe9481765b7a5925dccbc9b79","urls":["bzz-raw://6faf4019cd6cfcaa434631e2f9709389abd8ab339d51096f404f260cc255b5e1","dweb:/ipfs/QmZ8aLGm3b2L4UuzrerGmpyB2f32cUcNUL6qvzNBqop45k"],"license":"BUSL-1.1"},"lib/v4-periphery/lib/v4-core/src/ProtocolFees.sol":{"keccak256":"0x81362ef1d19670b41cefc2b6f2dc0333b6743fe39a1929edd36bd9b6a1111755","urls":["bzz-raw://de483bbd8bf9a53b9644d7f9a6a6fe77ae527b755cf29e1db8725de89e70c7aa","dweb:/ipfs/Qmex3PcgJGbYsuDNaMXc8mg5fW1DNaPGiNToPpAAzz6GEq"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/interfaces/IHooks.sol":{"keccak256":"0x4c9571aed0c2b6ef11832545554fc11ffdb03746daaf5c73683c00600bfc7ec0","urls":["bzz-raw://e78b34b58ce9de91b91943b4f3cc3ce121d0b151e123e8a600ac5ef64d91db6c","dweb:/ipfs/QmRkaQnPCYwLrXgbpGujJTx32PaZK63KSPJJV1XmnQuCMb"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/interfaces/IPoolManager.sol":{"keccak256":"0xb29607eefac17cb3b0a6f7ca1225a4f5a4baf4873fd1689c770e1fa0b3465399","urls":["bzz-raw://d1c9d83b6910d2cbd8b711438072b57f7feffcc18321330c0d83e73159c9c828","dweb:/ipfs/QmZfkdqayzYHAiGXrXLXYNaiS6JXSQmKyJLDQHvaXYi5Y2"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/interfaces/IProtocolFees.sol":{"keccak256":"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848","urls":["bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d","dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/BitMath.sol":{"keccak256":"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d","urls":["bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e","dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/CurrencyDelta.sol":{"keccak256":"0x80dbd898cf0f90c5c27192689b16c34edc765d6ab21b8358e3bb792c7fef238c","urls":["bzz-raw://107698da024313f132d9fe28deb920b5c03d14624889c3ce5720e588f03635bb","dweb:/ipfs/QmQteUbhj5SsWbvSF6U8niBUSrETqVbEwULc8E7vS4Kbnn"],"license":"BUSL-1.1"},"lib/v4-periphery/lib/v4-core/src/libraries/CurrencyReserves.sol":{"keccak256":"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3","urls":["bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725","dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX"],"license":"BUSL-1.1"},"lib/v4-periphery/lib/v4-core/src/libraries/CustomRevert.sol":{"keccak256":"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de","urls":["bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd","dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/FixedPoint128.sol":{"keccak256":"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542","urls":["bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb","dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/FixedPoint96.sol":{"keccak256":"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741","urls":["bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4","dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/Hooks.sol":{"keccak256":"0x27b1c3b8aa3d07d8e3123970695745929315685a5ffaa7342c3ba3582f37fecb","urls":["bzz-raw://fa3bb092dc205eaa1b9defc93e9bbad5f4c5c44e1c4aa531dfca2574c2aba9ba","dweb:/ipfs/QmR1soxkepHNkbGxAMaK4XqhQ4VxWn69dewzGkQJNx5byM"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/LPFeeLibrary.sol":{"keccak256":"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b","urls":["bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475","dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/LiquidityMath.sol":{"keccak256":"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353","urls":["bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99","dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"lib/v4-periphery/lib/v4-core/src/libraries/NonzeroDeltaCount.sol":{"keccak256":"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87","urls":["bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59","dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm"],"license":"BUSL-1.1"},"lib/v4-periphery/lib/v4-core/src/libraries/ParseBytes.sol":{"keccak256":"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15","urls":["bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17","dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/Pool.sol":{"keccak256":"0x53cd1b8791274c3599ed62fb8d2eb428bfad6cefa2002b5e684250b89e681371","urls":["bzz-raw://469124e41971bbd78107099961aaef5c6cb8035d236647f9e6ce2b0d9e1318cf","dweb:/ipfs/QmWjfugsTJa8jB15dm6acpixXLgDoEMa1me9tMeEXxsazU"],"license":"BUSL-1.1"},"lib/v4-periphery/lib/v4-core/src/libraries/Position.sol":{"keccak256":"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9","urls":["bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2","dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5"],"license":"BUSL-1.1"},"lib/v4-periphery/lib/v4-core/src/libraries/ProtocolFeeLibrary.sol":{"keccak256":"0xf483001899229ab10f5a626fe1c5866134d9e965b48ce6cf55ce0d7f74f7d8ec","urls":["bzz-raw://6ba9211a7f69bbb44649c35211eb29d193c09032ec600064ef9d04b4625dd8ba","dweb:/ipfs/QmQSjQvtguYgMJSkkKRhHjxasfX9xfTbrbcZ1QmjUVb787"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/SafeCast.sol":{"keccak256":"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86","urls":["bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59","dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/SqrtPriceMath.sol":{"keccak256":"0xf8079fe6e3460db495451d06b1705e18f1c4075c1af96a31ad313545f7082982","urls":["bzz-raw://582fc51546723a0a8acccf782f69b530bacf9b3ef929458e82569b7121f0b138","dweb:/ipfs/QmSBXcmqZdFsM7M4sRaiyQAxykCeMNFKyKgBcwSMTw1bcF"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/SwapMath.sol":{"keccak256":"0x6baa782ae523269c079cc763639a9b91a25fcfa1743c049c76e43741ef494bd9","urls":["bzz-raw://035c337e62e05262a5bd5d3bc85bc9a383c1013001216b429f49cf1e129a0812","dweb:/ipfs/QmU7s4h58Fh2A6mM8yeorZ2ygwEJMQw8zdZLLkHeDoSWxD"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/TickBitmap.sol":{"keccak256":"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a","urls":["bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d","dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/TickMath.sol":{"keccak256":"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8","urls":["bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70","dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/libraries/UnsafeMath.sol":{"keccak256":"0xa6e55e0a43a15df2df471d9972cd48f613d07c663ecb8bbeaf7623f6f99bcce4","urls":["bzz-raw://02ea6e13879fc5a5f35149a2f1cd8af3a1f0877ff69101dad53841d16f515572","dweb:/ipfs/QmcpL4gdG6hL2w1wqs2Vw4J1EFCwBs9T1Qd4p16CtECQkn"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/types/Currency.sol":{"keccak256":"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93","urls":["bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01","dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/types/PoolId.sol":{"keccak256":"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af","urls":["bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918","dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/types/PoolKey.sol":{"keccak256":"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786","urls":["bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639","dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi"],"license":"MIT"},"lib/v4-periphery/lib/v4-core/src/types/Slot0.sol":{"keccak256":"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b","urls":["bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8","dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C"],"license":"MIT"}},"version":1},"id":13}