{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"MIN_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"REMOVE_LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SWAP_PARAMS","inputs":[],"outputs":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_collectProtocolFees_revertsWithInvalidCaller","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_collectProtocolFees_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_collectProtocolFees","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"feesAccrued","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_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":"protocolFee","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_updateProtocolFees","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"startingAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_setProtocolFeeController_revertsWithNotAuthorized","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_setProtocolFeeController_succeedsNoRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_setProtocolFee_revertsWithInvalidCaller","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_setProtocolFee_revertsWithInvalidFee","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_setProtocolFee_succeeds_gas","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_updateProtocolFees_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ProtocolFeeControllerUpdated","inputs":[{"name":"feeController","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":"ProtocolFeeUpdated","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"protocolFee","type":"uint24","indexed":false,"internalType":"uint24"}],"anonymous":false},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60806040523461016257600160ff19600c541617600c55600160ff19601f541617601f555f606061002e610166565b607719815260786020820152670de0b6b3a7640000604082015201526378ffff8865ffffffffffff196020541617602055670de0b6b3a76400006021555f6022555f606061007a610166565b607719815260786020820152670de0b6b3a763ffff19604082015201526378ffff8865ffffffffffff196023541617602355670de0b6b3a763ffff196024555f6025556040516060810181811060018060401b0382111761014e5760409081526001808352606319602084018190526bb504f333f9de6484597d89b39383018490526026805460ff1916909217909155602755602880546001600160a01b03199081169093179055604280548316600e17905560438054909216614000600160a01b03179091555161683f90816101868239f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b60405190608082016001600160401b0381118382101761014e5760405256fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c9081621c480014613c1f575080630107751d14613687578063045ee99c146133a35780630a9254e414612daa5780631ed7831c14612d015780631fa58791146129d55780632ade3880146127a957806339cd2013146127485780633e5e3c231461269f5780633f7286f4146125f65780634a34338914612163578063542524dd1461211657806354a89cef14611fbe57806366d9a9a014611e6357806385226c8114611dbb5780638bd7d3af14611b735780638d9c624314611451578063916a17c61461137c57806393ad73ed14611317578063944b94c614611009578063b0464fdc14610f34578063b1a73b8a14610ecc578063b5508aa914610e24578063ba414fa614610de1578063c7b8e15d14610da3578063cff8f458146107b4578063defcbca01461025e578063e20c9f71146101a55763fa7626d40361000f57346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257602060ff601f54166040519015158152f35b80fd5b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106102325761022e856102228187038261416e565b60405191829182613ede565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161020b565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2578073ffffffffffffffffffffffffffffffffffffffff6029541673ffffffffffffffffffffffffffffffffffffffff602a5416604051916102cd83614152565b82526020820152610bb86040820152603c606082015281608082015273ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60355416813b156107af5783916024839260405194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af190811561076557839161079a575b505073ffffffffffffffffffffffffffffffffffffffff60445416803b15610749578260405180927fb0e277b4000000000000000000000000000000000000000000000000000000008252818381600481016c0100000000000000000000000060a060c0830192610423818d73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b015203925af1908115610765578391610785575b505073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561074957604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152828160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610765578391610770575b505073ffffffffffffffffffffffffffffffffffffffff60445416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610749576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190525f602483018190526044830152606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152828160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af190811561076557839161074d575b505060a081207fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f96020604051623e83e88152a273ffffffffffffffffffffffffffffffffffffffff6044541690813b156107495761065f60c484928360405195869485937f7e87ce7d000000000000000000000000000000000000000000000000000000008552600485019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b623e83e860a48401525af1801561072957610734575b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f7365742070726f746f636f6c2066656500000000000000000000000000000000604482015260208160648185737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610729576106fd575080f35b61071e9060203d602011610722575b610716818361416e565b8101906141db565b5080f35b503d61070c565b6040513d84823e3d90fd5b8161073e9161416e565b6101a257805f610675565b5050fd5b816107579161416e565b61076257815f610584565b50fd5b6040513d85823e3d90fd5b8161077a9161416e565b61076257815f6104c4565b8161078f9161416e565b61076257815f610437565b816107a49161416e565b61076257815f610368565b505050fd5b50346101a2577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360160c08112610d9f5760a0136101a257806040516107f981614152565b610801614042565b815260243573ffffffffffffffffffffffffffffffffffffffff8116810361074957602082015260443562ffffff811681036107495760408201526064358060020b810361074957606082015260843573ffffffffffffffffffffffffffffffffffffffff8116810361074957608082015260a4359062ffffff82168083036107af5773ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60355416813b15610d9b5785916024839260405194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af1908115610d3b578591610d86575b505073ffffffffffffffffffffffffffffffffffffffff60445416803b15610d46578460405180927fb0e277b4000000000000000000000000000000000000000000000000000000008252818381886c0100000000000000000000000060a0600484016109be8160c081019573ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b015203925af1908115610d3b578591610d71575b505073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d4657604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152848160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610d3b578591610d5c575b50506103e8610fff8416118015610d4a575b15610bda57604051907fa7abe2f7000000000000000000000000000000000000000000000000000000006020830152602482015260248152610ab460448261416e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156107af5783610b0f91604051809381927ff28dceb3000000000000000000000000000000000000000000000000000000008352602060048401526024830190613f2d565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610bcf578491610bba575b505073ffffffffffffffffffffffffffffffffffffffff6044541691823b156107af57610b96928492836040518096819582947f7e87ce7d000000000000000000000000000000000000000000000000000000008452600484016146bc565b03925af1801561072957610ba957505080f35b81610bb39161416e565b6101a25780f35b81610bc49161416e565b61074957825f610b37565b6040513d86823e3d90fd5b73ffffffffffffffffffffffffffffffffffffffff60445416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d46576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190525f602483018190526044830152606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152848160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610d3b578591610d26575b50507fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f9602060a0842092604051908152a273ffffffffffffffffffffffffffffffffffffffff6044541691823b156107af57610b96928492836040518096819582947f7e87ce7d000000000000000000000000000000000000000000000000000000008452600484016146bc565b81610d309161416e565b6107af57835f610c98565b6040513d87823e3d90fd5b8480fd5b506103e8610fff84600c1c1611610a71565b81610d669161416e565b6107af57835f610a5f565b81610d7b9161416e565b6107af57835f6109d2565b81610d909161416e565b6107af57835f610903565b8580fd5b5080fd5b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760206040516401000276a48152f35b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576020610e1a6145e3565b6040519015158152f35b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257601954610e5f816141ea565b91610e6d604051938461416e565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310610eaf576040518061022e8782613fc5565b600160208192610ebe85614202565b815201920192019190610e9a565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257606060ff6026541660275473ffffffffffffffffffffffffffffffffffffffff6028541690604051921515835260208301526040820152f35b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257601c54610f6f816141ea565b91610f7d604051938461416e565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b838310610fbf576040518061022e8782614065565b60026020600192604051610fd281614109565b73ffffffffffffffffffffffffffffffffffffffff8654168152610ff7858701614305565b83820152815201920192019190610faa565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2578073ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60295416813b156107495782916044839260405194859384927f9612fe6a0000000000000000000000000000000000000000000000000000000084526004840152606460248401525af1801561072957611302575b5073ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff602954166040517f97e8cd4e000000000000000000000000000000000000000000000000000000008152816004820152602081602481865afa908115610bcf5784916112ca575b5061113c906147ba565b813b156107495782916044839260405194859384927f9612fe6a000000000000000000000000000000000000000000000000000000008452600484015260c860248401525af18015610729576112b5575b5073ffffffffffffffffffffffffffffffffffffffff60445416602073ffffffffffffffffffffffffffffffffffffffff602954166024604051809481937f97e8cd4e00000000000000000000000000000000000000000000000000000000835260048301525afa90811561072957829161127c575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561076257604051907f98296c54000000000000000000000000000000000000000000000000000000008252600482015261012c60248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561072957610ba95750f35b9150506020813d6020116112ad575b816112986020938361416e565b810103126112a9578190515f611203565b5f80fd5b3d915061128b565b816112bf9161416e565b6101a257805f61118d565b9350506020833d6020116112fa575b816112e66020938361416e565b810103126112a95761113c84935190611132565b3d91506112d9565b8161130c9161416e565b6101a257805f6110bc565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576020805460215460225460408051600285810b825260189590951c90940b94840194909452928201526060810191909152608090f35b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257601d546113b7816141ea565b916113c5604051938461416e565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b838310611407576040518061022e8782614065565b6002602060019260405161141a81614109565b73ffffffffffffffffffffffffffffffffffffffff865416815261143f858701614305565b838201528152019201920191906113f2565b50346101a25760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257611489614042565b602435908260443592809273ffffffffffffffffffffffffffffffffffffffff602954169073ffffffffffffffffffffffffffffffffffffffff60445416926114d284846148e8565b871115737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d9b57604051907f4c63e56200000000000000000000000000000000000000000000000000000000825260048201528581602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115611a43578691611b5e575b505061155282846148e8565b9261155d85826148e8565b94803b15611b5a576040517f9612fe6a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9290921660048301526024820189905286908290604490829084905af1908115611a43578691611b45575b505073ffffffffffffffffffffffffffffffffffffffff604454169073ffffffffffffffffffffffffffffffffffffffff60295416906040517f97e8cd4e000000000000000000000000000000000000000000000000000000008152826004820152602081602481875afa8015611b3a578a918991611aff575b509061165091614831565b15611a7c575b5073ffffffffffffffffffffffffffffffffffffffff60355416813b15610d9b5785916024839260405194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af1908115610d3b578591611a67575b505073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d4657604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152848160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610d3b578591611a4e575b505085851192836119bb575b73ffffffffffffffffffffffffffffffffffffffff6044541693602073ffffffffffffffffffffffffffffffffffffffff60295416956064604051809981937f8161b87400000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff89169a8b600485015260248401528c60448401525af19586156119b057899661197c575b50156117fb578780f35b60445473ffffffffffffffffffffffffffffffffffffffff169384036118fa5750906118426118479273ffffffffffffffffffffffffffffffffffffffff602954166148e8565b614831565b602073ffffffffffffffffffffffffffffffffffffffff602954166024604051809481937f97e8cd4e00000000000000000000000000000000000000000000000000000000835260048301525afa908115610d3b5785916118c6575b50611842906118b5846118bb966145a9565b90614831565b5f8080808080808780f35b90506020813d6020116118f2575b816118e16020938361416e565b810103126112a957516118bb6118a3565b3d91506118d4565b9161191e73ffffffffffffffffffffffffffffffffffffffff6029541692836148e8565b86820180921161194f576119448561194a959461193f6118b5958b95614831565b6148e8565b926145a9565b611847565b6024897f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b9095506020813d6020116119a8575b816119986020938361416e565b810103126112a95751945f6117f1565b3d915061198b565b6040513d8b823e3d90fd5b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d46576040517ff4844814000000000000000000000000000000000000000000000000000000008152858160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115611a43578691611a2e575b5050611756565b81611a389161416e565b610d4657845f611a27565b6040513d88823e3d90fd5b81611a589161416e565b611a6357835f61174a565b8380fd5b81611a719161416e565b611a6357835f6116bd565b909550604051907f97e8cd4e0000000000000000000000000000000000000000000000000000000082526004820152602081602481895afa908115610d3b578591611aca575b50945f611656565b9450506020843d602011611af7575b81611ae66020938361416e565b810103126112a9578693515f611ac2565b3d9150611ad9565b985050506020873d602011611b32575b81611b1c6020938361416e565b810103126112a957611650898b98519091611645565b3d9150611b0f565b6040513d8a823e3d90fd5b81611b4f9161416e565b610d4657845f6115cb565b8680fd5b81611b689161416e565b610d4657845f611546565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2578073ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60355416813b156107495782916024839260405194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af1801561072957611da6575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101a257806040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f48f5c3ed000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561072957611d91575b5073ffffffffffffffffffffffffffffffffffffffff60445416803b156107625781809160c4604051809481937f7e87ce7d000000000000000000000000000000000000000000000000000000008352611d7b6004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b600160a48401525af1801561072957610ba95750f35b81611d9b9161416e565b6101a257805f611cb1565b81611db09161416e565b6101a257805f611c1f565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257601a54611df6816141ea565b91611e04604051938461416e565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310611e46576040518061022e8782613fc5565b600160208192611e5585614202565b815201920192019190611e31565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257601b54611e9e816141ea565b611eab604051918261416e565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b838310611f8357868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210611f1857505050500390f35b91936020611f73827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083611f638351604084526040840190613f2d565b9201519084818403910152613f70565b9601920192018594939192611f09565b60026020600192604051611f9681614109565b611f9f86614202565b8152611fac858701614305565b83820152815201920192019190611edb565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101a257806040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f48f5c3ed000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561072957612101575b50602073ffffffffffffffffffffffffffffffffffffffff60445416606473ffffffffffffffffffffffffffffffffffffffff6029541660405194859384927f8161b8740000000000000000000000000000000000000000000000000000000084526001600485015260248401528160448401525af18015610729576106fd575080f35b8161210b9161416e565b6101a257805f61207d565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257602060405173fffd8963efd1fc6a506488495d951d5263988d258152f35b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2578073ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60295416813b156107495782916044839260405194859384927f9612fe6a0000000000000000000000000000000000000000000000000000000084526004840152606460248401525af18015610729576125e1575b5073ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60295416604051907f97e8cd4e0000000000000000000000000000000000000000000000000000000082526004820152602081602481855afa9081156107655783916125a9575b50612296906147ba565b73ffffffffffffffffffffffffffffffffffffffff60355416813b156107495782916024839260405194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af1801561072957612594575b5073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561076257604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156107295761257f575b50602073ffffffffffffffffffffffffffffffffffffffff60445416606473ffffffffffffffffffffffffffffffffffffffff6029541660405194859384927f8161b87400000000000000000000000000000000000000000000000000000000845230600485015260248401528360448401525af1801561072957612550575b5073ffffffffffffffffffffffffffffffffffffffff60445416816024602073ffffffffffffffffffffffffffffffffffffffff6029541693604051928380927f97e8cd4e0000000000000000000000000000000000000000000000000000000082528760048301525afa90811561072957829161251b575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d9f57604051907f98296c5400000000000000000000000000000000000000000000000000000000825260048201528160248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561072957612506575b506125036124fe30846148e8565b6147ba565b80f35b816125109161416e565b610d9f57815f6124f0565b9150506020813d602011612548575b816125376020938361416e565b810103126112a9578290515f61247b565b3d915061252a565b6020813d602011612577575b816125696020938361416e565b810103126112a95751612402565b3d915061255c565b816125899161416e565b6101a257805f612382565b8161259e9161416e565b6101a257805f6122f9565b9250506020823d6020116125d9575b816125c56020938361416e565b810103126112a9576122968392519061228c565b3d91506125b8565b816125eb9161416e565b6101a257805f612216565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b8181106126735761022e856102228187038261416e565b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161265c565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b81811061271c5761022e856102228187038261416e565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201612705565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760235460245460255460408051600285810b825260189590951c90940b60208501528301919091526060820152608090f35b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257601e546127e4816141ea565b6127f1604051918261416e565b818152601e83526020810191837f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350845b83831061293f5786858760405192839260208401906020855251809152604084019160408260051b8601019392815b83831061285d5786860387f35b9193957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09086929496030183528551906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b850101940192855b8281106128f657505050505060208060019297019301930190928695949293612850565b9091929394602080612932837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087600196030189528951613f2d565b97019501939291016128d2565b60405161294b81614109565b73ffffffffffffffffffffffffffffffffffffffff8354168152600183018054612974816141ea565b91612982604051938461416e565b8183528a526020808b20908b9084015b8382106129b8575050505060019282602092836002950152815201920192019190612821565b6001602081926129c786614202565b815201930191019091612992565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2578073ffffffffffffffffffffffffffffffffffffffff604454166040517ff02de3b2000000000000000000000000000000000000000000000000000000008152602081600481855afa801561076557612a64918491612ce2575b50614724565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561076257604051907f81bad6f3000000000000000000000000000000000000000000000000000000008252600160048301528260248301528260448301528260648301526084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561072957612ccd575b5073ffffffffffffffffffffffffffffffffffffffff6035541660405190807fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc8480a273ffffffffffffffffffffffffffffffffffffffff60445416803b156107af5760248385819381957f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af1801561072957612cb8575b506004602073ffffffffffffffffffffffffffffffffffffffff60445416604051928380927ff02de3b20000000000000000000000000000000000000000000000000000000082525afa908115610729578291612c89575b5073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156107495773ffffffffffffffffffffffffffffffffffffffff604051927f515361f600000000000000000000000000000000000000000000000000000000845216600483015260248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561072957610ba95750f35b612cab915060203d602011612cb1575b612ca3818361416e565b8101906141af565b5f612be4565b503d612c99565b81612cc29161416e565b6101a257805f612b8c565b81612cd79161416e565b6101a257805f612aec565b612cfb915060203d602011612cb157612ca3818361416e565b5f612a5e565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110612d7e5761022e856102228187038261416e565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201612d67565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257604051610b778082019082821067ffffffffffffffff83111761337657908291615cbc8339039082f080156133695773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006044541617604455604051612e5381614109565b600d815281602082017f666565436f6e74726f6c6c6572000000000000000000000000000000000000008152604051600d6020820192835e82602d820152600d8152612ea0602d8261416e565b519020604051907fffa186490000000000000000000000000000000000000000000000000000000082526004820152602081602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa90811561072957829161334a575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d9f578173ffffffffffffffffffffffffffffffffffffffff612f749260405193849283927fc657c7180000000000000000000000000000000000000000000000000000000084521696876004840152604060248401526044830190613f2d565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561072957613335575b50507fffffffffffffffffffffffff00000000000000000000000000000000000000006035541617603555606090604051612fd560608261416e565b6002815260208101906040368337611325614997845b60ff8116600281101561319b5760405184810181811067ffffffffffffffff82111761316e578190601260406130916130588e8b8b88398086528501604090600481527f544553540000000000000000000000000000000000000000000000000000000060208201520190565b8481036020860152604090600481527f544553540000000000000000000000000000000000000000000000000000000060208201520190565b920152039088f0801561316357816130cd9173ffffffffffffffffffffffffffffffffffffffff6130c381958a6148a7565b91169052866148a7565b5116803b15611b5a578680916044604051809481937f40c10f190000000000000000000000000000000000000000000000000000000083523060048401527f800000000000000000000000000000000000000000000000000000000000000060248401525af180156131635790879161314e575b505060010160ff16612feb565b816131589161416e565b610d9b57855f613141565b6040513d89823e3d90fd5b6024897f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b868587815115613308578073ffffffffffffffffffffffffffffffffffffffff91505116908051600110156133085773ffffffffffffffffffffffffffffffffffffffff83928160406020940151168082105f146133005782905b167fffffffffffffffffffffffff0000000000000000000000000000000000000000602a541617602a5516807fffffffffffffffffffffffff00000000000000000000000000000000000000006029541617602955604473ffffffffffffffffffffffffffffffffffffffff81541660405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845260048401527f800000000000000000000000000000000000000000000000000000000000000060248401525af18015610729576132cb575080f35b6020813d6020116132f8575b816132e46020938361416e565b81010312610d9f5751801515036101a25780f35b3d91506132d7565b9082906131f6565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b8161333f9161416e565b610d9f57815f612f99565b613363915060203d602011612cb157612ca3818361416e565b5f612efa565b50604051903d90823e3d90fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b50346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576004356024358273ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff6029541690803b15613633576040517f9612fe6a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9290921660048301526024820184905282908290604490829084905af1801561072957613672575b5073ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60295416906040517f97e8cd4e000000000000000000000000000000000000000000000000000000008152826004820152602081602481855afa8015610bcf5785918591613637575b50906134fa91614831565b803b15613633576040517f9612fe6a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9290921660048301526024820185905282908290604490829084905af180156107295761361e575b505073ffffffffffffffffffffffffffffffffffffffff6044541691602073ffffffffffffffffffffffffffffffffffffffff602954166024604051809681937f97e8cd4e00000000000000000000000000000000000000000000000000000000835260048301525afa918215610bcf5784926135e8575b61250393500190614831565b91506020833d602011613616575b816136036020938361416e565b810103126112a9576125039251916135dc565b3d91506135f6565b816136289161416e565b61363357825f613564565b8280fd5b945050506020833d60201161366a575b816136546020938361416e565b810103126112a9576134fa8487945190916134ef565b3d9150613647565b8161367c9161416e565b61363357825f613477565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25780623e83e973ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60355416813b156107af5783916024839260405194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af1908115610765578391613c0a575b505073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561074957604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152828160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610765578391613bf5575b50506040517fa7abe2f70000000000000000000000000000000000000000000000000000000060208201528160248201526024815261380760448261416e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610749578261386291604051809381927ff28dceb3000000000000000000000000000000000000000000000000000000008352602060048401526024830190613f2d565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610765578391613be0575b505073ffffffffffffffffffffffffffffffffffffffff6044541690813b1561074957829160c4839260405194859384927f7e87ce7d0000000000000000000000000000000000000000000000000000000084526139586004850173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b60a48401525af1801561072957613bcb575b505080623e93e873ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561074957604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152828160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610765578391613bb6575b50506040517fa7abe2f700000000000000000000000000000000000000000000000000000000602082015281602482015260248152613a3c60448261416e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156107495782613a9791604051809381927ff28dceb3000000000000000000000000000000000000000000000000000000008352602060048401526024830190613f2d565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610765578391613ba1575b505073ffffffffffffffffffffffffffffffffffffffff6044541690813b1561074957829160c4839260405194859384927f7e87ce7d000000000000000000000000000000000000000000000000000000008452613b8d6004850173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b60a48401525af1801561072957610ba95750f35b81613bab9161416e565b61076257815f613abf565b81613bc09161416e565b61076257815f6139fc565b81613bd59161416e565b6101a257805f61396a565b81613bea9161416e565b61076257815f61388a565b81613bff9161416e565b61076257815f6137c7565b81613c149161416e565b61076257815f61373a565b9050346112a9575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126112a95760208160048173ffffffffffffffffffffffffffffffffffffffff604454167ff02de3b20000000000000000000000000000000000000000000000000000000082525afa8015613ed357613ca9915f91612ce25750614724565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112a9576040517fca669fa7000000000000000000000000000000000000000000000000000000008152600160048201525f8160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015613ed357613ec0575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101a257806040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152818160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561072957613eab575b5073ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60355416813b156107495782916024839260405194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af1801561072957613e96575b50506004602073ffffffffffffffffffffffffffffffffffffffff60445416604051928380927ff02de3b20000000000000000000000000000000000000000000000000000000082525afa801561072957612503918391612ce25750614724565b81613ea09161416e565b6101a257805f613e35565b81613eb59161416e565b6101a257805f613db8565b613ecc91505f9061416e565b5f80613d19565b6040513d5f823e3d90fd5b60206040818301928281528451809452019201905f5b818110613f015750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101613ef4565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b818110613f8d5750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101613f80565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310613ff757505050505090565b9091929394602080614033837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951613f2d565b97019301930191939290613fe8565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036112a957565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061409757505050505090565b90919293946020806140fa837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff815116845201519181858201520190613f70565b97019301930191939290614088565b6040810190811067ffffffffffffffff82111761412557604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff82111761412557604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761412557604052565b908160209103126112a9575173ffffffffffffffffffffffffffffffffffffffff811681036112a95790565b908160209103126112a9575190565b67ffffffffffffffff81116141255760051b60200190565b90604051915f8154908160011c92600183169283156142fb575b6020851084146142ce57848752869390811561428e575060011461424a575b506142489250038361416e565b565b90505f9291925260205f20905f915b818310614272575050906020614248928201015f61423b565b6020919350806001915483858901015201910190918492614259565b602093506142489592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f61423b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f169361421c565b90604051918281549182825260208201905f5260205f20925f905b80600783011061451c576142489454918181106144e6575b8181106144b0575b81811061447a575b818110614444575b81811061440e575b8181106143d8575b8181106143a3575b10614376575b50038361416e565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f61436e565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b168152019301614368565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b168152019301614360565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b168152019301614358565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b168152019301614350565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b168152019301614348565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b168152019301614340565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b168152019301614338565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920185929391614320565b919082039182116145b657565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60085460ff1680156145f25790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115613ed3575f9161468a575b50151590565b90506020813d6020116146b4575b816146a56020938361416e565b810103126112a957515f614684565b3d9150614698565b90929162ffffff60a09161471e8460c081019773ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b16910152565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112a95773ffffffffffffffffffffffffffffffffffffffff604051917f515361f60000000000000000000000000000000000000000000000000000000083521660048201525f60248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015613ed3576147b05750565b5f6142489161416e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112a957604051907f98296c540000000000000000000000000000000000000000000000000000000082526004820152606460248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015613ed3576147b05750565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112a957604051917f98296c54000000000000000000000000000000000000000000000000000000008352600483015260248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015613ed3576147b05750565b80518210156148bb5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff168061490857503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115613ed3575f91614967575090565b90506020813d60201161498e575b816149826020938361416e565b810103126112a9575190565b3d915061497556fe60e0806040523461040657611325803803809161001c828561040a565b83398101906060818303126104065780516001600160401b038111610406578261004791830161042d565b60208201519092906001600160401b0381116104065760409161006b91840161042d565b91015160ff811681036104065782516001600160401b038111610337576100925f54610482565b601f81116103b7575b506020601f821160011461035657819293945f9261034b575b50508160011b915f199060031b1c1916175f555b81516001600160401b038111610337576100e3600154610482565b601f81116102d4575b50602092601f821160011461027357928192935f92610268575b50508160011b915f199060031b1c1916176001555b6080524660a0526040515f905f54918161013484610482565b9182825260208201946001811690815f1461024c5750600114610202575b61015e9250038261040a565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a081526101d260c08261040a565b51902060c052604051610e4a90816104bb823960805181610865015260a05181610ca8015260c05181610cce0152f35b505f80805290915f805160206113058339815191525b81831061023057505090602061015e92820101610152565b6020919350806001915483858801015201910190918392610218565b60ff191686525061015e92151560051b82016020019050610152565b015190505f80610106565b601f1982169360015f52805f20915f5b8681106102bc57508360019596106102a4575b505050811b0160015561011b565b01515f1960f88460031b161c191690555f8080610296565b91926020600181928685015181550194019201610283565b60015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f830160051c8101916020841061032d575b601f0160051c01905b81811061032257506100ec565b5f8155600101610315565b909150819061030c565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100b4565b601f198216905f8052805f20915f5b81811061039f57509583600195969710610387575b505050811b015f556100c8565b01515f1960f88460031b161c191690555f808061037a565b9192602060018192868b015181550194019201610365565b5f80525f80516020611305833981519152601f830160051c810191602084106103fc575b601f0160051c01905b8181106103f1575061009b565b5f81556001016103e4565b90915081906103db565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761033757604052565b81601f82011215610406578051906001600160401b0382116103375760405192610461601f8401601f19166020018561040a565b8284526020838301011161040657815f9260208093018386015e8301015290565b90600182811c921680156104b0575b602083101461049c57565b634e487b7160e01b5f52602260045260245ffd5b91607f169161049156fe60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610a8b578063095ea7b3146109e857806318160ddd146109ad57806323b872dd14610889578063313ce5671461082e5780633644e515146107ee57806340c10f191461071f57806370a08231146106bc5780637ecebe001461065957806395d89b41146105435780639dc29fac146104a4578063a9059cbb146103f0578063d505accf146101435763dd62ed3e146100b3575f80fd5b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576100ea610c52565b73ffffffffffffffffffffffffffffffffffffffff610107610c75565b91165f52600460205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b3461013f5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f5761017a610c52565b610182610c75565b6044356064359260843560ff811680910361013f574285106103925760805f9160209373ffffffffffffffffffffffffffffffffffffffff6101c2610ca5565b91169687855260058652604085209889549960018b0190556040519073ffffffffffffffffffffffffffffffffffffffff888301937f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c985528b6040850152169a8b6060840152898784015260a083015260c082015260c0815261024660e082610b9c565b51902060405190868201927f19010000000000000000000000000000000000000000000000000000000000008452602283015260428201526042815261028d606282610b9c565b519020906040519182528482015260a435604082015260c435606082015282805260015afa156103875773ffffffffffffffffffffffffffffffffffffffff5f51168015158061037e575b15610320577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916020915f526004825260405f20855f5282528060405f2055604051908152a3005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152fd5b508281146102d8565b6040513d5f823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152fd5b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57610427610c52565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600360205260405f20610457848254610c98565b90551690815f52600360205260405f208181540190556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3602060405160018152f35b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f575f6104dc610c52565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff6024359316928385526003825260408520610530828254610c98565b90558060025403600255604051908152a3005b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576040515f60015461058181610b4b565b808452906001811690811561061757506001146105b9575b6105b5836105a981850382610b9c565b60405191829182610c0a565b0390f35b60015f9081527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b8082106105fd575090915081016020016105a9610599565b9192600181602092548385880101520191019092916105e5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506105a99050610599565b3461013f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f5773ffffffffffffffffffffffffffffffffffffffff6106a5610c52565b165f526005602052602060405f2054604051908152f35b3461013f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f5773ffffffffffffffffffffffffffffffffffffffff610708610c52565b165f526003602052602060405f2054604051908152f35b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57610756610c52565b602435906002548281018091116107c157602073ffffffffffffffffffffffffffffffffffffffff5f937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9360025516938484526003825260408420818154019055604051908152a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576020610826610ca5565b604051908152f35b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461013f5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576108c0610c52565b6108c8610c75565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff80604435951693845f526004835260405f208233165f52835260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610986575b5050845f526003835260405f2061095f878254610c98565b90551693845f526003825260405f20818154019055604051908152a3602060405160018152f35b61098f91610c98565b855f526004845260405f208333165f52845260405f20558686610947565b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576020600254604051908152f35b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57610a1f610c52565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600460205260405f208282165f526020528260405f205560405192835216907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576040515f8054610ac881610b4b565b80845290600181169081156106175750600114610aef576105b5836105a981850382610b9c565b5f8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b808210610b31575090915081016020016105a9610599565b919260018160209254838588010152019101909291610b19565b90600182811c92168015610b92575b6020831014610b6557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610b5a565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bdd57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361013f57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361013f57565b919082039182116107c157565b467f000000000000000000000000000000000000000000000000000000000000000003610cf0577f000000000000000000000000000000000000000000000000000000000000000090565b6040515f905f549181610d0284610b4b565b9182825260208201946001811690815f14610e035750600114610da6575b610d2c92500382610b9c565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a08152610da060c082610b9c565b51902090565b505f80805290917f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818310610de7575050906020610d2c92820101610d20565b6020919350806001915483858801015201910190918392610dcf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016865250610d2c92151560051b82016020019050610d2056fea164736f6c634300081a000a290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360808060405234604d575f80546001600160a01b031916339081178255907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3610b2590816100528239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80632d771389146108db5780632ddb57ff1461086e5780637e87ce7d146106f35780638161b8741461034b5780638da5cb5b146102fb5780639612fe6a1461029757806397e8cd4e14610234578063b0e277b414610188578063f02de3b2146101375763f2fde38b14610087575f80fd5b346101335760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610133577fffffffffffffffffffffffff00000000000000000000000000000000000000006100df610986565b73ffffffffffffffffffffffffffffffffffffffff5f54916101048284163314610ab3565b1691829116175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b5f80fd5b34610133575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013357602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b346101335760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610133576101c0366109a9565b60a4359073ffffffffffffffffffffffffffffffffffffffff821682036101335760a090205f52600360205260405f209081549073ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffff0000000000000000000000000000000000000000161790555f80f35b346101335760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101335773ffffffffffffffffffffffffffffffffffffffff610280610986565b165f526001602052602060405f2054604051908152f35b346101335760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101335773ffffffffffffffffffffffffffffffffffffffff6102e3610986565b165f52600160205260405f2060243581540190555f80f35b34610133575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013357602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346101335760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013357610382610986565b60243573ffffffffffffffffffffffffffffffffffffffff8116808203610133576044359173ffffffffffffffffffffffffffffffffffffffff6002541633036106cb5781159283158061068b575b610663578061065d5750815f52600160205260405f2054925b825f52600160205260405f208054908582039182116106305755156104e65750505f80808084865af11561042557602091505b604051908152f35b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b604060205f604473ffffffffffffffffffffffffffffffffffffffff959782809686519889937fa9059cbb0000000000000000000000000000000000000000000000000000000085521660048401528960248401525af13d15601f3d11600185511416171692828152826020820152015215610565576020915061041d565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b926103ea565b7fc79e5948000000000000000000000000000000000000000000000000000000005f5260045ffd5b508273ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c16146103d1565b7f48f5c3ed000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101335760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101335761072b366109a9565b60a4359062ffffff8216908183036101335773ffffffffffffffffffffffffffffffffffffffff6002541633036106cb57623e900062fff0008416106103e9610fff85161016156108425760a0902091825f52600360205260405f20918254928373ffffffffffffffffffffffffffffffffffffffff161561081a577fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f99379ffffff000000000000000000000000000000000000000000000060209460b81b16907fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16179055604051908152a2005b7f486aa307000000000000000000000000000000000000000000000000000000005f5260045ffd5b507fa7abe2f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346101335760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610133576004358015158091036101335760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00600454169116176004555f80f35b346101335760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101335773ffffffffffffffffffffffffffffffffffffffff610927610986565b610935825f54163314610ab3565b16807fffffffffffffffffffffffff000000000000000000000000000000000000000060025416176002557fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc5f80a2005b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361013357565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a0910112610133576040519060a0820182811067ffffffffffffffff821117610a86576040528160043573ffffffffffffffffffffffffffffffffffffffff8116810361013357815260243573ffffffffffffffffffffffffffffffffffffffff8116810361013357602082015260443562ffffff811681036101335760408201526064358060020b81036101335760608201526084359073ffffffffffffffffffffffffffffffffffffffff821682036101335760800152565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b15610aba57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152fdfea164736f6c634300081a000aa164736f6c634300081a000a","sourceMap":"765:7001:124:-:0;;;;;;3166:4:2;2031:24:152;;3166:4:2;2031:24:152;;;3166:4:2;2031:24:152;3166:4:2;2031:24:152;;1038:4:12;2031:24:152;;;1038:4:12;2031:24:152;;2461:87;765:7001:124;;:::i;:::-;2495:4:152;;765:7001:124;;2512:3:152;2461:87;;;765:7001:124;2533:4:152;765:7001:124;2461:87:152;;765:7001:124;2461:87:152;765:7001:124;;;;2461:87:152;765:7001:124;;;2461:87:152;765:7001:124;2533:4:152;765:7001:124;;2031:24:152;765:7001:124;;2031:24:152;2461:87;765:7001:124;;:::i;:::-;2495:4:152;;765:7001:124;;2512:3:152;2461:87;2617:88;;765:7001:124;2689:5:152;;765:7001:124;2617:88:152;;765:7001:124;2617:88:152;765:7001:124;;;;2617:88:152;765:7001:124;;;2617:88:152;765:7001:124;2689:5:152;;765:7001:124;;2031:24:152;765:7001:124;;;;2461:87:152;765:7001:124;;;;;;;;;;;;;;;;;;;3166:4:2;2031:24:152;;;-1:-1:-1;;2461:87:152;2751:88;;765:7001:124;;;356:29:150;2751:88:152;;;2031:24;;;2751:88;2031:24;;-1:-1:-1;;2031:24:152;;;;;;;;765:7001:124;2031:24:152;;;-1:-1:-1;;;;;;2031:24:152;;;;;;;;3541:2;2031:24;;;;3541:2;2031:24;;;3587:36;2031:24;;;;;-1:-1:-1;;;;;2031:24:152;;;;765:7001:124;;;;;;;;;;;;2031:24:152;765:7001:124;;;;;2031:24:152;765:7001:124;;;;;;;;;;;;-1:-1:-1;;;;;765:7001:124;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c9081621c480014613c1f575080630107751d14613687578063045ee99c146133a35780630a9254e414612daa5780631ed7831c14612d015780631fa58791146129d55780632ade3880146127a957806339cd2013146127485780633e5e3c231461269f5780633f7286f4146125f65780634a34338914612163578063542524dd1461211657806354a89cef14611fbe57806366d9a9a014611e6357806385226c8114611dbb5780638bd7d3af14611b735780638d9c624314611451578063916a17c61461137c57806393ad73ed14611317578063944b94c614611009578063b0464fdc14610f34578063b1a73b8a14610ecc578063b5508aa914610e24578063ba414fa614610de1578063c7b8e15d14610da3578063cff8f458146107b4578063defcbca01461025e578063e20c9f71146101a55763fa7626d40361000f57346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257602060ff601f54166040519015158152f35b80fd5b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106102325761022e856102228187038261416e565b60405191829182613ede565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161020b565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2578073ffffffffffffffffffffffffffffffffffffffff6029541673ffffffffffffffffffffffffffffffffffffffff602a5416604051916102cd83614152565b82526020820152610bb86040820152603c606082015281608082015273ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60355416813b156107af5783916024839260405194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af190811561076557839161079a575b505073ffffffffffffffffffffffffffffffffffffffff60445416803b15610749578260405180927fb0e277b4000000000000000000000000000000000000000000000000000000008252818381600481016c0100000000000000000000000060a060c0830192610423818d73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b015203925af1908115610765578391610785575b505073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561074957604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152828160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610765578391610770575b505073ffffffffffffffffffffffffffffffffffffffff60445416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610749576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190525f602483018190526044830152606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152828160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af190811561076557839161074d575b505060a081207fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f96020604051623e83e88152a273ffffffffffffffffffffffffffffffffffffffff6044541690813b156107495761065f60c484928360405195869485937f7e87ce7d000000000000000000000000000000000000000000000000000000008552600485019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b623e83e860a48401525af1801561072957610734575b50506040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f7365742070726f746f636f6c2066656500000000000000000000000000000000604482015260208160648185737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610729576106fd575080f35b61071e9060203d602011610722575b610716818361416e565b8101906141db565b5080f35b503d61070c565b6040513d84823e3d90fd5b8161073e9161416e565b6101a257805f610675565b5050fd5b816107579161416e565b61076257815f610584565b50fd5b6040513d85823e3d90fd5b8161077a9161416e565b61076257815f6104c4565b8161078f9161416e565b61076257815f610437565b816107a49161416e565b61076257815f610368565b505050fd5b50346101a2577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360160c08112610d9f5760a0136101a257806040516107f981614152565b610801614042565b815260243573ffffffffffffffffffffffffffffffffffffffff8116810361074957602082015260443562ffffff811681036107495760408201526064358060020b810361074957606082015260843573ffffffffffffffffffffffffffffffffffffffff8116810361074957608082015260a4359062ffffff82168083036107af5773ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60355416813b15610d9b5785916024839260405194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af1908115610d3b578591610d86575b505073ffffffffffffffffffffffffffffffffffffffff60445416803b15610d46578460405180927fb0e277b4000000000000000000000000000000000000000000000000000000008252818381886c0100000000000000000000000060a0600484016109be8160c081019573ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b015203925af1908115610d3b578591610d71575b505073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d4657604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152848160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610d3b578591610d5c575b50506103e8610fff8416118015610d4a575b15610bda57604051907fa7abe2f7000000000000000000000000000000000000000000000000000000006020830152602482015260248152610ab460448261416e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156107af5783610b0f91604051809381927ff28dceb3000000000000000000000000000000000000000000000000000000008352602060048401526024830190613f2d565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610bcf578491610bba575b505073ffffffffffffffffffffffffffffffffffffffff6044541691823b156107af57610b96928492836040518096819582947f7e87ce7d000000000000000000000000000000000000000000000000000000008452600484016146bc565b03925af1801561072957610ba957505080f35b81610bb39161416e565b6101a25780f35b81610bc49161416e565b61074957825f610b37565b6040513d86823e3d90fd5b73ffffffffffffffffffffffffffffffffffffffff60445416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d46576040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190525f602483018190526044830152606482015273ffffffffffffffffffffffffffffffffffffffff919091166084820152848160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610d3b578591610d26575b50507fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f9602060a0842092604051908152a273ffffffffffffffffffffffffffffffffffffffff6044541691823b156107af57610b96928492836040518096819582947f7e87ce7d000000000000000000000000000000000000000000000000000000008452600484016146bc565b81610d309161416e565b6107af57835f610c98565b6040513d87823e3d90fd5b8480fd5b506103e8610fff84600c1c1611610a71565b81610d669161416e565b6107af57835f610a5f565b81610d7b9161416e565b6107af57835f6109d2565b81610d909161416e565b6107af57835f610903565b8580fd5b5080fd5b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760206040516401000276a48152f35b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576020610e1a6145e3565b6040519015158152f35b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257601954610e5f816141ea565b91610e6d604051938461416e565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310610eaf576040518061022e8782613fc5565b600160208192610ebe85614202565b815201920192019190610e9a565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257606060ff6026541660275473ffffffffffffffffffffffffffffffffffffffff6028541690604051921515835260208301526040820152f35b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257601c54610f6f816141ea565b91610f7d604051938461416e565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b838310610fbf576040518061022e8782614065565b60026020600192604051610fd281614109565b73ffffffffffffffffffffffffffffffffffffffff8654168152610ff7858701614305565b83820152815201920192019190610faa565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2578073ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60295416813b156107495782916044839260405194859384927f9612fe6a0000000000000000000000000000000000000000000000000000000084526004840152606460248401525af1801561072957611302575b5073ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff602954166040517f97e8cd4e000000000000000000000000000000000000000000000000000000008152816004820152602081602481865afa908115610bcf5784916112ca575b5061113c906147ba565b813b156107495782916044839260405194859384927f9612fe6a000000000000000000000000000000000000000000000000000000008452600484015260c860248401525af18015610729576112b5575b5073ffffffffffffffffffffffffffffffffffffffff60445416602073ffffffffffffffffffffffffffffffffffffffff602954166024604051809481937f97e8cd4e00000000000000000000000000000000000000000000000000000000835260048301525afa90811561072957829161127c575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561076257604051907f98296c54000000000000000000000000000000000000000000000000000000008252600482015261012c60248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561072957610ba95750f35b9150506020813d6020116112ad575b816112986020938361416e565b810103126112a9578190515f611203565b5f80fd5b3d915061128b565b816112bf9161416e565b6101a257805f61118d565b9350506020833d6020116112fa575b816112e66020938361416e565b810103126112a95761113c84935190611132565b3d91506112d9565b8161130c9161416e565b6101a257805f6110bc565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576020805460215460225460408051600285810b825260189590951c90940b94840194909452928201526060810191909152608090f35b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257601d546113b7816141ea565b916113c5604051938461416e565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b838310611407576040518061022e8782614065565b6002602060019260405161141a81614109565b73ffffffffffffffffffffffffffffffffffffffff865416815261143f858701614305565b838201528152019201920191906113f2565b50346101a25760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257611489614042565b602435908260443592809273ffffffffffffffffffffffffffffffffffffffff602954169073ffffffffffffffffffffffffffffffffffffffff60445416926114d284846148e8565b871115737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d9b57604051907f4c63e56200000000000000000000000000000000000000000000000000000000825260048201528581602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115611a43578691611b5e575b505061155282846148e8565b9261155d85826148e8565b94803b15611b5a576040517f9612fe6a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9290921660048301526024820189905286908290604490829084905af1908115611a43578691611b45575b505073ffffffffffffffffffffffffffffffffffffffff604454169073ffffffffffffffffffffffffffffffffffffffff60295416906040517f97e8cd4e000000000000000000000000000000000000000000000000000000008152826004820152602081602481875afa8015611b3a578a918991611aff575b509061165091614831565b15611a7c575b5073ffffffffffffffffffffffffffffffffffffffff60355416813b15610d9b5785916024839260405194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af1908115610d3b578591611a67575b505073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d4657604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152848160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610d3b578591611a4e575b505085851192836119bb575b73ffffffffffffffffffffffffffffffffffffffff6044541693602073ffffffffffffffffffffffffffffffffffffffff60295416956064604051809981937f8161b87400000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff89169a8b600485015260248401528c60448401525af19586156119b057899661197c575b50156117fb578780f35b60445473ffffffffffffffffffffffffffffffffffffffff169384036118fa5750906118426118479273ffffffffffffffffffffffffffffffffffffffff602954166148e8565b614831565b602073ffffffffffffffffffffffffffffffffffffffff602954166024604051809481937f97e8cd4e00000000000000000000000000000000000000000000000000000000835260048301525afa908115610d3b5785916118c6575b50611842906118b5846118bb966145a9565b90614831565b5f8080808080808780f35b90506020813d6020116118f2575b816118e16020938361416e565b810103126112a957516118bb6118a3565b3d91506118d4565b9161191e73ffffffffffffffffffffffffffffffffffffffff6029541692836148e8565b86820180921161194f576119448561194a959461193f6118b5958b95614831565b6148e8565b926145a9565b611847565b6024897f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b9095506020813d6020116119a8575b816119986020938361416e565b810103126112a95751945f6117f1565b3d915061198b565b6040513d8b823e3d90fd5b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d46576040517ff4844814000000000000000000000000000000000000000000000000000000008152858160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115611a43578691611a2e575b5050611756565b81611a389161416e565b610d4657845f611a27565b6040513d88823e3d90fd5b81611a589161416e565b611a6357835f61174a565b8380fd5b81611a719161416e565b611a6357835f6116bd565b909550604051907f97e8cd4e0000000000000000000000000000000000000000000000000000000082526004820152602081602481895afa908115610d3b578591611aca575b50945f611656565b9450506020843d602011611af7575b81611ae66020938361416e565b810103126112a9578693515f611ac2565b3d9150611ad9565b985050506020873d602011611b32575b81611b1c6020938361416e565b810103126112a957611650898b98519091611645565b3d9150611b0f565b6040513d8a823e3d90fd5b81611b4f9161416e565b610d4657845f6115cb565b8680fd5b81611b689161416e565b610d4657845f611546565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2578073ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60355416813b156107495782916024839260405194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af1801561072957611da6575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101a257806040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f48f5c3ed000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561072957611d91575b5073ffffffffffffffffffffffffffffffffffffffff60445416803b156107625781809160c4604051809481937f7e87ce7d000000000000000000000000000000000000000000000000000000008352611d7b6004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b600160a48401525af1801561072957610ba95750f35b81611d9b9161416e565b6101a257805f611cb1565b81611db09161416e565b6101a257805f611c1f565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257601a54611df6816141ea565b91611e04604051938461416e565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310611e46576040518061022e8782613fc5565b600160208192611e5585614202565b815201920192019190611e31565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257601b54611e9e816141ea565b611eab604051918261416e565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b838310611f8357868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210611f1857505050500390f35b91936020611f73827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083611f638351604084526040840190613f2d565b9201519084818403910152613f70565b9601920192018594939192611f09565b60026020600192604051611f9681614109565b611f9f86614202565b8152611fac858701614305565b83820152815201920192019190611edb565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101a257806040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f48f5c3ed000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561072957612101575b50602073ffffffffffffffffffffffffffffffffffffffff60445416606473ffffffffffffffffffffffffffffffffffffffff6029541660405194859384927f8161b8740000000000000000000000000000000000000000000000000000000084526001600485015260248401528160448401525af18015610729576106fd575080f35b8161210b9161416e565b6101a257805f61207d565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257602060405173fffd8963efd1fc6a506488495d951d5263988d258152f35b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2578073ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60295416813b156107495782916044839260405194859384927f9612fe6a0000000000000000000000000000000000000000000000000000000084526004840152606460248401525af18015610729576125e1575b5073ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60295416604051907f97e8cd4e0000000000000000000000000000000000000000000000000000000082526004820152602081602481855afa9081156107655783916125a9575b50612296906147ba565b73ffffffffffffffffffffffffffffffffffffffff60355416813b156107495782916024839260405194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af1801561072957612594575b5073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561076257604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156107295761257f575b50602073ffffffffffffffffffffffffffffffffffffffff60445416606473ffffffffffffffffffffffffffffffffffffffff6029541660405194859384927f8161b87400000000000000000000000000000000000000000000000000000000845230600485015260248401528360448401525af1801561072957612550575b5073ffffffffffffffffffffffffffffffffffffffff60445416816024602073ffffffffffffffffffffffffffffffffffffffff6029541693604051928380927f97e8cd4e0000000000000000000000000000000000000000000000000000000082528760048301525afa90811561072957829161251b575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d9f57604051907f98296c5400000000000000000000000000000000000000000000000000000000825260048201528160248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561072957612506575b506125036124fe30846148e8565b6147ba565b80f35b816125109161416e565b610d9f57815f6124f0565b9150506020813d602011612548575b816125376020938361416e565b810103126112a9578290515f61247b565b3d915061252a565b6020813d602011612577575b816125696020938361416e565b810103126112a95751612402565b3d915061255c565b816125899161416e565b6101a257805f612382565b8161259e9161416e565b6101a257805f6122f9565b9250506020823d6020116125d9575b816125c56020938361416e565b810103126112a9576122968392519061228c565b3d91506125b8565b816125eb9161416e565b6101a257805f612216565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b8181106126735761022e856102228187038261416e565b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161265c565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b81811061271c5761022e856102228187038261416e565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201612705565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760235460245460255460408051600285810b825260189590951c90940b60208501528301919091526060820152608090f35b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257601e546127e4816141ea565b6127f1604051918261416e565b818152601e83526020810191837f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350845b83831061293f5786858760405192839260208401906020855251809152604084019160408260051b8601019392815b83831061285d5786860387f35b9193957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09086929496030183528551906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b850101940192855b8281106128f657505050505060208060019297019301930190928695949293612850565b9091929394602080612932837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087600196030189528951613f2d565b97019501939291016128d2565b60405161294b81614109565b73ffffffffffffffffffffffffffffffffffffffff8354168152600183018054612974816141ea565b91612982604051938461416e565b8183528a526020808b20908b9084015b8382106129b8575050505060019282602092836002950152815201920192019190612821565b6001602081926129c786614202565b815201930191019091612992565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2578073ffffffffffffffffffffffffffffffffffffffff604454166040517ff02de3b2000000000000000000000000000000000000000000000000000000008152602081600481855afa801561076557612a64918491612ce2575b50614724565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561076257604051907f81bad6f3000000000000000000000000000000000000000000000000000000008252600160048301528260248301528260448301528260648301526084820152818160a48183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561072957612ccd575b5073ffffffffffffffffffffffffffffffffffffffff6035541660405190807fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc8480a273ffffffffffffffffffffffffffffffffffffffff60445416803b156107af5760248385819381957f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af1801561072957612cb8575b506004602073ffffffffffffffffffffffffffffffffffffffff60445416604051928380927ff02de3b20000000000000000000000000000000000000000000000000000000082525afa908115610729578291612c89575b5073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156107495773ffffffffffffffffffffffffffffffffffffffff604051927f515361f600000000000000000000000000000000000000000000000000000000845216600483015260248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561072957610ba95750f35b612cab915060203d602011612cb1575b612ca3818361416e565b8101906141af565b5f612be4565b503d612c99565b81612cc29161416e565b6101a257805f612b8c565b81612cd79161416e565b6101a257805f612aec565b612cfb915060203d602011612cb157612ca3818361416e565b5f612a5e565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110612d7e5761022e856102228187038261416e565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201612d67565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257604051610b778082019082821067ffffffffffffffff83111761337657908291615cbc8339039082f080156133695773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006044541617604455604051612e5381614109565b600d815281602082017f666565436f6e74726f6c6c6572000000000000000000000000000000000000008152604051600d6020820192835e82602d820152600d8152612ea0602d8261416e565b519020604051907fffa186490000000000000000000000000000000000000000000000000000000082526004820152602081602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa90811561072957829161334a575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d9f578173ffffffffffffffffffffffffffffffffffffffff612f749260405193849283927fc657c7180000000000000000000000000000000000000000000000000000000084521696876004840152604060248401526044830190613f2d565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561072957613335575b50507fffffffffffffffffffffffff00000000000000000000000000000000000000006035541617603555606090604051612fd560608261416e565b6002815260208101906040368337611325614997845b60ff8116600281101561319b5760405184810181811067ffffffffffffffff82111761316e578190601260406130916130588e8b8b88398086528501604090600481527f544553540000000000000000000000000000000000000000000000000000000060208201520190565b8481036020860152604090600481527f544553540000000000000000000000000000000000000000000000000000000060208201520190565b920152039088f0801561316357816130cd9173ffffffffffffffffffffffffffffffffffffffff6130c381958a6148a7565b91169052866148a7565b5116803b15611b5a578680916044604051809481937f40c10f190000000000000000000000000000000000000000000000000000000083523060048401527f800000000000000000000000000000000000000000000000000000000000000060248401525af180156131635790879161314e575b505060010160ff16612feb565b816131589161416e565b610d9b57855f613141565b6040513d89823e3d90fd5b6024897f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b868587815115613308578073ffffffffffffffffffffffffffffffffffffffff91505116908051600110156133085773ffffffffffffffffffffffffffffffffffffffff83928160406020940151168082105f146133005782905b167fffffffffffffffffffffffff0000000000000000000000000000000000000000602a541617602a5516807fffffffffffffffffffffffff00000000000000000000000000000000000000006029541617602955604473ffffffffffffffffffffffffffffffffffffffff81541660405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845260048401527f800000000000000000000000000000000000000000000000000000000000000060248401525af18015610729576132cb575080f35b6020813d6020116132f8575b816132e46020938361416e565b81010312610d9f5751801515036101a25780f35b3d91506132d7565b9082906131f6565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b8161333f9161416e565b610d9f57815f612f99565b613363915060203d602011612cb157612ca3818361416e565b5f612efa565b50604051903d90823e3d90fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b50346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576004356024358273ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff6029541690803b15613633576040517f9612fe6a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9290921660048301526024820184905282908290604490829084905af1801561072957613672575b5073ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60295416906040517f97e8cd4e000000000000000000000000000000000000000000000000000000008152826004820152602081602481855afa8015610bcf5785918591613637575b50906134fa91614831565b803b15613633576040517f9612fe6a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9290921660048301526024820185905282908290604490829084905af180156107295761361e575b505073ffffffffffffffffffffffffffffffffffffffff6044541691602073ffffffffffffffffffffffffffffffffffffffff602954166024604051809681937f97e8cd4e00000000000000000000000000000000000000000000000000000000835260048301525afa918215610bcf5784926135e8575b61250393500190614831565b91506020833d602011613616575b816136036020938361416e565b810103126112a9576125039251916135dc565b3d91506135f6565b816136289161416e565b61363357825f613564565b8280fd5b945050506020833d60201161366a575b816136546020938361416e565b810103126112a9576134fa8487945190916134ef565b3d9150613647565b8161367c9161416e565b61363357825f613477565b50346101a257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25780623e83e973ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60355416813b156107af5783916024839260405194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af1908115610765578391613c0a575b505073ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561074957604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152828160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610765578391613bf5575b50506040517fa7abe2f70000000000000000000000000000000000000000000000000000000060208201528160248201526024815261380760448261416e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610749578261386291604051809381927ff28dceb3000000000000000000000000000000000000000000000000000000008352602060048401526024830190613f2d565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610765578391613be0575b505073ffffffffffffffffffffffffffffffffffffffff6044541690813b1561074957829160c4839260405194859384927f7e87ce7d0000000000000000000000000000000000000000000000000000000084526139586004850173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b60a48401525af1801561072957613bcb575b505080623e93e873ffffffffffffffffffffffffffffffffffffffff60355416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561074957604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152828160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610765578391613bb6575b50506040517fa7abe2f700000000000000000000000000000000000000000000000000000000602082015281602482015260248152613a3c60448261416e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156107495782613a9791604051809381927ff28dceb3000000000000000000000000000000000000000000000000000000008352602060048401526024830190613f2d565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1908115610765578391613ba1575b505073ffffffffffffffffffffffffffffffffffffffff6044541690813b1561074957829160c4839260405194859384927f7e87ce7d000000000000000000000000000000000000000000000000000000008452613b8d6004850173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b60a48401525af1801561072957610ba95750f35b81613bab9161416e565b61076257815f613abf565b81613bc09161416e565b61076257815f6139fc565b81613bd59161416e565b6101a257805f61396a565b81613bea9161416e565b61076257815f61388a565b81613bff9161416e565b61076257815f6137c7565b81613c149161416e565b61076257815f61373a565b9050346112a9575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126112a95760208160048173ffffffffffffffffffffffffffffffffffffffff604454167ff02de3b20000000000000000000000000000000000000000000000000000000082525afa8015613ed357613ca9915f91612ce25750614724565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112a9576040517fca669fa7000000000000000000000000000000000000000000000000000000008152600160048201525f8160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015613ed357613ec0575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101a257806040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152818160648183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561072957613eab575b5073ffffffffffffffffffffffffffffffffffffffff6044541673ffffffffffffffffffffffffffffffffffffffff60355416813b156107495782916024839260405194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af1801561072957613e96575b50506004602073ffffffffffffffffffffffffffffffffffffffff60445416604051928380927ff02de3b20000000000000000000000000000000000000000000000000000000082525afa801561072957612503918391612ce25750614724565b81613ea09161416e565b6101a257805f613e35565b81613eb59161416e565b6101a257805f613db8565b613ecc91505f9061416e565b5f80613d19565b6040513d5f823e3d90fd5b60206040818301928281528451809452019201905f5b818110613f015750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101613ef4565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b818110613f8d5750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101613f80565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310613ff757505050505090565b9091929394602080614033837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951613f2d565b97019301930191939290613fe8565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036112a957565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061409757505050505090565b90919293946020806140fa837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff815116845201519181858201520190613f70565b97019301930191939290614088565b6040810190811067ffffffffffffffff82111761412557604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff82111761412557604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761412557604052565b908160209103126112a9575173ffffffffffffffffffffffffffffffffffffffff811681036112a95790565b908160209103126112a9575190565b67ffffffffffffffff81116141255760051b60200190565b90604051915f8154908160011c92600183169283156142fb575b6020851084146142ce57848752869390811561428e575060011461424a575b506142489250038361416e565b565b90505f9291925260205f20905f915b818310614272575050906020614248928201015f61423b565b6020919350806001915483858901015201910190918492614259565b602093506142489592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f61423b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f169361421c565b90604051918281549182825260208201905f5260205f20925f905b80600783011061451c576142489454918181106144e6575b8181106144b0575b81811061447a575b818110614444575b81811061440e575b8181106143d8575b8181106143a3575b10614376575b50038361416e565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f61436e565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b168152019301614368565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b168152019301614360565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b168152019301614358565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b168152019301614350565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b168152019301614348565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b168152019301614340565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b168152019301614338565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920185929391614320565b919082039182116145b657565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60085460ff1680156145f25790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115613ed3575f9161468a575b50151590565b90506020813d6020116146b4575b816146a56020938361416e565b810103126112a957515f614684565b3d9150614698565b90929162ffffff60a09161471e8460c081019773ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b16910152565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112a95773ffffffffffffffffffffffffffffffffffffffff604051917f515361f60000000000000000000000000000000000000000000000000000000083521660048201525f60248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015613ed3576147b05750565b5f6142489161416e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112a957604051907f98296c540000000000000000000000000000000000000000000000000000000082526004820152606460248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015613ed3576147b05750565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112a957604051917f98296c54000000000000000000000000000000000000000000000000000000008352600483015260248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015613ed3576147b05750565b80518210156148bb5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff168061490857503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115613ed3575f91614967575090565b90506020813d60201161498e575b816149826020938361416e565b810103126112a9575190565b3d915061497556fe60e0806040523461040657611325803803809161001c828561040a565b83398101906060818303126104065780516001600160401b038111610406578261004791830161042d565b60208201519092906001600160401b0381116104065760409161006b91840161042d565b91015160ff811681036104065782516001600160401b038111610337576100925f54610482565b601f81116103b7575b506020601f821160011461035657819293945f9261034b575b50508160011b915f199060031b1c1916175f555b81516001600160401b038111610337576100e3600154610482565b601f81116102d4575b50602092601f821160011461027357928192935f92610268575b50508160011b915f199060031b1c1916176001555b6080524660a0526040515f905f54918161013484610482565b9182825260208201946001811690815f1461024c5750600114610202575b61015e9250038261040a565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a081526101d260c08261040a565b51902060c052604051610e4a90816104bb823960805181610865015260a05181610ca8015260c05181610cce0152f35b505f80805290915f805160206113058339815191525b81831061023057505090602061015e92820101610152565b6020919350806001915483858801015201910190918392610218565b60ff191686525061015e92151560051b82016020019050610152565b015190505f80610106565b601f1982169360015f52805f20915f5b8681106102bc57508360019596106102a4575b505050811b0160015561011b565b01515f1960f88460031b161c191690555f8080610296565b91926020600181928685015181550194019201610283565b60015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f830160051c8101916020841061032d575b601f0160051c01905b81811061032257506100ec565b5f8155600101610315565b909150819061030c565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100b4565b601f198216905f8052805f20915f5b81811061039f57509583600195969710610387575b505050811b015f556100c8565b01515f1960f88460031b161c191690555f808061037a565b9192602060018192868b015181550194019201610365565b5f80525f80516020611305833981519152601f830160051c810191602084106103fc575b601f0160051c01905b8181106103f1575061009b565b5f81556001016103e4565b90915081906103db565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761033757604052565b81601f82011215610406578051906001600160401b0382116103375760405192610461601f8401601f19166020018561040a565b8284526020838301011161040657815f9260208093018386015e8301015290565b90600182811c921680156104b0575b602083101461049c57565b634e487b7160e01b5f52602260045260245ffd5b91607f169161049156fe60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610a8b578063095ea7b3146109e857806318160ddd146109ad57806323b872dd14610889578063313ce5671461082e5780633644e515146107ee57806340c10f191461071f57806370a08231146106bc5780637ecebe001461065957806395d89b41146105435780639dc29fac146104a4578063a9059cbb146103f0578063d505accf146101435763dd62ed3e146100b3575f80fd5b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576100ea610c52565b73ffffffffffffffffffffffffffffffffffffffff610107610c75565b91165f52600460205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b3461013f5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f5761017a610c52565b610182610c75565b6044356064359260843560ff811680910361013f574285106103925760805f9160209373ffffffffffffffffffffffffffffffffffffffff6101c2610ca5565b91169687855260058652604085209889549960018b0190556040519073ffffffffffffffffffffffffffffffffffffffff888301937f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c985528b6040850152169a8b6060840152898784015260a083015260c082015260c0815261024660e082610b9c565b51902060405190868201927f19010000000000000000000000000000000000000000000000000000000000008452602283015260428201526042815261028d606282610b9c565b519020906040519182528482015260a435604082015260c435606082015282805260015afa156103875773ffffffffffffffffffffffffffffffffffffffff5f51168015158061037e575b15610320577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916020915f526004825260405f20855f5282528060405f2055604051908152a3005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152fd5b508281146102d8565b6040513d5f823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152fd5b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57610427610c52565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600360205260405f20610457848254610c98565b90551690815f52600360205260405f208181540190556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3602060405160018152f35b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f575f6104dc610c52565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff6024359316928385526003825260408520610530828254610c98565b90558060025403600255604051908152a3005b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576040515f60015461058181610b4b565b808452906001811690811561061757506001146105b9575b6105b5836105a981850382610b9c565b60405191829182610c0a565b0390f35b60015f9081527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b8082106105fd575090915081016020016105a9610599565b9192600181602092548385880101520191019092916105e5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506105a99050610599565b3461013f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f5773ffffffffffffffffffffffffffffffffffffffff6106a5610c52565b165f526005602052602060405f2054604051908152f35b3461013f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f5773ffffffffffffffffffffffffffffffffffffffff610708610c52565b165f526003602052602060405f2054604051908152f35b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57610756610c52565b602435906002548281018091116107c157602073ffffffffffffffffffffffffffffffffffffffff5f937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9360025516938484526003825260408420818154019055604051908152a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576020610826610ca5565b604051908152f35b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461013f5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576108c0610c52565b6108c8610c75565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff80604435951693845f526004835260405f208233165f52835260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610986575b5050845f526003835260405f2061095f878254610c98565b90551693845f526003825260405f20818154019055604051908152a3602060405160018152f35b61098f91610c98565b855f526004845260405f208333165f52845260405f20558686610947565b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576020600254604051908152f35b3461013f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f57610a1f610c52565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600460205260405f208282165f526020528260405f205560405192835216907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b3461013f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013f576040515f8054610ac881610b4b565b80845290600181169081156106175750600114610aef576105b5836105a981850382610b9c565b5f8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b808210610b31575090915081016020016105a9610599565b919260018160209254838588010152019101909291610b19565b90600182811c92168015610b92575b6020831014610b6557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610b5a565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bdd57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361013f57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361013f57565b919082039182116107c157565b467f000000000000000000000000000000000000000000000000000000000000000003610cf0577f000000000000000000000000000000000000000000000000000000000000000090565b6040515f905f549181610d0284610b4b565b9182825260208201946001811690815f14610e035750600114610da6575b610d2c92500382610b9c565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a08152610da060c082610b9c565b51902090565b505f80805290917f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818310610de7575050906020610d2c92820101610d20565b6020919350806001915483858801015201910190918392610dcf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016865250610d2c92151560051b82016020019050610d2056fea164736f6c634300081a000a290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360808060405234604d575f80546001600160a01b031916339081178255907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3610b2590816100528239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80632d771389146108db5780632ddb57ff1461086e5780637e87ce7d146106f35780638161b8741461034b5780638da5cb5b146102fb5780639612fe6a1461029757806397e8cd4e14610234578063b0e277b414610188578063f02de3b2146101375763f2fde38b14610087575f80fd5b346101335760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610133577fffffffffffffffffffffffff00000000000000000000000000000000000000006100df610986565b73ffffffffffffffffffffffffffffffffffffffff5f54916101048284163314610ab3565b1691829116175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b5f80fd5b34610133575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013357602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b346101335760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610133576101c0366109a9565b60a4359073ffffffffffffffffffffffffffffffffffffffff821682036101335760a090205f52600360205260405f209081549073ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffff0000000000000000000000000000000000000000161790555f80f35b346101335760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101335773ffffffffffffffffffffffffffffffffffffffff610280610986565b165f526001602052602060405f2054604051908152f35b346101335760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101335773ffffffffffffffffffffffffffffffffffffffff6102e3610986565b165f52600160205260405f2060243581540190555f80f35b34610133575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013357602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346101335760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013357610382610986565b60243573ffffffffffffffffffffffffffffffffffffffff8116808203610133576044359173ffffffffffffffffffffffffffffffffffffffff6002541633036106cb5781159283158061068b575b610663578061065d5750815f52600160205260405f2054925b825f52600160205260405f208054908582039182116106305755156104e65750505f80808084865af11561042557602091505b604051908152f35b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b604060205f604473ffffffffffffffffffffffffffffffffffffffff959782809686519889937fa9059cbb0000000000000000000000000000000000000000000000000000000085521660048401528960248401525af13d15601f3d11600185511416171692828152826020820152015215610565576020915061041d565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b926103ea565b7fc79e5948000000000000000000000000000000000000000000000000000000005f5260045ffd5b508273ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c16146103d1565b7f48f5c3ed000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101335760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101335761072b366109a9565b60a4359062ffffff8216908183036101335773ffffffffffffffffffffffffffffffffffffffff6002541633036106cb57623e900062fff0008416106103e9610fff85161016156108425760a0902091825f52600360205260405f20918254928373ffffffffffffffffffffffffffffffffffffffff161561081a577fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f99379ffffff000000000000000000000000000000000000000000000060209460b81b16907fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16179055604051908152a2005b7f486aa307000000000000000000000000000000000000000000000000000000005f5260045ffd5b507fa7abe2f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346101335760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610133576004358015158091036101335760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00600454169116176004555f80f35b346101335760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101335773ffffffffffffffffffffffffffffffffffffffff610927610986565b610935825f54163314610ab3565b16807fffffffffffffffffffffffff000000000000000000000000000000000000000060025416176002557fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc5f80a2005b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361013357565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a0910112610133576040519060a0820182811067ffffffffffffffff821117610a86576040528160043573ffffffffffffffffffffffffffffffffffffffff8116810361013357815260243573ffffffffffffffffffffffffffffffffffffffff8116810361013357602082015260443562ffffff811681036101335760408201526064358060020b81036101335760608201526084359073ffffffffffffffffffffffffffffffffffffffff821682036101335760800152565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b15610aba57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152fdfea164736f6c634300081a000aa164736f6c634300081a000a","sourceMap":"765:7001:124:-:0;;;;;;;;;;-1:-1:-1;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1016:26:12;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2723:18:5;765:7001:124;;;;;;;2723:18:5;765:7001:124;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;1590:14:0;;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2307:9;765:7001;;;2318:9;765:7001;;;;;;;;:::i;:::-;;;2299:59;;;765:7001;2329:4;765:7001;2299:59;;765:7001;2335:2;2299:59;;;765:7001;2299:59;;;;765:7001;;2368:12;765:7001;;;2406:13;1590:14:0;765:7001:124;2368:52;;;;;765:7001;;2368:52;765:7001;;;;2368:52;;;;;765:7001;2368:52;;765:7001;2368:52;;765:7001;2368:52;;;;;;;;;;;765:7001;;;;2368:12;765:7001;;2491:52;;;;;765:7001;;;2491:52;;765:7001;2491:52;;;;;765:7001;2491:52;;765:7001;280:29:150;;;;;;;;765:7001:124;280:29:150;;;;;;765:7001:124;1046:19;;280:29:150;;;;;765:7001:124;280:29:150;;;1046:19:124;765:7001;280:29:150;;;;765:7001:124;280:29:150;;;1046:19:124;280:29:150;;;;765:7001:124;;280:29:150;;;765:7001:124;280:29:150;;765:7001:124;280:29:150;;1046:19:124;280:29:150;;;765:7001:124;2491:52;;;;;;;;;;;;;765:7001;1590:14:0;;765:7001:124;2406:13;1590:14:0;765:7001:124;;2553:23;;;;765:7001;;2553:23;765:7001;2553:23;;765:7001;2553:23;;765:7001;2553:23;;2368:52;2553:23;;765:7001;2553:23;;;;;;;;;;;765:7001;;;;2368:12;765:7001;;;2586:62;;;;765:7001;;;2586:62;;4425:4;765:7001;2586:62;;765:7001;;;-1:-1:-1;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2586:62;;;;;;;;;;;765:7001;357:173:108;;765:7001:124;357:173:108;;2663:60:124;2299:59;765:7001;;1046:19;;;2663:60;765:7001;2368:12;765:7001;;2733:62;;;;;;280:29:150;2733:62:124;765:7001;;;;;2733:62;;;;;765:7001;2733:62;;765:7001;2733:62;;280:29:150;765:7001:124;280:29:150;;;;;;765:7001:124;1046:19;;280:29:150;;;;;765:7001:124;280:29:150;;;1046:19:124;765:7001;280:29:150;;;;765:7001:124;280:29:150;;;1046:19:124;280:29:150;;;;765:7001:124;;280:29:150;;;765:7001:124;280:29:150;;765:7001:124;280:29:150;;1046:19:124;280:29:150;;1046:19:124;280:29:150;;;1046:19:124;2733:62;;;;;;;;765:7001;;;;;;2805:42;;2299:59;765:7001;2805:42;;765:7001;;2368:52;765:7001;;;;2368:12;765:7001;;;2299:59;2805:42;;;;765:7001;2805:42;;;;;;;;765:7001;;;2805:42;;;2299:59;2805:42;2299:59;2805:42;;;;;;;;:::i;:::-;;;;;:::i;:::-;;765:7001;;2805:42;;;;;;765:7001;;;;;;;;;2733:62;;;;;:::i;:::-;765:7001;;2733:62;;;;;765:7001;;;2586:62;;;;;:::i;:::-;765:7001;;2586:62;;;;765:7001;;;2586:62;765:7001;;;;;;;;;2553:23;;;;;:::i;:::-;765:7001;;2553:23;;;;2491:52;;;;;:::i;:::-;765:7001;;2491:52;;;;2368;;;;;:::i;:::-;765:7001;;2368:52;;;;;765:7001;;;;;;;;;;;;;;;;;;-1:-1:-1;765:7001:124;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3887:13;1590:14:0;765:7001:124;3849:52;;;;;765:7001;;;;;;;3849:52;;;;;765:7001;3849:52;;765:7001;3849:52;;765:7001;3849:52;;;;;;;;;;;765:7001;;;;;;;3972:52;;;;;765:7001;;;3972:52;;765:7001;3972:52;;;;;;765:7001;280:29:150;765:7001:124;3972:52;;280:29:150;;;;;;765:7001:124;280:29:150;;;;;;765:7001:124;1046:19;;280:29:150;;;;;765:7001:124;280:29:150;;;1046:19:124;765:7001;280:29:150;;;;765:7001:124;280:29:150;;;1046:19:124;280:29:150;;;;765:7001:124;;280:29:150;;;765:7001:124;280:29:150;;765:7001:124;280:29:150;;1046:19:124;280:29:150;;;765:7001:124;3972:52;;;;;;;;;;;;;765:7001;1590:14:0;;765:7001:124;3887:13;1590:14:0;765:7001:124;;4142:23;;;;765:7001;;4142:23;765:7001;4142:23;;765:7001;4142:23;;765:7001;4142:23;;765:7001;4142:23;;765:7001;4142:23;;;;;;;;;;;765:7001;743:12:58;;4187:4:124;750:5:58;743:12;;4180:11:124;4179:30;;;;765:7001;4175:444;;;765:7001;;4241:79;4264:42;765:7001;4241:79;;;765:7001;4241:79;;1046:19;765:7001;4241:79;;;765:7001;4241:79;;:::i;:::-;765:7001;4225:96;;;;765:7001;1046:19;765:7001;;;4225:96;;;;765:7001;4225:96;;765:7001;;4225:96;;1046:19;765:7001;1046:19;;;;:::i;:::-;4225:96;;;765:7001;4225:96;;;;;;;;;;;4175:444;765:7001;;;;;;4335:45;;;;;;;765:7001;;;;;;4335:45;;;;;;765:7001;4335:45;;765:7001;4335:45;;;:::i;:::-;;;;;;;;;;;4175:444;;765:7001;;4335:45;;;;;:::i;:::-;765:7001;;;;4225:96;;;;;:::i;:::-;765:7001;;4225:96;;;;;765:7001;;;;;;;;;4175:444;765:7001;;;;;4411:62;;;;765:7001;;;4411:62;;4425:4;765:7001;4411:62;;765:7001;;;-1:-1:-1;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4411:62;;;;;;;;;;;4175:444;357:173:108;;4492:57:124;765:7001;;357:173:108;;765:7001:124;;;1046:19;;;4492:57;765:7001;;;;4563:45;;;;;;;765:7001;;;;;;4563:45;;;;;;765:7001;4563:45;;765:7001;4563:45;;;:::i;4411:62::-;;;;;:::i;:::-;765:7001;;4411:62;;;;;765:7001;;;;;;;;;4411:62;765:7001;;;4179:30;765:7001;4187:4;750:5:58;765:7001:124;871:2:58;765:7001:124;;4197:11;4179:30;;4142:23;;;;;:::i;:::-;765:7001;;4142:23;;;;3972:52;;;;;:::i;:::-;765:7001;;3972:52;;;;3849;;;;;:::i;:::-;765:7001;;3849:52;;;;;765:7001;;;;;;;;;;;;;;;;;;;;;;1862:10:64;765:7001:124;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2575:18:5;765:7001:124;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2575:18:5;765:7001:124;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;2711:128:152;765:7001:124;;2711:128:152;765:7001:124;;2711:128:152;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2876:18:5;765:7001:124;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2876:18:5;765:7001:124;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;1590:14:0;;765:7001:124;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6978:12;765:7001;;;7010:9;765:7001;;6978:47;;;;;765:7001;;6978:12;765:7001;;;;6978:47;;;;;765:7001;6978:47;;765:7001;6978:47;;1046:19;7021:3;765:7001;;;;6978:47;;;;;;;;765:7001;;;6978:12;765:7001;;;7010:9;765:7001;;;;;7044:43;;;765:7001;7044:43;;1046:19;765:7001;7044:43;765:7001;7044:43;;;;;;;;;;;;;765:7001;7035:58;;;;:::i;:::-;7104:47;;;;;765:7001;;6978:12;765:7001;;;;7104:47;;;;;765:7001;7104:47;;765:7001;7104:47;;1046:19;7147:3;765:7001;;;;7104:47;;;;;;;;765:7001;;;6978:12;765:7001;;;;7010:9;765:7001;;;;;7170:43;;;;765:7001;7170:43;;765:7001;7170:43;;1046:19;7170:43;;;;;;;;;;;765:7001;2349:24:1;765:7001:124;2349:24:1;;;;765:7001:124;;2349:24:1;765:7001:124;2349:24:1;;765:7001:124;2349:24:1;;765:7001:124;7215:3;765:7001;;;;2349:24:1;;6978:12:124;2349:24:1;765:7001:124;2349:24:1;;;;;;;;765:7001:124;;7170:43;;;;765:7001;7170:43;;765:7001;7170:43;;;;;;765:7001;7170:43;;;:::i;:::-;;;765:7001;;;;;;;7170:43;;;765:7001;-1:-1:-1;765:7001:124;;7170:43;;;-1:-1:-1;7170:43:124;;7104:47;;;;;:::i;:::-;765:7001;;7104:47;;;;7044:43;;;;765:7001;7044:43;;765:7001;7044:43;;;;;;765:7001;7044:43;;;:::i;:::-;;;765:7001;;;;7035:58;765:7001;;;7044:43;;;;;;-1:-1:-1;7044:43:124;;6978:47;;;;;:::i;:::-;765:7001;;6978:47;;;;765:7001;;;;;;;;;;;;2405:143:152;765:7001:124;;2405:143:152;765:7001:124;2405:143:152;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3653:18:5;765:7001:124;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;3653:18:5;765:7001:124;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;1590:14:0;;765:7001:124;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;5528:9;765:7001;;;;;;;5528:42;;;;;:::i;:::-;5513:57;;;765:7001;5503:68;;;;765:7001;;5503:68;765:7001;5503:68;;765:7001;5503:68;;765:7001;5503:68;;765:7001;5503:68;765:7001;5503:68;;;;;;;;;;;765:7001;5615:30;;;;;;:::i;:::-;5685:42;;;;;:::i;:::-;5802:55;;;;;;765:7001;;;5802:55;;765:7001;;;;;;5802:55;;1046:19;765:7001;;;;;;;;;;;;;;;;5802:55;;;;;;;;;;;765:7001;;;;;;;;;5528:9;765:7001;;;;;;5876:43;;;765:7001;5876:43;;1046:19;765:7001;5876:43;765:7001;5876:43;;;;;;;;;;;;;;765:7001;5921:11;;;;;:::i;:::-;5947;5943:94;;765:7001;1590:14:0;765:7001:124;6085:13;1590:14:0;765:7001:124;6047:52;;;;;765:7001;;;;;;;6047:52;;;;;765:7001;6047:52;;765:7001;6047:52;;765:7001;6047:52;;;;;;;;;;;765:7001;1590:14:0;;765:7001:124;6085:13;1590:14:0;765:7001:124;;6109:23;;;;765:7001;;6109:23;765:7001;6109:23;;765:7001;6109:23;;765:7001;6109:23;;765:7001;6109:23;;765:7001;6109:23;;;;;;;;;;;765:7001;6146:20;;;;;6142:68;;;;765:7001;;;;;;;;5528:9;765:7001;;;6245:62;765:7001;;6245:62;;;;765:7001;6245:62;;765:7001;;;6245:62;;765:7001;6245:62;;765:7001;;;;1046:19;765:7001;;;;;6245:62;;;;;;;;;;;765:7001;6322:21;;6318:536;;765:7001;;;6318:536;765:7001;;;;;6363:34;;;;765:7001;;6426:30;6458:22;765:7001;;5528:9;765:7001;;6426:30;:::i;:::-;6458:22;:::i;:::-;765:7001;;5528:9;765:7001;;;;;6730:43;;;;765:7001;6730:43;;765:7001;6730:43;;1046:19;6730:43;;;;;;;;;;;6359:349;6775:20;;;;;6836:6;6775:20;;:::i;:::-;;;:::i;6836:6::-;6318:536;;;;;;;765:7001;;;6730:43;;;765:7001;6730:43;;765:7001;6730:43;;;;;;765:7001;6730:43;;;:::i;:::-;;;765:7001;;;;;6836:6;6730:43;;;;;-1:-1:-1;6730:43:124;;6359:349;765:7001;6529:30;765:7001;5528:9;765:7001;;6529:30;;;:::i;:::-;765:7001;;;;;;;;6620:42;6561:31;6664:28;6561:31;;;6664:28;6561:31;;;;:::i;:::-;6620:42;:::i;:::-;6664:28;;:::i;:::-;6359:349;;765:7001;;2042:49:64;;;;;765:7001:124;2042:49:64;;6245:62:124;;;;765:7001;6245:62;;765:7001;6245:62;;;;;;765:7001;6245:62;;;:::i;:::-;;;765:7001;;;;;6245:62;;;;;;;-1:-1:-1;6245:62:124;;;765:7001;;;;;;;;;6142:68;765:7001;6182:17;;;;765:7001;;;6182:17;;;;765:7001;6182:17;;765:7001;6182:17;;;;;;;;;;;6142:68;;;;;6182:17;;;;;:::i;:::-;765:7001;;6182:17;;;;;765:7001;;;;;;;;;6109:23;;;;;:::i;:::-;765:7001;;6109:23;;;;765:7001;;;;6047:52;;;;;:::i;:::-;765:7001;;6047:52;;;;5943:94;765:7001;;;;;5983:43;765:7001;5983:43;;765:7001;5983:43;;1046:19;765:7001;5983:43;765:7001;5983:43;;;;;;;;;;;;;5943:94;5974:52;5943:94;;;;5983:43;;;;765:7001;5983:43;;765:7001;5983:43;;;;;;765:7001;5983:43;;;:::i;:::-;;;765:7001;;;;;;;5983:43;;;;;;-1:-1:-1;5983:43:124;;5876;;;;;765:7001;5876:43;;765:7001;5876:43;;;;;;765:7001;5876:43;;;:::i;:::-;;;765:7001;;;;5921:11;765:7001;;;;5876:43;;;;;;;-1:-1:-1;5876:43:124;;;765:7001;;;;;;;;;5802:55;;;;;:::i;:::-;765:7001;;5802:55;;;;;765:7001;;;5503:68;;;;;:::i;:::-;765:7001;;5503:68;;;;765:7001;;;;;;;;;;;;;;2933:12;765:7001;;;2971:13;1590:14:0;765:7001:124;2933:52;;;;;765:7001;;2933:52;765:7001;;;;2933:52;;;;;765:7001;2933:52;;765:7001;2933:52;;765:7001;2933:52;;;;;;;;765:7001;2995:53;;765:7001;2995:53;;;;765:7001;;;;2995:53;;3011:36;765:7001;2995:53;;765:7001;2995:53;;2933:52;2995:53;;765:7001;2995:53;;;;;;;;765:7001;;;2933:12;765:7001;;3058:35;;;;;765:7001;;;3058:35;765:7001;;3058:35;;;;765:7001;3058:35;;765:7001;;3058:35;;765:7001;3469:3;1046:19;765:7001;1046:19;;;;765:7001;;;1046:19;;;;765:7001;1046:19;;;765:7001;1046:19;;;;;;765:7001;;1046:19;;;765:7001;1046:19;765:7001;1046:19;;765:7001;1046:19;;;;765:7001;3091:1;765:7001;;;1046:19;3058:35;;;;;;;;765:7001;;2995:53;;;;;:::i;:::-;765:7001;;2995:53;;;;2933:52;;;;;:::i;:::-;765:7001;;2933:52;;;;765:7001;;;;;;;;;;;;3162:18:5;765:7001:124;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;3162:18:5;765:7001:124;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;3346:26:5;765:7001:124;;;;:::i;:::-;;;;;;;:::i;:::-;;;;3346:26:5;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4709:53;;;;765:7001;;;;4709:53;;4725:36;765:7001;4709:53;;765:7001;4709:53;;;;;765:7001;4709:53;;;;;;;;765:7001;;;;4772:12;765:7001;;4772:58;765:7001;4817:9;765:7001;;;;4772:58;;;;;765:7001;4772:58;;4813:1;765:7001;4772:58;;765:7001;4709:53;765:7001;;1046:19;765:7001;4772:12;765:7001;;;4772:58;;;;;;;;765:7001;;;4709:53;;;;;:::i;:::-;765:7001;;4709:53;;;;765:7001;;;;;;;;;;;;;;;2042:49:64;765:7001:124;;;;;;;;;;;;;;;;;4969:12;765:7001;;;5001:9;765:7001;;4969:47;;;;;765:7001;;4969:12;765:7001;;;;4969:47;;;;;765:7001;4969:47;;765:7001;4969:47;;1046:19;5012:3;765:7001;;;;4969:47;;;;;;;;765:7001;;;4969:12;765:7001;;;5001:9;765:7001;;;;5035:43;765:7001;5035:43;;765:7001;5035:43;;1046:19;765:7001;5035:43;765:7001;5035:43;;;;;;;;;;;;;765:7001;5026:58;;;;:::i;:::-;765:7001;5133:13;1590:14:0;765:7001:124;5095:52;;;;;765:7001;;;;;;;5095:52;;;;;765:7001;5095:52;;765:7001;5095:52;;765:7001;5095:52;;;;;;;;765:7001;1590:14:0;765:7001:124;5133:13;1590:14:0;765:7001:124;;5157:23;;;;765:7001;;5157:23;765:7001;5157:23;;765:7001;5157:23;;765:7001;5157:23;;765:7001;5157:23;;765:7001;5157:23;;;;;;;;765:7001;;;;4969:12;765:7001;;5012:3;765:7001;5001:9;765:7001;;;;5190:63;;;;;765:7001;5190:63;;5231:4;765:7001;5190:63;;765:7001;;;;1046:19;765:7001;4969:12;765:7001;;;5190:63;;;;;;;;765:7001;;;4969:12;765:7001;;;;;;5001:9;765:7001;;;;;5272:43;;;;765:7001;5272:43;;;765:7001;5272:43;;1046:19;5272:43;;;;;;;;;;;765:7001;2349:24:1;765:7001:124;2349:24:1;;;;765:7001:124;;2349:24:1;765:7001:124;2349:24:1;;765:7001:124;2349:24:1;;765:7001:124;;;;;;2349:24:1;;4969:12:124;2349:24:1;765:7001:124;2349:24:1;;;;;;;;765:7001:124;-1:-1:-1;5329:49:124;5338:34;5231:4;;5338:34;:::i;:::-;5329:49;:::i;:::-;765:7001;;2349:24:1;;;;;:::i;:::-;765:7001:124;;2349:24:1;;;;5272:43:124;;;;765:7001;5272:43;;765:7001;5272:43;;;;;;765:7001;5272:43;;;:::i;:::-;;;765:7001;;;;;;;5272:43;;;;;;-1:-1:-1;5272:43:124;;5190:63;765:7001;5190:63;;765:7001;5190:63;;;;;;765:7001;5190:63;;;:::i;:::-;;;765:7001;;;;;5190:63;;;;;-1:-1:-1;5190:63:124;;5157:23;;;;;:::i;:::-;765:7001;;5157:23;;;;5095:52;;;;;:::i;:::-;765:7001;;5095:52;;;;5035:43;;;;765:7001;5035:43;;765:7001;5035:43;;;;;;765:7001;5035:43;;;:::i;:::-;;;765:7001;;;;5026:58;765:7001;;;5035:43;;;;;;-1:-1:-1;5035:43:124;;4969:47;;;;;:::i;:::-;765:7001;;4969:47;;;;765:7001;;;;;;;;;;;;;;;;;3501:18:5;765:7001:124;;;;;;;3501:18:5;765:7001:124;;;;;;;;;;;;;;;;;;:::i;:::-;1590:14:0;;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3794:16:5;765:7001:124;;;;;;;3794:16:5;765:7001:124;;;;;;;;;;;;;;;;;;:::i;:::-;1590:14:0;;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2554:151:152;765:7001:124;2554:151:152;765:7001:124;2554:151:152;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3948:19:5;765:7001:124;;;;:::i;:::-;;;;;;;:::i;:::-;;;;3948:19:5;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;1590:14:0;;765:7001:124;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;1510:12;765:7001;;;;;1510:36;;;;765:7001;1510:36;;;;;;;;1548:10;1510:36;;;;;765:7001;1548:10;;:::i;:::-;765:7001;1569:63;;;;765:7001;;1569:63;765:7001;1569:63;;1583:4;765:7001;1569:63;;765:7001;;;;;;;1510:12;765:7001;;;;;;;;;;;;1569:63;;;;;765:7001;1569:63;;;;;;;;765:7001;1590:14:0;765:7001:124;1676:13;1590:14:0;765:7001:124;;;1647:43;;;;;;765:7001;1510:12;765:7001;;1700:52;;;;;;;;;;;;765:7001;1700:52;;765:7001;1700:52;;765:7001;1700:52;;;;;;;;765:7001;;;1510:36;765:7001;1510:12;765:7001;;;;1771:36;;;;765:7001;1771:36;;;;;;;;;;;;;765:7001;1590:14:0;765:7001:124;1676:13;1590:14:0;765:7001:124;;3533:24:1;;;;765:7001:124;;;3533:24:1;765:7001:124;3533:24:1;;765:7001:124;;3533:24:1;;765:7001:124;1700:52;765:7001;;;3533:24:1;;1510:12:124;3533:24:1;765:7001:124;3533:24:1;;;;;;;;765:7001:124;;1771:36;;;;1510;1771;1510;1771;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;1700:52;;;;;:::i;:::-;765:7001;;1700:52;;;;1569:63;;;;;:::i;:::-;765:7001;;1569:63;;;;1510:36;;;;;;;;;;;;;;:::i;:::-;;;;765:7001;;;;;;;;;;;;;;;;;3018:16:5;765:7001:124;;;;;;;3018:16:5;765:7001:124;;;;;;;;;;;;;;;;;;:::i;:::-;1590:14:0;;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1180:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;765:7001;;;1165:47;765:7001;;;1165:47;765:7001;;;;;;:::i;:::-;;;;;;;;;;;;;;;20318:22:3;;765:7001:124;;;;;;;;;20318:22:3;;;;;;:::i;:::-;765:7001:124;20308:33:3;;765:7001:124;;20359:19:3;765:7001:124;20359:19:3;;765:7001:124;20359:19:3;;765:7001:124;;20359:19:3;;;765:7001:124;20359:19:3;;;;;;;;;;;765:7001:124;20388:20:3;765:7001:124;20388:20:3;;;;765:7001:124;;291:59:3;765:7001:124;;;20388:20:3;;;;;765:7001:124;20388:20:3;;765:7001:124;20388:20:3;;765:7001:124;20388:20:3;;765:7001:124;;20359:19:3;291:59;;;1165:47:124;291:59:3;;;;:::i;:::-;20388:20;;;765:7001:124;20388:20:3;;;;;;;;765:7001:124;;;;1222:41;765:7001;;;1222:41;765:7001;;;;;;;;;:::i;:::-;6109:1:152;765:7001:124;;;;;;;;;;6400:33:152;;6345:11;6369:3;765:7001:124;;;6109:1:152;6358:9;;;;;765:7001:124;;6400:33:152;;;;;;1180:32:124;6400:33:152;;;;;;;6430:2;765:7001:124;;;6400:33:152;;;;;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6400:33:152;;;;;;;;6388:45;6447:9;6388:45;765:7001:124;6388:45:152;;;;;:::i;:::-;765:7001:124;;;;6447:9:152;;:::i;:::-;765:7001:124;;6447:42:152;;;;;765:7001:124;;;1165:47;765:7001;;6447:42:152;;;;765:7001:124;6447:42:152;;6470:4;765:7001:124;6447:42:152;;765:7001:124;6112:8:152;20359:19:3;765:7001:124;;;6447:42:152;;;;;;;;;;;6369:3;-1:-1:-1;;765:7001:124;;;;6345:11:152;;6447:42;;;;;:::i;:::-;765:7001:124;;6447:42:152;;;;;765:7001:124;;;;;;;;;6400:33:152;20359:19:3;765:7001:124;;;;;;;;6358:9:152;;;;765:7001:124;;;;;;;;;;;6165:9:152;765:7001:124;;;;;;;;;;;;;;;;;373:33:157;;;369:277;765:7001:124;;;422:91:157;;369:277;765:7001:124;;1273:51;765:7001;;;1273:51;765:7001;;;;1273:51;765:7001;;;1273:51;765:7001;1165:47;765:7001;;;;;;1334:79;;;;;765:7001;1334:79;;765:7001;1334:79;;765:7001;6112:8:152;20359:19:3;765:7001:124;;;1334:79;;;;;;;;765:7001;;;1334:79;765:7001;1334:79;;765:7001;1334:79;;;;;;765:7001;1334:79;;;:::i;:::-;;;765:7001;;;;;;;;;;;;;1334:79;;;-1:-1:-1;1334:79:124;;369:277:157;544:91;;;369:277;;765:7001:124;20359:19:3;765:7001:124;;;;;;;;20388:20:3;;;;;:::i;:::-;765:7001:124;;20388:20:3;;;;20359:19;;;;765:7001:124;20359:19:3;765:7001:124;20359:19:3;;;;;;;:::i;:::-;;;;1180:32:124;765:7001;;;;;;;;;;;1180:32;765:7001;;;;;;;;;;;;;;;;;;;;;;;;;;;7378:12;765:7001;;;7410:9;765:7001;;7378:58;;;;;;765:7001;;;7378:58;;765:7001;;;;;;7378:58;;1046:19;765:7001;;;;;;;;;;;;;;;;7378:58;;;;;;;;765:7001;;;7378:12;765:7001;;;7410:9;765:7001;;;;;;7455:43;;;765:7001;7455:43;;1046:19;765:7001;7455:43;765:7001;7455:43;;;;;;;;;;;;;;765:7001;7500:14;;;;;:::i;:::-;7633:50;;;;;765:7001;;;7633:50;;765:7001;;;;;;7633:50;;1046:19;765:7001;;;;;;;;;;;;;;;;7633:50;;;;;;;;765:7001;;;;7378:12;765:7001;;;;;7410:9;765:7001;;;;;7702:43;;;;765:7001;7702:43;;765:7001;7702:43;;1046:19;7702:43;;;;;;;;;;;765:7001;7747:9;765:7001;;;7747:9;;:::i;7702:43::-;;;765:7001;7702:43;;765:7001;7702:43;;;;;;765:7001;7702:43;;;:::i;:::-;;;765:7001;;;;7747:9;765:7001;;7702:43;;;;;;-1:-1:-1;7702:43:124;;7633:50;;;;;:::i;:::-;765:7001;;7633:50;;;;765:7001;;;;7455:43;;;;;765:7001;7455:43;;765:7001;7455:43;;;;;;765:7001;7455:43;;;:::i;:::-;;;765:7001;;;;7500:14;765:7001;;;;7455:43;;;;;;;-1:-1:-1;7455:43:124;;7378:58;;;;;:::i;:::-;765:7001;;7378:58;;;;765:7001;;;;;;;;;;;;1046:19;;765:7001;3240:12;765:7001;;;3278:13;1590:14:0;765:7001:124;3240:52;;;;;765:7001;;3240:52;765:7001;;;;3240:52;;;;;765:7001;3240:52;;765:7001;3240:52;;765:7001;3240:52;;;;;;;;;;;765:7001;1590:14:0;;765:7001:124;3278:13;1590:14:0;765:7001:124;;3302:23;;;;765:7001;;3302:23;765:7001;3302:23;;765:7001;3302:23;;765:7001;3302:23;;3240:52;3302:23;;765:7001;3302:23;;;;;;;;;;;765:7001;;;;;3374:42;1590:14:0;3351:79:124;;;;3240:52;3351:79;;1046:19;3240:52;3351:79;;;3240:12;3351:79;;:::i;:::-;765:7001;3335:96;;;;765:7001;1046:19;765:7001;;;3335:96;;;;765:7001;3335:96;;1590:14:0;765:7001:124;3335:96;;1046:19;3240:52;1046:19;;;;:::i;:::-;3335:96;;;765:7001;3335:96;;;;;;;;;;;765:7001;;;;3240:12;765:7001;;3441:45;;;;;;765:7001;;3441:45;765:7001;;;;3441:45;;;;;765:7001;3441:45;;1046:19;765:7001;3441:45;;765:7001;3469:3;1046:19;765:7001;1046:19;;;;765:7001;;;1046:19;;;;765:7001;1046:19;;;765:7001;1046:19;;;;;;765:7001;;1046:19;;;765:7001;1046:19;765:7001;1046:19;;765:7001;1046:19;;;;;;;;;3441:45;;;;;;;;765:7001;3511:40;1046:19;;;765:7001;3278:13;1590:14:0;765:7001:124;;3561:23;;;;765:7001;;3561:23;765:7001;3561:23;;765:7001;3561:23;;765:7001;3561:23;;3240:52;3561:23;;765:7001;3561:23;;;;;;;;;;;765:7001;;;;;3374:42;1590:14:0;3610:79:124;;;;3240:52;3610:79;;1046:19;3240:52;3610:79;;;3240:12;3610:79;;:::i;:::-;765:7001;3594:96;;;;765:7001;1046:19;765:7001;;;3594:96;;;;765:7001;3594:96;;1590:14:0;765:7001:124;3594:96;;1046:19;3240:52;1046:19;;;;:::i;:::-;3594:96;;;765:7001;3594:96;;;;;;;;;;;765:7001;;;;3240:12;765:7001;;3700:45;;;;;;765:7001;;3441:45;765:7001;;;;3700:45;;;;;765:7001;3700:45;;1046:19;765:7001;3700:45;;765:7001;3469:3;1046:19;765:7001;1046:19;;;;765:7001;;;1046:19;;;;765:7001;1046:19;;;765:7001;1046:19;;;;;;765:7001;;1046:19;;;765:7001;1046:19;765:7001;1046:19;;765:7001;1046:19;;;;;;;;;3700:45;;;;;;;;765:7001;;3594:96;;;;;:::i;:::-;765:7001;;3594:96;;;;3561:23;;;;;:::i;:::-;765:7001;;3561:23;;;;3441:45;;;;;:::i;:::-;765:7001;;3441:45;;;;3335:96;;;;;:::i;:::-;765:7001;;3335:96;;;;3302:23;;;;;:::i;:::-;765:7001;;3302:23;;;;3240:52;;;;;:::i;:::-;765:7001;;3240:52;;;;765:7001;;;;;;;;;;;;;1928:36;765:7001;;;;1928:12;765:7001;;;1928:36;;;;;;;;1966:10;1928:36;765:7001;1928:36;;;1966:10;;:::i;:::-;765:7001;1988:20;;;;765:7001;;;1988:20;;2005:1;765:7001;1988:20;;765:7001;;1988:20;;;;765:7001;1988:20;;;;;;;;765:7001;2043:31;765:7001;2043:31;;;;765:7001;;;;2043:31;;1928:36;765:7001;2043:31;;1590:14:0;;1988:20:124;1590:14:0;;765:7001:124;1590:14:0;1928:12:124;765:7001;;1590:14:0;2043:31:124;;;;;765:7001;2043:31;;;;;;;;765:7001;;;1928:12;765:7001;;;2122:13;1590:14:0;765:7001:124;2084:52;;;;;765:7001;;1988:20;765:7001;;;;2084:52;;;;;765:7001;2084:52;;765:7001;2084:52;;765:7001;2084:52;;;;;;;;765:7001;;;;1928:36;765:7001;1928:12;765:7001;;;;2155:36;;;;765:7001;2155:36;;;;;;;;2193:10;2155:36;;;;;2193:10;;:::i;2084:52::-;;;;;:::i;:::-;765:7001;;2084:52;;;;2043:31;;;;;:::i;:::-;765:7001;;2043:31;;;;1988:20;;;;765:7001;1988:20;;:::i;:::-;765:7001;1988:20;;;;765:7001;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;765:7001:124;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;765:7001:124;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;765:7001:124;;;;;-1:-1:-1;765:7001:124;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;-1:-1:-1;765:7001:124;;;;;-1:-1:-1;765:7001:124;;-1:-1:-1;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;765:7001:124;;;;;-1:-1:-1;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;765:7001:124;;-1:-1:-1;765:7001:124;;-1:-1:-1;765:7001:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;2042:49:64;;;;;;;;;1243:204:1;1302:7;765:7001:124;;;;;;;1325:14:1;:::o;1298:143::-;765:7001:124;;;;1377:39:1;;765:7001:124;1377:39:1;;;765:7001:124;192:59:1;;;;765:7001:124;192:59:1;1377:39;;;765:7001:124;1377:39:1;;;;;;;765:7001:124;1377:39:1;;;1298:143;1377:53;;;1370:60;:::o;1377:39::-;;;192:59;1377:39;;192:59;1377:39;;;;;;192:59;1377:39;;;:::i;:::-;;;192:59;;;;;1377:39;;;;;;-1:-1:-1;1377:39:1;;280:29:150;;;;765:7001:124;280:29:150;;;;;;;;765:7001:124;280:29:150;;;;;;765:7001:124;1046:19;;280:29:150;;;;;765:7001:124;280:29:150;;;1046:19:124;765:7001;280:29:150;;;;765:7001:124;280:29:150;;;1046:19:124;280:29:150;;;;765:7001:124;;280:29:150;;;765:7001:124;280:29:150;;765:7001:124;280:29:150;;1046:19:124;280:29:150;;765:7001:124;280:29:150;;1046:19:124;280:29:150:o;3454:110:1:-;765:7001:124;3533:24:1;;;;765:7001:124;;;3533:24:1;765:7001:124;3533:24:1;;765:7001:124;3533:24:1;;;765:7001:124;;;;;;;3533:24:1;;;765:7001:124;3533:24:1;;;;;;;;3454:110;:::o;3533:24::-;765:7001:124;3533:24:1;;;:::i;2270:110::-;765:7001:124;2349:24:1;;;;765:7001:124;;2349:24:1;765:7001:124;2349:24:1;;;;;765:7001:124;5012:3;765:7001;;;;-1:-1:-1;2349:24:1;;;765:7001:124;2349:24:1;;;;;;;;2270:110;:::o;:::-;;765:7001:124;2349:24:1;;;;765:7001:124;;2349:24:1;765:7001:124;2349:24:1;;;;;765:7001:124;;;;;-1:-1:-1;2349:24:1;;;765:7001:124;2349:24:1;;;;;;;;2270:110;:::o;765:7001:124:-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;4633:271:107;765:7001:124;;4998:58:107;765:7001:124;;4779:13:107;;4772:20;:::o;4728:170::-;765:7001:124;;4830:57:107;1590:14:0;765:7001:124;;;4830:57:107;;;;;765:7001:124;4830:57:107;;765:7001:124;4830:57:107;;;765:7001:124;4830:57:107;;;;;;;765:7001:124;4830:57:107;;;4823:64;;:::o;4830:57::-;;;1590:14:0;4830:57:107;;1590:14:0;4830:57:107;;;;;;765:7001:124;4830:57:107;;;:::i;:::-;;;765:7001:124;;;;;4823:64:107;:::o;4830:57::-;;;-1:-1:-1;4830:57:107;","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","LIQUIDITY_PARAMS()":"93ad73ed","MAX_PRICE_LIMIT()":"542524dd","MIN_PRICE_LIMIT()":"c7b8e15d","REMOVE_LIQUIDITY_PARAMS()":"39cd2013","SWAP_PARAMS()":"b1a73b8a","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSelectors()":"b0464fdc","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_collectProtocolFees_revertsWithInvalidCaller()":"54a89cef","test_collectProtocolFees_succeeds()":"4a343389","test_fuzz_collectProtocolFees(address,uint256,uint256)":"8d9c6243","test_fuzz_setProtocolFee((address,address,uint24,int24,address),uint24)":"cff8f458","test_fuzz_updateProtocolFees(uint256,uint256)":"045ee99c","test_setProtocolFeeController_revertsWithNotAuthorized()":"001c4800","test_setProtocolFeeController_succeedsNoRevert()":"1fa58791","test_setProtocolFee_revertsWithInvalidCaller()":"8bd7d3af","test_setProtocolFee_revertsWithInvalidFee()":"0107751d","test_setProtocolFee_succeeds_gas()":"defcbca0","test_updateProtocolFees_succeeds()":"944b94c6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"feeController\",\"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\":false,\"internalType\":\"uint24\",\"name\":\"protocolFee\",\"type\":\"uint24\"}],\"name\":\"ProtocolFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LIQUIDITY_PARAMS\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PRICE_LIMIT\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_PRICE_LIMIT\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REMOVE_LIQUIDITY_PARAMS\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SWAP_PARAMS\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"artifact\",\"type\":\"string\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzArtifactSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_collectProtocolFees_revertsWithInvalidCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_collectProtocolFees_succeeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feesAccrued\",\"type\":\"uint256\"}],\"name\":\"test_fuzz_collectProtocolFees\",\"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\"},{\"internalType\":\"uint24\",\"name\":\"protocolFee\",\"type\":\"uint24\"}],\"name\":\"test_fuzz_setProtocolFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingAmount\",\"type\":\"uint256\"}],\"name\":\"test_fuzz_updateProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_setProtocolFeeController_revertsWithNotAuthorized\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_setProtocolFeeController_succeedsNoRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_setProtocolFee_revertsWithInvalidCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_setProtocolFee_revertsWithInvalidFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_setProtocolFee_succeeds_gas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_updateProtocolFees_succeeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/ProtocolFeesImplementation.t.sol\":\"ProtocolFeesTest\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":44444444},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe\",\"dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557\",\"dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f\",\"dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391\",\"dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3\",\"dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa\",\"dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]},\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/solmate/src/test/utils/mocks/MockERC20.sol\":{\"keccak256\":\"0x525129ccb4103c9ecb8f235618d2ff4a8ffde4b8654f7c17766ad175d10ef466\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://45692a21807ba815c0cf0bfc7d633a14a6cb9ba863ab53f18fc639375a72125e\",\"dweb:/ipfs/QmSrqxyodjDtSU1Dc6G3ScnNc9CFjMnAeHpK8a8guM3nJu\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"src/ERC6909.sol\":{\"keccak256\":\"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6\",\"dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q\"]},\"src/ERC6909Claims.sol\":{\"keccak256\":\"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c\",\"dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i\"]},\"src/Extsload.sol\":{\"keccak256\":\"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51\",\"dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU\"]},\"src/Exttload.sol\":{\"keccak256\":\"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c\",\"dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG\"]},\"src/NoDelegateCall.sol\":{\"keccak256\":\"0xacb81aecb7c74c86650a035462dae38c313b4b7b5842e14b645f864f61da2b51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://363a0e15fc30ea68a5d52a78772facecde6433ea156e3ec2ce25068c97cd5ad6\",\"dweb:/ipfs/QmYhWaF3wH71SDx5TZr9qEXXQf5FYQvdjoo3B2qWiAbm18\"]},\"src/PoolManager.sol\":{\"keccak256\":\"0xf9ff5d5e261a21a5e72a01c5badd988beeff437e0f6b82fd56f80be42d727c07\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4a92a25102c73245e1343f0dbc8400b8bac3c464ba064aa5574b9584a12e6c72\",\"dweb:/ipfs/QmfCcvspZ8XzDeQjEd2FfM76wzkfE9KDgBoqAcqhf3nsnu\"]},\"src/ProtocolFees.sol\":{\"keccak256\":\"0x81362ef1d19670b41cefc2b6f2dc0333b6743fe39a1929edd36bd9b6a1111755\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de483bbd8bf9a53b9644d7f9a6a6fe77ae527b755cf29e1db8725de89e70c7aa\",\"dweb:/ipfs/Qmex3PcgJGbYsuDNaMXc8mg5fW1DNaPGiNToPpAAzz6GEq\"]},\"src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"src/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4\",\"dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi\"]},\"src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"]},\"src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"src/libraries/BitMath.sol\":{\"keccak256\":\"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e\",\"dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi\"]},\"src/libraries/CurrencyDelta.sol\":{\"keccak256\":\"0x80dbd898cf0f90c5c27192689b16c34edc765d6ab21b8358e3bb792c7fef238c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://107698da024313f132d9fe28deb920b5c03d14624889c3ce5720e588f03635bb\",\"dweb:/ipfs/QmQteUbhj5SsWbvSF6U8niBUSrETqVbEwULc8E7vS4Kbnn\"]},\"src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725\",\"dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX\"]},\"src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb\",\"dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy\"]},\"src/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4\",\"dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ\"]},\"src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xd679b4b2d429689bc44f136050ebc958fb2d7d0d3a3c7b3e48c08ab4fba09aaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287190cb72840e5eb63cc7a8a1d0b9150af17d8e4ea0323f47c7e7928f2033cb\",\"dweb:/ipfs/QmVfqWBnAQM2jUcuREDdvjcP21gNuLU35CoL3NG5CEhNcx\"]},\"src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475\",\"dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J\"]},\"src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99\",\"dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD\"]},\"src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"src/libraries/NonzeroDeltaCount.sol\":{\"keccak256\":\"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59\",\"dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm\"]},\"src/libraries/ParseBytes.sol\":{\"keccak256\":\"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17\",\"dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa\"]},\"src/libraries/Pool.sol\":{\"keccak256\":\"0xb8191707c5913f5e2f589cec5167e3fac4a5b86bd84f61fdba0fbe6a8ce8a3a0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a609f9c365f05becf61877d9dc767e7825bce8c34607dbfc0f0437a71f6ff407\",\"dweb:/ipfs/QmThDUzLePs2Hbp6XTpRSHT67rdsjQLhdmS6krm8cpKSey\"]},\"src/libraries/Position.sol\":{\"keccak256\":\"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2\",\"dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5\"]},\"src/libraries/ProtocolFeeLibrary.sol\":{\"keccak256\":\"0xf483001899229ab10f5a626fe1c5866134d9e965b48ce6cf55ce0d7f74f7d8ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ba9211a7f69bbb44649c35211eb29d193c09032ec600064ef9d04b4625dd8ba\",\"dweb:/ipfs/QmQSjQvtguYgMJSkkKRhHjxasfX9xfTbrbcZ1QmjUVb787\"]},\"src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"]},\"src/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0xf8079fe6e3460db495451d06b1705e18f1c4075c1af96a31ad313545f7082982\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://582fc51546723a0a8acccf782f69b530bacf9b3ef929458e82569b7121f0b138\",\"dweb:/ipfs/QmSBXcmqZdFsM7M4sRaiyQAxykCeMNFKyKgBcwSMTw1bcF\"]},\"src/libraries/StateLibrary.sol\":{\"keccak256\":\"0x96db333ee126a841dd959e38e452cc59d73583cb0437a1d48b2052e33a74f952\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8672bba1eb69608299b0904f4ff305238eb18479d371c26518f278c9ee184cd0\",\"dweb:/ipfs/QmTLu3s6ECvsEDHStQv8HTVHYtvkviBbdjPrFJd4SpVRFY\"]},\"src/libraries/SwapMath.sol\":{\"keccak256\":\"0x6baa782ae523269c079cc763639a9b91a25fcfa1743c049c76e43741ef494bd9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://035c337e62e05262a5bd5d3bc85bc9a383c1013001216b429f49cf1e129a0812\",\"dweb:/ipfs/QmU7s4h58Fh2A6mM8yeorZ2ygwEJMQw8zdZLLkHeDoSWxD\"]},\"src/libraries/TickBitmap.sol\":{\"keccak256\":\"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d\",\"dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy\"]},\"src/libraries/TickMath.sol\":{\"keccak256\":\"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70\",\"dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva\"]},\"src/libraries/TransientStateLibrary.sol\":{\"keccak256\":\"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5\",\"dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV\"]},\"src/libraries/UnsafeMath.sol\":{\"keccak256\":\"0xa6e55e0a43a15df2df471d9972cd48f613d07c663ecb8bbeaf7623f6f99bcce4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02ea6e13879fc5a5f35149a2f1cd8af3a1f0877ff69101dad53841d16f515572\",\"dweb:/ipfs/QmcpL4gdG6hL2w1wqs2Vw4J1EFCwBs9T1Qd4p16CtECQkn\"]},\"src/test/ActionsRouter.sol\":{\"keccak256\":\"0x14dee9e42a1df016ee93959efbff2989c0f5fc3be2583cc7f220e8c99bc1ca52\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://cede28a88b18e6506407d4f35787fb2891a6023a363b15beb5c3af3d57ceaeef\",\"dweb:/ipfs/QmbwcWHBnD9615BPSpPZ7hTuCCXG9BWHdHQS67KRtfrEqR\"]},\"src/test/PoolClaimsTest.sol\":{\"keccak256\":\"0x12833a6562b06737ebb1b08a8a8ef233314f0b9e03129cff3550d9fd4c184986\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://09d31189420ccd828f8e529782c9e1e31b0ce3f07f59efb6db5a8848395e7887\",\"dweb:/ipfs/Qmb4rosxr2DLxUAH6qUDfqVbj1CfnzrDwxfLLjpneMSwRW\"]},\"src/test/PoolDonateTest.sol\":{\"keccak256\":\"0x5e517fea38336bb86419f7280d5f80b26fe8cab9eac1cf400e27f87562d3d105\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5528c6a97eefbb94607d1a2aa07b1ec6f9c9b955b5f4a123ee88beabf6a03deb\",\"dweb:/ipfs/QmYfcaX1vkzjb1s389Rj7VsvCttB5wdarP17vyHWiejbqq\"]},\"src/test/PoolModifyLiquidityTest.sol\":{\"keccak256\":\"0x4a3ca2a5ed763efa34d9dfa8b90cafcff6b42a0903c6f20815c1a51e785b3af3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e47a2fe202e60b0a58fd01acf1d3d021266903f81965302b60cace8a4c7d37d1\",\"dweb:/ipfs/QmcYmtXwL1F45tFLP2DA5KbU9icmcvj5rJCEkpMHJcwGrK\"]},\"src/test/PoolModifyLiquidityTestNoChecks.sol\":{\"keccak256\":\"0xf3c98e8674634ccbc96a8a234631c888e5915b1f26531acbe0540e145063f093\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e26d6ea447b8ff4d07fa4999dca110a7c6a3443793c6c451ff81951a5a2beb58\",\"dweb:/ipfs/QmZf2wixTDBwSzGgPeAQWAY1jZpFXcMLLfBxUnCuKSKXey\"]},\"src/test/PoolNestedActionsTest.sol\":{\"keccak256\":\"0xa57a52caf5227e13bf2e4592a3dabf30839d78b6c1a14e7e074dd214f101355e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4e2aba8b16522cee958cc4b214ab9fc88b8929d7f4d67fec8e514f80eea5a765\",\"dweb:/ipfs/QmSqA2QY1pSvD7NXjWwpNKnh41yT9kVWVBM5KnddaCytVx\"]},\"src/test/PoolSwapTest.sol\":{\"keccak256\":\"0x3d769a76b948910a1a2321435e8d19156ff767ad3ddbd5abe4fa60d1e9b11ac0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4bb4ca24457237b3af7a8023f19d667d20a60066cbf911b728968f34b6055753\",\"dweb:/ipfs/QmXVNWTHDcVbQrf6Y82j9whpWyYmgWvBJqYZ3Vp8to3H6j\"]},\"src/test/PoolTakeTest.sol\":{\"keccak256\":\"0xcdc76eb93c349a5f5c30abff0438d5599427ac6f6892e0abf8d0346c46244368\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5d005b6672e38d7c673677be08e041e32670a4a64bd3b92dc07e29d1609c5193\",\"dweb:/ipfs/QmZVqyEz1BgYNmyAPooef5c77yjj4A2e9ooWfrJ2SducJ2\"]},\"src/test/PoolTestBase.sol\":{\"keccak256\":\"0xc3b1c46487231f8416d053652cfb3c773d728705a6a1a542ea48e8d1cca44962\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c2229b5915fcf17c58253b81cd4bbff62f7fbc6df8c370188c771fc40febf15a\",\"dweb:/ipfs/QmRu2Qb341KpA9k9prYH8buJek6vZiE7bxnyC9UkjVGBxV\"]},\"src/test/ProtocolFeesImplementation.sol\":{\"keccak256\":\"0xb402394dae779c2c136dd60c8ee45c96888afc830fe8bbb569f00cd3aaae4077\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://096c6502cef0604d12686bbc96cc7e31bd3f0c22b593bd90fed44198376768e2\",\"dweb:/ipfs/QmQEyzT6dE7jF4tp3j9R6dBEjQoFEAnJ9Rg8Dc9LkSMMfR\"]},\"src/test/SwapRouterNoChecks.sol\":{\"keccak256\":\"0xc335bd807d977008a679c6fc5964542544324ef4c243a33c15c81fa38270e575\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://72d9c5ed82e70c0e669ff8e9e357ae59826e73e3d96cd11c401c605f0f1c4d0e\",\"dweb:/ipfs/Qmdrb1MCzw9GhxXado6nQrUBxVbDqNB7D3f7mRTAVQY5f5\"]},\"src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"]},\"src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"]},\"src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"]},\"src/types/PoolOperation.sol\":{\"keccak256\":\"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07\",\"dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c\"]},\"src/types/Slot0.sol\":{\"keccak256\":\"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8\",\"dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C\"]},\"test/ProtocolFeesImplementation.t.sol\":{\"keccak256\":\"0xa2d84cc07a13595361d758cd4ee0e0f83a67ec6ef66aa3cbf15bf0a69a58c55b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://017b9d8517bb9901957f8b886970e3d36b9e92eb43509f3220c429b8b4f2430f\",\"dweb:/ipfs/QmaLgjWBdrYgC5xpx4qeuhpZVCLNXgArFwiEoHnZpGm4s5\"]},\"test/utils/Constants.sol\":{\"keccak256\":\"0x19c8d60baec46e1d43fa26f852718d4955154e844be14971e0597a63c22a9d43\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9bebdabeab512f3ca999c856641e3fa0d7b86082a01cf826f8647e188e0b35d3\",\"dweb:/ipfs/QmWLFXaTz4Wejd3ZHcyTMDEW8mqUzCfQahQxuVtryxM5Na\"]},\"test/utils/CurrencySettler.sol\":{\"keccak256\":\"0x2569dc02a637111de76e8e8c65f27510e7608273c19652fe6d31d76c983c19b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e9fbc9085e011e7208505c8ff7d402e4dba13b5105b25a24eac85b4a5921de58\",\"dweb:/ipfs/QmPyBSC5JvZrePDjdt2AiNt3EEUXgxX1orvTX1JZidz9PP\"]},\"test/utils/Deployers.sol\":{\"keccak256\":\"0x7565b26ec3a14fb6cb312d99a5642a64f8ccb435a0471963b900f56d54f736a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ca989e1dccd6a1fc823cde3143ecb94b36c1f8351f582b5e56dfe5c14ce67ad6\",\"dweb:/ipfs/QmWP7xRGYBrTwkWcGz2xwEnCE3eUMo3BwpyKjnvY4WUK6J\"]},\"test/utils/LiquidityAmounts.sol\":{\"keccak256\":\"0x3ec40b1ddf34a1b33fe3934a2f1e4f66dbcf4378a4c672d0d6ce845ccf8bcae2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6fc4a4688f272d4b55c1d0440ee5ebdc951e5299ff23ae79a4b52cc83e978b8a\",\"dweb:/ipfs/QmYJogZFeyaVeSFbYLCMdwEZtL8sWB8Ndx5AuepWdHsHGY\"]},\"test/utils/SortTokens.sol\":{\"keccak256\":\"0xdc74b25e20e04e5e4f3cf0bda4c81f70fac35562a74a47df56ef650fc7e3c844\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://324616a6154688bc9bd2d07777592df5a1fbdcc32acaa66bc7b0daa07f14e3f0\",\"dweb:/ipfs/QmPK8dG1LDkm67Qn89h51ExwEfsVJEcs33dL8dSDeZ4ChD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"feeController","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":"uint24","name":"protocolFee","type":"uint24","indexed":false}],"type":"event","name":"ProtocolFeeUpdated","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LIQUIDITY_PARAMS","outputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_PRICE_LIMIT","outputs":[{"internalType":"uint160","name":"","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_PRICE_LIMIT","outputs":[{"internalType":"uint160","name":"","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"REMOVE_LIQUIDITY_PARAMS","outputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SWAP_PARAMS","outputs":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"excludedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzArtifactSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"string","name":"artifact","type":"string"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_collectProtocolFees_revertsWithInvalidCaller"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_collectProtocolFees_succeeds"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"feesAccrued","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_fuzz_collectProtocolFees"},{"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":"protocolFee","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"test_fuzz_setProtocolFee"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"startingAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"test_fuzz_updateProtocolFees"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_setProtocolFeeController_revertsWithNotAuthorized"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_setProtocolFeeController_succeedsNoRevert"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_setProtocolFee_revertsWithInvalidCaller"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_setProtocolFee_revertsWithInvalidFee"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_setProtocolFee_succeeds_gas"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_updateProtocolFees_succeeds"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/=node_modules/@ensdomains/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solmate/=lib/solmate/"],"optimizer":{"enabled":true,"runs":44444444},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"test/ProtocolFeesImplementation.t.sol":"ProtocolFeesTest"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270","urls":["bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe","dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de","urls":["bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557","dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf","urls":["bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f","dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj"],"license":"MIT"},"lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d","urls":["bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391","dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdToml.sol":{"keccak256":"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861","urls":["bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3","dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410","urls":["bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa","dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr"],"license":"MIT"},"lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"},"lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"lib/solmate/src/test/utils/mocks/MockERC20.sol":{"keccak256":"0x525129ccb4103c9ecb8f235618d2ff4a8ffde4b8654f7c17766ad175d10ef466","urls":["bzz-raw://45692a21807ba815c0cf0bfc7d633a14a6cb9ba863ab53f18fc639375a72125e","dweb:/ipfs/QmSrqxyodjDtSU1Dc6G3ScnNc9CFjMnAeHpK8a8guM3nJu"],"license":"AGPL-3.0-only"},"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"src/ERC6909.sol":{"keccak256":"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f","urls":["bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6","dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q"],"license":"MIT"},"src/ERC6909Claims.sol":{"keccak256":"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49","urls":["bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c","dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i"],"license":"MIT"},"src/Extsload.sol":{"keccak256":"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce","urls":["bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51","dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU"],"license":"MIT"},"src/Exttload.sol":{"keccak256":"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54","urls":["bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c","dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG"],"license":"MIT"},"src/NoDelegateCall.sol":{"keccak256":"0xacb81aecb7c74c86650a035462dae38c313b4b7b5842e14b645f864f61da2b51","urls":["bzz-raw://363a0e15fc30ea68a5d52a78772facecde6433ea156e3ec2ce25068c97cd5ad6","dweb:/ipfs/QmYhWaF3wH71SDx5TZr9qEXXQf5FYQvdjoo3B2qWiAbm18"],"license":"MIT"},"src/PoolManager.sol":{"keccak256":"0xf9ff5d5e261a21a5e72a01c5badd988beeff437e0f6b82fd56f80be42d727c07","urls":["bzz-raw://4a92a25102c73245e1343f0dbc8400b8bac3c464ba064aa5574b9584a12e6c72","dweb:/ipfs/QmfCcvspZ8XzDeQjEd2FfM76wzkfE9KDgBoqAcqhf3nsnu"],"license":"BUSL-1.1"},"src/ProtocolFees.sol":{"keccak256":"0x81362ef1d19670b41cefc2b6f2dc0333b6743fe39a1929edd36bd9b6a1111755","urls":["bzz-raw://de483bbd8bf9a53b9644d7f9a6a6fe77ae527b755cf29e1db8725de89e70c7aa","dweb:/ipfs/Qmex3PcgJGbYsuDNaMXc8mg5fW1DNaPGiNToPpAAzz6GEq"],"license":"MIT"},"src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"src/interfaces/IHooks.sol":{"keccak256":"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d","urls":["bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec","dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G"],"license":"MIT"},"src/interfaces/IPoolManager.sol":{"keccak256":"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e","urls":["bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4","dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi"],"license":"MIT"},"src/interfaces/IProtocolFees.sol":{"keccak256":"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848","urls":["bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d","dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J"],"license":"MIT"},"src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"license":"MIT"},"src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"src/libraries/BitMath.sol":{"keccak256":"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d","urls":["bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e","dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi"],"license":"MIT"},"src/libraries/CurrencyDelta.sol":{"keccak256":"0x80dbd898cf0f90c5c27192689b16c34edc765d6ab21b8358e3bb792c7fef238c","urls":["bzz-raw://107698da024313f132d9fe28deb920b5c03d14624889c3ce5720e588f03635bb","dweb:/ipfs/QmQteUbhj5SsWbvSF6U8niBUSrETqVbEwULc8E7vS4Kbnn"],"license":"BUSL-1.1"},"src/libraries/CurrencyReserves.sol":{"keccak256":"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3","urls":["bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725","dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX"],"license":"BUSL-1.1"},"src/libraries/CustomRevert.sol":{"keccak256":"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de","urls":["bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd","dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt"],"license":"MIT"},"src/libraries/FixedPoint128.sol":{"keccak256":"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542","urls":["bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb","dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy"],"license":"MIT"},"src/libraries/FixedPoint96.sol":{"keccak256":"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741","urls":["bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4","dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ"],"license":"MIT"},"src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xd679b4b2d429689bc44f136050ebc958fb2d7d0d3a3c7b3e48c08ab4fba09aaa","urls":["bzz-raw://287190cb72840e5eb63cc7a8a1d0b9150af17d8e4ea0323f47c7e7928f2033cb","dweb:/ipfs/QmVfqWBnAQM2jUcuREDdvjcP21gNuLU35CoL3NG5CEhNcx"],"license":"MIT"},"src/libraries/LPFeeLibrary.sol":{"keccak256":"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b","urls":["bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475","dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J"],"license":"MIT"},"src/libraries/LiquidityMath.sol":{"keccak256":"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353","urls":["bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99","dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD"],"license":"MIT"},"src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"src/libraries/NonzeroDeltaCount.sol":{"keccak256":"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87","urls":["bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59","dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm"],"license":"BUSL-1.1"},"src/libraries/ParseBytes.sol":{"keccak256":"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15","urls":["bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17","dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa"],"license":"MIT"},"src/libraries/Pool.sol":{"keccak256":"0xb8191707c5913f5e2f589cec5167e3fac4a5b86bd84f61fdba0fbe6a8ce8a3a0","urls":["bzz-raw://a609f9c365f05becf61877d9dc767e7825bce8c34607dbfc0f0437a71f6ff407","dweb:/ipfs/QmThDUzLePs2Hbp6XTpRSHT67rdsjQLhdmS6krm8cpKSey"],"license":"BUSL-1.1"},"src/libraries/Position.sol":{"keccak256":"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9","urls":["bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2","dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5"],"license":"BUSL-1.1"},"src/libraries/ProtocolFeeLibrary.sol":{"keccak256":"0xf483001899229ab10f5a626fe1c5866134d9e965b48ce6cf55ce0d7f74f7d8ec","urls":["bzz-raw://6ba9211a7f69bbb44649c35211eb29d193c09032ec600064ef9d04b4625dd8ba","dweb:/ipfs/QmQSjQvtguYgMJSkkKRhHjxasfX9xfTbrbcZ1QmjUVb787"],"license":"MIT"},"src/libraries/SafeCast.sol":{"keccak256":"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86","urls":["bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59","dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj"],"license":"MIT"},"src/libraries/SqrtPriceMath.sol":{"keccak256":"0xf8079fe6e3460db495451d06b1705e18f1c4075c1af96a31ad313545f7082982","urls":["bzz-raw://582fc51546723a0a8acccf782f69b530bacf9b3ef929458e82569b7121f0b138","dweb:/ipfs/QmSBXcmqZdFsM7M4sRaiyQAxykCeMNFKyKgBcwSMTw1bcF"],"license":"MIT"},"src/libraries/StateLibrary.sol":{"keccak256":"0x96db333ee126a841dd959e38e452cc59d73583cb0437a1d48b2052e33a74f952","urls":["bzz-raw://8672bba1eb69608299b0904f4ff305238eb18479d371c26518f278c9ee184cd0","dweb:/ipfs/QmTLu3s6ECvsEDHStQv8HTVHYtvkviBbdjPrFJd4SpVRFY"],"license":"MIT"},"src/libraries/SwapMath.sol":{"keccak256":"0x6baa782ae523269c079cc763639a9b91a25fcfa1743c049c76e43741ef494bd9","urls":["bzz-raw://035c337e62e05262a5bd5d3bc85bc9a383c1013001216b429f49cf1e129a0812","dweb:/ipfs/QmU7s4h58Fh2A6mM8yeorZ2ygwEJMQw8zdZLLkHeDoSWxD"],"license":"MIT"},"src/libraries/TickBitmap.sol":{"keccak256":"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a","urls":["bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d","dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy"],"license":"MIT"},"src/libraries/TickMath.sol":{"keccak256":"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8","urls":["bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70","dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva"],"license":"MIT"},"src/libraries/TransientStateLibrary.sol":{"keccak256":"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a","urls":["bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5","dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV"],"license":"MIT"},"src/libraries/UnsafeMath.sol":{"keccak256":"0xa6e55e0a43a15df2df471d9972cd48f613d07c663ecb8bbeaf7623f6f99bcce4","urls":["bzz-raw://02ea6e13879fc5a5f35149a2f1cd8af3a1f0877ff69101dad53841d16f515572","dweb:/ipfs/QmcpL4gdG6hL2w1wqs2Vw4J1EFCwBs9T1Qd4p16CtECQkn"],"license":"MIT"},"src/test/ActionsRouter.sol":{"keccak256":"0x14dee9e42a1df016ee93959efbff2989c0f5fc3be2583cc7f220e8c99bc1ca52","urls":["bzz-raw://cede28a88b18e6506407d4f35787fb2891a6023a363b15beb5c3af3d57ceaeef","dweb:/ipfs/QmbwcWHBnD9615BPSpPZ7hTuCCXG9BWHdHQS67KRtfrEqR"],"license":"UNLICENSED"},"src/test/PoolClaimsTest.sol":{"keccak256":"0x12833a6562b06737ebb1b08a8a8ef233314f0b9e03129cff3550d9fd4c184986","urls":["bzz-raw://09d31189420ccd828f8e529782c9e1e31b0ce3f07f59efb6db5a8848395e7887","dweb:/ipfs/Qmb4rosxr2DLxUAH6qUDfqVbj1CfnzrDwxfLLjpneMSwRW"],"license":"UNLICENSED"},"src/test/PoolDonateTest.sol":{"keccak256":"0x5e517fea38336bb86419f7280d5f80b26fe8cab9eac1cf400e27f87562d3d105","urls":["bzz-raw://5528c6a97eefbb94607d1a2aa07b1ec6f9c9b955b5f4a123ee88beabf6a03deb","dweb:/ipfs/QmYfcaX1vkzjb1s389Rj7VsvCttB5wdarP17vyHWiejbqq"],"license":"UNLICENSED"},"src/test/PoolModifyLiquidityTest.sol":{"keccak256":"0x4a3ca2a5ed763efa34d9dfa8b90cafcff6b42a0903c6f20815c1a51e785b3af3","urls":["bzz-raw://e47a2fe202e60b0a58fd01acf1d3d021266903f81965302b60cace8a4c7d37d1","dweb:/ipfs/QmcYmtXwL1F45tFLP2DA5KbU9icmcvj5rJCEkpMHJcwGrK"],"license":"UNLICENSED"},"src/test/PoolModifyLiquidityTestNoChecks.sol":{"keccak256":"0xf3c98e8674634ccbc96a8a234631c888e5915b1f26531acbe0540e145063f093","urls":["bzz-raw://e26d6ea447b8ff4d07fa4999dca110a7c6a3443793c6c451ff81951a5a2beb58","dweb:/ipfs/QmZf2wixTDBwSzGgPeAQWAY1jZpFXcMLLfBxUnCuKSKXey"],"license":"UNLICENSED"},"src/test/PoolNestedActionsTest.sol":{"keccak256":"0xa57a52caf5227e13bf2e4592a3dabf30839d78b6c1a14e7e074dd214f101355e","urls":["bzz-raw://4e2aba8b16522cee958cc4b214ab9fc88b8929d7f4d67fec8e514f80eea5a765","dweb:/ipfs/QmSqA2QY1pSvD7NXjWwpNKnh41yT9kVWVBM5KnddaCytVx"],"license":"UNLICENSED"},"src/test/PoolSwapTest.sol":{"keccak256":"0x3d769a76b948910a1a2321435e8d19156ff767ad3ddbd5abe4fa60d1e9b11ac0","urls":["bzz-raw://4bb4ca24457237b3af7a8023f19d667d20a60066cbf911b728968f34b6055753","dweb:/ipfs/QmXVNWTHDcVbQrf6Y82j9whpWyYmgWvBJqYZ3Vp8to3H6j"],"license":"UNLICENSED"},"src/test/PoolTakeTest.sol":{"keccak256":"0xcdc76eb93c349a5f5c30abff0438d5599427ac6f6892e0abf8d0346c46244368","urls":["bzz-raw://5d005b6672e38d7c673677be08e041e32670a4a64bd3b92dc07e29d1609c5193","dweb:/ipfs/QmZVqyEz1BgYNmyAPooef5c77yjj4A2e9ooWfrJ2SducJ2"],"license":"UNLICENSED"},"src/test/PoolTestBase.sol":{"keccak256":"0xc3b1c46487231f8416d053652cfb3c773d728705a6a1a542ea48e8d1cca44962","urls":["bzz-raw://c2229b5915fcf17c58253b81cd4bbff62f7fbc6df8c370188c771fc40febf15a","dweb:/ipfs/QmRu2Qb341KpA9k9prYH8buJek6vZiE7bxnyC9UkjVGBxV"],"license":"UNLICENSED"},"src/test/ProtocolFeesImplementation.sol":{"keccak256":"0xb402394dae779c2c136dd60c8ee45c96888afc830fe8bbb569f00cd3aaae4077","urls":["bzz-raw://096c6502cef0604d12686bbc96cc7e31bd3f0c22b593bd90fed44198376768e2","dweb:/ipfs/QmQEyzT6dE7jF4tp3j9R6dBEjQoFEAnJ9Rg8Dc9LkSMMfR"],"license":"UNLICENSED"},"src/test/SwapRouterNoChecks.sol":{"keccak256":"0xc335bd807d977008a679c6fc5964542544324ef4c243a33c15c81fa38270e575","urls":["bzz-raw://72d9c5ed82e70c0e669ff8e9e357ae59826e73e3d96cd11c401c605f0f1c4d0e","dweb:/ipfs/Qmdrb1MCzw9GhxXado6nQrUBxVbDqNB7D3f7mRTAVQY5f5"],"license":"UNLICENSED"},"src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"src/types/Currency.sol":{"keccak256":"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93","urls":["bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01","dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5"],"license":"MIT"},"src/types/PoolId.sol":{"keccak256":"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af","urls":["bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918","dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y"],"license":"MIT"},"src/types/PoolKey.sol":{"keccak256":"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786","urls":["bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639","dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi"],"license":"MIT"},"src/types/PoolOperation.sol":{"keccak256":"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162","urls":["bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07","dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c"],"license":"MIT"},"src/types/Slot0.sol":{"keccak256":"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b","urls":["bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8","dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C"],"license":"MIT"},"test/ProtocolFeesImplementation.t.sol":{"keccak256":"0xa2d84cc07a13595361d758cd4ee0e0f83a67ec6ef66aa3cbf15bf0a69a58c55b","urls":["bzz-raw://017b9d8517bb9901957f8b886970e3d36b9e92eb43509f3220c429b8b4f2430f","dweb:/ipfs/QmaLgjWBdrYgC5xpx4qeuhpZVCLNXgArFwiEoHnZpGm4s5"],"license":"MIT"},"test/utils/Constants.sol":{"keccak256":"0x19c8d60baec46e1d43fa26f852718d4955154e844be14971e0597a63c22a9d43","urls":["bzz-raw://9bebdabeab512f3ca999c856641e3fa0d7b86082a01cf826f8647e188e0b35d3","dweb:/ipfs/QmWLFXaTz4Wejd3ZHcyTMDEW8mqUzCfQahQxuVtryxM5Na"],"license":"UNLICENSED"},"test/utils/CurrencySettler.sol":{"keccak256":"0x2569dc02a637111de76e8e8c65f27510e7608273c19652fe6d31d76c983c19b6","urls":["bzz-raw://e9fbc9085e011e7208505c8ff7d402e4dba13b5105b25a24eac85b4a5921de58","dweb:/ipfs/QmPyBSC5JvZrePDjdt2AiNt3EEUXgxX1orvTX1JZidz9PP"],"license":"MIT"},"test/utils/Deployers.sol":{"keccak256":"0x7565b26ec3a14fb6cb312d99a5642a64f8ccb435a0471963b900f56d54f736a7","urls":["bzz-raw://ca989e1dccd6a1fc823cde3143ecb94b36c1f8351f582b5e56dfe5c14ce67ad6","dweb:/ipfs/QmWP7xRGYBrTwkWcGz2xwEnCE3eUMo3BwpyKjnvY4WUK6J"],"license":"UNLICENSED"},"test/utils/LiquidityAmounts.sol":{"keccak256":"0x3ec40b1ddf34a1b33fe3934a2f1e4f66dbcf4378a4c672d0d6ce845ccf8bcae2","urls":["bzz-raw://6fc4a4688f272d4b55c1d0440ee5ebdc951e5299ff23ae79a4b52cc83e978b8a","dweb:/ipfs/QmYJogZFeyaVeSFbYLCMdwEZtL8sWB8Ndx5AuepWdHsHGY"],"license":"UNLICENSED"},"test/utils/SortTokens.sol":{"keccak256":"0xdc74b25e20e04e5e4f3cf0bda4c81f70fac35562a74a47df56ef650fc7e3c844","urls":["bzz-raw://324616a6154688bc9bd2d07777592df5a1fbdcc32acaa66bc7b0daa07f14e3f0","dweb:/ipfs/QmPK8dG1LDkm67Qn89h51ExwEfsVJEcs33dL8dSDeZ4ChD"],"license":"UNLICENSED"}},"version":1},"id":124}