{
	"format": "sphinx-sol-ct-artifact-1",
	"address": "0xe9493bc776699714a89aa982cf828d843f040d2a",
	"sourceName": "node_modules/@bananapus/univ4-lp-split-hook-v6/src/JBUniswapV4LPSplitHook.sol",
	"contractName": "JBUniswapV4LPSplitHook",
	"chainId": "0xa4b1",
	"abi": [
		{
			"type": "constructor",
			"inputs": [
				{
					"name": "directory",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "permissions",
					"type": "address",
					"internalType": "contract IJBPermissions"
				},
				{
					"name": "tokens",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "permit2",
					"type": "address",
					"internalType": "contract IAllowanceTransfer"
				},
				{
					"name": "suckerRegistry",
					"type": "address",
					"internalType": "contract IJBSuckerRegistry"
				}
			],
			"stateMutability": "nonpayable"
		},
		{
			"type": "receive",
			"stateMutability": "payable"
		},
		{
			"type": "function",
			"name": "BPS",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "DIRECTORY",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "address"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "PERMISSIONS",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "contract IJBPermissions"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "PERMIT2",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "contract IAllowanceTransfer"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "POOL_FEE",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "uint24",
					"internalType": "uint24"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "PROJECTS",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "contract IJBProjects"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "SUCKER_REGISTRY",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "contract IJBSuckerRegistry"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "TICK_SPACING",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "int24",
					"internalType": "int24"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "TOKENS",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "address"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "accumulatedProjectTokens",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"outputs": [
				{
					"name": "accumulatedProjectTokens",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "activeTickLowerOf",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				}
			],
			"outputs": [
				{
					"name": "tickLower",
					"type": "int24",
					"internalType": "int24"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "activeTickUpperOf",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				}
			],
			"outputs": [
				{
					"name": "tickUpper",
					"type": "int24",
					"internalType": "int24"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "addLiquidity",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "minCashOutReturn",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"outputs": [],
			"stateMutability": "nonpayable"
		},
		{
			"type": "function",
			"name": "buybackHook",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "contract IJBBuybackHookRegistry"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "claimFeeTokensFor",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "beneficiary",
					"type": "address",
					"internalType": "address"
				}
			],
			"outputs": [],
			"stateMutability": "nonpayable"
		},
		{
			"type": "function",
			"name": "claimableFeeCredits",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"outputs": [
				{
					"name": "claimableFeeCredits",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "claimableFeeTokenOf",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"outputs": [
				{
					"name": "claimToken",
					"type": "address",
					"internalType": "address"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "claimableFeeTokens",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"outputs": [
				{
					"name": "claimableFeeTokens",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "collectAndRouteLPFees",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				}
			],
			"outputs": [],
			"stateMutability": "nonpayable"
		},
		{
			"type": "function",
			"name": "deployPool",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "minCashOutReturn",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"outputs": [],
			"stateMutability": "nonpayable"
		},
		{
			"type": "function",
			"name": "feePercent",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "feeProjectId",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "hasDeployedPool",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"outputs": [
				{
					"name": "hasDeployedPool",
					"type": "bool",
					"internalType": "bool"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "initialWeightOf",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"outputs": [
				{
					"name": "weight",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "initialize",
			"inputs": [
				{
					"name": "initialFeeProjectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "initialFeePercent",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "newPoolManager",
					"type": "address",
					"internalType": "contract IPoolManager"
				},
				{
					"name": "newPositionManager",
					"type": "address",
					"internalType": "contract IPositionManager"
				},
				{
					"name": "newOracleHook",
					"type": "address",
					"internalType": "contract IHooks"
				},
				{
					"name": "newBuybackHook",
					"type": "address",
					"internalType": "contract IJBBuybackHookRegistry"
				}
			],
			"outputs": [],
			"stateMutability": "nonpayable"
		},
		{
			"type": "function",
			"name": "isPoolDeployed",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				}
			],
			"outputs": [
				{
					"name": "deployed",
					"type": "bool",
					"internalType": "bool"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "oracleHook",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "contract IHooks"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "poolKeyOf",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				}
			],
			"outputs": [
				{
					"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"
						}
					]
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "poolKeysOf",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				}
			],
			"outputs": [
				{
					"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"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "poolManager",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "contract IPoolManager"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "positionManager",
			"inputs": [],
			"outputs": [
				{
					"name": "",
					"type": "address",
					"internalType": "contract IPositionManager"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "processSplitWith",
			"inputs": [
				{
					"name": "context",
					"type": "tuple",
					"internalType": "struct JBSplitHookContext",
					"components": [
						{
							"name": "token",
							"type": "address",
							"internalType": "address"
						},
						{
							"name": "amount",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "decimals",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "projectId",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "groupId",
							"type": "uint256",
							"internalType": "uint256"
						},
						{
							"name": "split",
							"type": "tuple",
							"internalType": "struct JBSplit",
							"components": [
								{
									"name": "percent",
									"type": "uint32",
									"internalType": "uint32"
								},
								{
									"name": "projectId",
									"type": "uint64",
									"internalType": "uint64"
								},
								{
									"name": "beneficiary",
									"type": "address",
									"internalType": "address payable"
								},
								{
									"name": "preferAddToBalance",
									"type": "bool",
									"internalType": "bool"
								},
								{
									"name": "lockedUntil",
									"type": "uint48",
									"internalType": "uint48"
								},
								{
									"name": "hook",
									"type": "address",
									"internalType": "contract IJBSplitHook"
								}
							]
						}
					]
				}
			],
			"outputs": [],
			"stateMutability": "payable"
		},
		{
			"type": "function",
			"name": "rebalanceLiquidity",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "decreaseAmount0Min",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "decreaseAmount1Min",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"outputs": [],
			"stateMutability": "nonpayable"
		},
		{
			"type": "function",
			"name": "supportsInterface",
			"inputs": [
				{
					"name": "interfaceId",
					"type": "bytes4",
					"internalType": "bytes4"
				}
			],
			"outputs": [
				{
					"name": "",
					"type": "bool",
					"internalType": "bool"
				}
			],
			"stateMutability": "pure"
		},
		{
			"type": "function",
			"name": "tokenIdOf",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				}
			],
			"outputs": [
				{
					"name": "tokenId",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "event",
			"name": "FeeTokensClaimed",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"indexed": true,
					"internalType": "uint256"
				},
				{
					"name": "beneficiary",
					"type": "address",
					"indexed": true,
					"internalType": "address"
				},
				{
					"name": "amount",
					"type": "uint256",
					"indexed": false,
					"internalType": "uint256"
				},
				{
					"name": "caller",
					"type": "address",
					"indexed": false,
					"internalType": "address"
				}
			],
			"anonymous": false
		},
		{
			"type": "event",
			"name": "LPFeesRouted",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"indexed": true,
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"indexed": true,
					"internalType": "address"
				},
				{
					"name": "totalAmount",
					"type": "uint256",
					"indexed": false,
					"internalType": "uint256"
				},
				{
					"name": "feeAmount",
					"type": "uint256",
					"indexed": false,
					"internalType": "uint256"
				},
				{
					"name": "remainingAmount",
					"type": "uint256",
					"indexed": false,
					"internalType": "uint256"
				},
				{
					"name": "feeTokensMinted",
					"type": "uint256",
					"indexed": false,
					"internalType": "uint256"
				},
				{
					"name": "caller",
					"type": "address",
					"indexed": false,
					"internalType": "address"
				}
			],
			"anonymous": false
		},
		{
			"type": "event",
			"name": "LiquidityAdded",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"indexed": true,
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"indexed": true,
					"internalType": "address"
				},
				{
					"name": "tokenId",
					"type": "uint256",
					"indexed": true,
					"internalType": "uint256"
				},
				{
					"name": "isNewPosition",
					"type": "bool",
					"indexed": false,
					"internalType": "bool"
				},
				{
					"name": "caller",
					"type": "address",
					"indexed": false,
					"internalType": "address"
				}
			],
			"anonymous": false
		},
		{
			"type": "event",
			"name": "ProjectDeployed",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"indexed": true,
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"indexed": true,
					"internalType": "address"
				},
				{
					"name": "poolId",
					"type": "bytes32",
					"indexed": true,
					"internalType": "bytes32"
				},
				{
					"name": "caller",
					"type": "address",
					"indexed": false,
					"internalType": "address"
				}
			],
			"anonymous": false
		},
		{
			"type": "error",
			"name": "JBMetadataResolver_DataNotPadded",
			"inputs": [
				{
					"name": "dataLength",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBMetadataResolver_MetadataTooLong",
			"inputs": [
				{
					"name": "offset",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "maxOffset",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBMetadataResolver_MetadataTooShort",
			"inputs": [
				{
					"name": "metadataLength",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "minMetadataLength",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBPermissioned_Unauthorized",
			"inputs": [
				{
					"name": "account",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "sender",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "permissionId",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_AlreadyInitialized",
			"inputs": []
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_ExistingPoolPriceOutOfBounds",
			"inputs": [
				{
					"name": "existingPrice",
					"type": "uint160",
					"internalType": "uint160"
				},
				{
					"name": "lowerBound",
					"type": "uint160",
					"internalType": "uint160"
				},
				{
					"name": "upperBound",
					"type": "uint160",
					"internalType": "uint160"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_FeePercentWithoutFeeProject",
			"inputs": [
				{
					"name": "feePercent",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "feeProjectId",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_InsufficientBalance",
			"inputs": [
				{
					"name": "available",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "required",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_InsufficientLiquidity",
			"inputs": [
				{
					"name": "liquidity",
					"type": "uint128",
					"internalType": "uint128"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_InvalidFeePercent",
			"inputs": [
				{
					"name": "feePercent",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "maxFeePercent",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_InvalidProjectId",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "controller",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "projectToken",
					"type": "address",
					"internalType": "address"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_InvalidStageForAction",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "tokenId",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_InvalidTerminalToken",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_NoTokensAccumulated",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_NotHookSpecifiedInContext",
			"inputs": [
				{
					"name": "expectedHook",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "actualHook",
					"type": "address",
					"internalType": "address"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_OnlyOneTerminalTokenSupported",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_Permit2AmountOverflow",
			"inputs": [
				{
					"name": "token",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "amount",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "maxAmount",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_PoolAlreadyDeployed",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "tokenId",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_PriceDeviationTooHigh",
			"inputs": [
				{
					"name": "spotTick",
					"type": "int24",
					"internalType": "int24"
				},
				{
					"name": "twapTick",
					"type": "int24",
					"internalType": "int24"
				},
				{
					"name": "maxDeviationTicks",
					"type": "int24",
					"internalType": "int24"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_SplitSenderNotValidControllerOrTerminal",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "sender",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "controller",
					"type": "address",
					"internalType": "address"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_TemporaryAllowanceNotConsumed",
			"inputs": [
				{
					"name": "token",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "spender",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "allowance",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_TerminalNotFound",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "token",
					"type": "address",
					"internalType": "address"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_TerminalTokensNotAllowed",
			"inputs": [
				{
					"name": "groupId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "requiredGroupId",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_TwapUnavailable",
			"inputs": [
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_UnclaimedFeeTokenChanged",
			"inputs": [
				{
					"name": "previousToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "nextToken",
					"type": "address",
					"internalType": "address"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHook_ZeroLiquidity",
			"inputs": [
				{
					"name": "amount0",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "amount1",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "PRBMath_MulDiv_Overflow",
			"inputs": [
				{
					"name": "x",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "y",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "denominator",
					"type": "uint256",
					"internalType": "uint256"
				}
			]
		},
		{
			"type": "error",
			"name": "SafeERC20FailedOperation",
			"inputs": [
				{
					"name": "token",
					"type": "address",
					"internalType": "address"
				}
			]
		}
	],
	"args": [
		"0x5AfF29060E023e6FB87BE5596652B33c65Af535B",
		"0xf92AC1aB5A00033E35a3975739124F61928C36B0",
		"0x1f80d8f057eE36b4C2656D107E4e4558B71bA7D9",
		"0x000000000022D473030F116dDEE9F6B43aC78BA3",
		"0x7903a854aE91eAf635430D120a1a434085cEf297"
	],
	"solcInputHash": "69d71b45ed3040169f8308981c2aa086",
	"receipt": {
		"blockHash": "0xd7ad69ae2451d0fb2f4987edf171a34b7bd697a5bc0ec7dbe97dfcae83ca1e89",
		"blockNumber": "0x1ce73bec",
		"contractAddress": null,
		"cumulativeGasUsed": "0x52523",
		"effectiveGasPrice": "0x1326580",
		"from": "0x755ff2f75a0a586ecfa2b9a3c959cb662458a105",
		"gasUsed": "0x52523",
		"gasUsedForL1": "0x216",
		"l1BlockNumber": "0x185ef61",
		"logs": [
			{
				"address": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
				"topics": [
					"0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d",
					"0x000000000000000000000000755ff2f75a0a586ecfa2b9a3c959cb662458a105",
					"0x00000000000000000000000091f164e1300f13beaf77358e4d84ed78f8e99d38",
					"0xebc3f91e288021304e8fc3e27650db511a83b45f29531151585e8b5a4a00fb38"
				],
				"data": "0x0000000000000000000000000000000000000000000000000000000000000000",
				"blockNumber": "0x1ce73bec",
				"transactionHash": "0xfbefce4c60673e31e908df13116d7588449b1c3cb67aac5a6374a765424aad84",
				"transactionIndex": "0x1",
				"blockHash": "0xd7ad69ae2451d0fb2f4987edf171a34b7bd697a5bc0ec7dbe97dfcae83ca1e89",
				"blockTimestamp": "0x6a5a8f90",
				"logIndex": "0x0",
				"removed": false
			},
			{
				"address": "0x4dc161ef837ff1c4485b08ddfcdb182f2157be18",
				"topics": [
					"0xb648d3644f584ed1c2232d53c46d87e693586486ad0d1175f8656013110b714e"
				],
				"data": "0x00000000000000000000000091f164e1300f13beaf77358e4d84ed78f8e99d38000000000000000000000000ee49b9c6938c31c223e49272bb0a3810bc39f3da000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084fe65c5ff000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000007d000000000000000000000000072f55a54cd53410a5ff175508a5a3842270817885f42414e5f4c505f53504c49545f484f4f4b5f56365f0000000000000000000000000000000000000000000000000000000000000000000000000000",
				"blockNumber": "0x1ce73bec",
				"transactionHash": "0xfbefce4c60673e31e908df13116d7588449b1c3cb67aac5a6374a765424aad84",
				"transactionIndex": "0x1",
				"blockHash": "0xd7ad69ae2451d0fb2f4987edf171a34b7bd697a5bc0ec7dbe97dfcae83ca1e89",
				"blockTimestamp": "0x6a5a8f90",
				"logIndex": "0x1",
				"removed": false
			},
			{
				"address": "0xee49b9c6938c31c223e49272bb0a3810bc39f3da",
				"topics": [
					"0xe62ff7b546ab78a8c826ddb34f23996bd2eb26c8042818823c97adf4c9c09edb",
					"0x0000000000000000000000000000000000000000000000000000000000000001"
				],
				"data": "0x00000000000000000000000000000000000000000000000000000000000007d0000000000000000000000000e9493bc776699714a89aa982cf828d843f040d2a0000000000000000000000004dc161ef837ff1c4485b08ddfcdb182f2157be18",
				"blockNumber": "0x1ce73bec",
				"transactionHash": "0xfbefce4c60673e31e908df13116d7588449b1c3cb67aac5a6374a765424aad84",
				"transactionIndex": "0x1",
				"blockHash": "0xd7ad69ae2451d0fb2f4987edf171a34b7bd697a5bc0ec7dbe97dfcae83ca1e89",
				"blockTimestamp": "0x6a5a8f90",
				"logIndex": "0x2",
				"removed": false
			},
			{
				"address": "0x581bfd1ead279e0a27b736e49494db3a7d85993c",
				"topics": [
					"0x7d6162a71c5021da669d43dd6f106854635e56ebf51a7d028ade33473c69c0fc",
					"0x000000000000000000000000e9493bc776699714a89aa982cf828d843f040d2a",
					"0x000000000000000000000000ee49b9c6938c31c223e49272bb0a3810bc39f3da"
				],
				"data": "0x000000000000000000000000ee49b9c6938c31c223e49272bb0a3810bc39f3da",
				"blockNumber": "0x1ce73bec",
				"transactionHash": "0xfbefce4c60673e31e908df13116d7588449b1c3cb67aac5a6374a765424aad84",
				"transactionIndex": "0x1",
				"blockHash": "0xd7ad69ae2451d0fb2f4987edf171a34b7bd697a5bc0ec7dbe97dfcae83ca1e89",
				"blockTimestamp": "0x6a5a8f90",
				"logIndex": "0x3",
				"removed": false
			},
			{
				"address": "0x4dc161ef837ff1c4485b08ddfcdb182f2157be18",
				"topics": [
					"0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8",
					"0x00000000000000000000000091f164e1300f13beaf77358e4d84ed78f8e99d38"
				],
				"data": "0x",
				"blockNumber": "0x1ce73bec",
				"transactionHash": "0xfbefce4c60673e31e908df13116d7588449b1c3cb67aac5a6374a765424aad84",
				"transactionIndex": "0x1",
				"blockHash": "0xd7ad69ae2451d0fb2f4987edf171a34b7bd697a5bc0ec7dbe97dfcae83ca1e89",
				"blockTimestamp": "0x6a5a8f90",
				"logIndex": "0x4",
				"removed": false
			},
			{
				"address": "0x91f164e1300f13beaf77358e4d84ed78f8e99d38",
				"topics": [
					"0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07",
					"0xdd7475ec77241ea071262bda644b18be72496a35d1aef3ea6b6ccbc540c3c1f7"
				],
				"data": "0x0000000000000000000000000000000000000000000000000000000000000001",
				"blockNumber": "0x1ce73bec",
				"transactionHash": "0xfbefce4c60673e31e908df13116d7588449b1c3cb67aac5a6374a765424aad84",
				"transactionIndex": "0x1",
				"blockHash": "0xd7ad69ae2451d0fb2f4987edf171a34b7bd697a5bc0ec7dbe97dfcae83ca1e89",
				"blockTimestamp": "0x6a5a8f90",
				"logIndex": "0x5",
				"removed": false
			},
			{
				"address": "0x91f164e1300f13beaf77358e4d84ed78f8e99d38",
				"topics": [
					"0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63",
					"0xdd7475ec77241ea071262bda644b18be72496a35d1aef3ea6b6ccbc540c3c1f7"
				],
				"data": "0x",
				"blockNumber": "0x1ce73bec",
				"transactionHash": "0xfbefce4c60673e31e908df13116d7588449b1c3cb67aac5a6374a765424aad84",
				"transactionIndex": "0x1",
				"blockHash": "0xd7ad69ae2451d0fb2f4987edf171a34b7bd697a5bc0ec7dbe97dfcae83ca1e89",
				"blockTimestamp": "0x6a5a8f90",
				"logIndex": "0x6",
				"removed": false
			}
		],
		"logsBloom": "0x00000000000010000000000020080000001000000000000000000000000000000000000000400000000000800040000000000000000000008000000002040000000000010000200000080000001400000000400000040040000000000000000040000000000000000000100000000000000080000000000000000000000080008800000020000000000104000000000000800000000000000000000000000014004000840000000000000000000000002600000800200000000000000004000000000022008000008000000000400000000004000020000000000000800040000000000200000108000000040000000200000000000080008000000008000000",
		"status": "0x1",
		"timeboosted": false,
		"to": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
		"transactionHash": "0xfbefce4c60673e31e908df13116d7588449b1c3cb67aac5a6374a765424aad84",
		"transactionIndex": "0x1",
		"type": "0x2"
	},
	"bytecode": "0x61014080604052346101d55760a081615e5d803803809161002082856101ec565b8339810103126101d55761003381610223565b6020820151916001600160a01b03831683036101d55761005560408201610223565b6060820151909390916001600160a01b03831683036101d55760800151926001600160a01b03841684036101d5576004926020926080528160a05260c0526040519283809263293c499960e01b825260018060a01b03165afa9081156101e1575f9161019b575b5060e0526101005261012052604051615c25908161023882396080518181816101ba015261395d015260a05181818161051b01528181611069015281816115b30152818161177401528181612700015281816128740152818161322101528181613a710152613f2c015260c051818181611dab0152818161511101526151db015260e051818181611ed401526138680152610100518181816104fa01528181610ed7015281816110480152818161197f0152818161324f01528181613a500152613f54015261012051818181611f95015281816127ff0152613df80152f35b90506020813d6020116101d9575b816101b6602093836101ec565b810103126101d557516001600160a01b03811681036101d5575f6100bc565b5f80fd5b3d91506101a9565b6040513d5f823e3d90fd5b601f909101601f19168101906001600160401b0382119082101761020f57604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101d55756fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c90816301ffc9a71461214a575080630c39832a1461211b57806310e51e1414611fc45780631d831d5c14611f805780632322bc7c14611f3c578063249d39e914611f2057806326c0e4b214611f03578063293c499914611ebf578063293d9dfe14611e955780633676996c14611e6357806345d1012d14611e3c57806346ca626b14611e215780634f3a8ba814611dda5780636afdd85014611d96578063718a77ed14611d4f57806374a2fa6d14611705578063791b98bc146116dd5780637fd6f15c146116c0578063826a5e7414611665578063860870a7146115e257806388bc2ef31461159e5780639785f1ed14611576578063978db958146114d85780639aa5d46214610f4c578063a866583514610f06578063b5d2553314610ec2578063bd81a3de14610e98578063c15a6fce14610e6e578063c5a0938814610ad3578063cd0802e51461088b578063ce974d151461025c578063dc4c90d314610233578063dd1b9c4a14610216578063ecb567a7146101ec5763f434c9140361000f57346101e957806003193601126101e9576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b80fd5b50346101e95760203660031901126101e95760406020916004358152600b83522054604051908152f35b50346101e957806003193601126101e95760206040516127108152f35b50346101e957806003193601126101e9576002546040516001600160a01b039091168152602090f35b50346101e95760803660031901126101e9576004359061027a61219d565b9061028d836102888161384b565b6138d7565b6001600160a01b0361029f8385612843565b161561086a57828152600d6020526040812060018060a01b0383165f5260205260405f20548015610849576102d3846127e2565b848352600c6020526040832060018060a01b0385165f526020526102f960405f2061251f565b91610305838688612b53565b610312838287858a612a3b565b6040516370a0823160e01b81523060048201526001600160a01b03831695906020816024818a5afa90811561083e57869161080c575b50610452610355836139d6565b604051600360f81b6020820152601160f81b602182015290949061044d9061038a81602281015b03601f198101835282612243565b6103926128d0565b926040519060208201526001600160801b036044351660408201526001600160801b036064351660608201526080808201528a60a082015260a081526103d960c082612243565b6103e284612944565b526103ec83612944565b5088516020808b0151604080516001600160a01b0394851693810193909352921691810191909152306060820152610427816080810161037c565b61043084612965565b5261043a83612965565b5061037c604051938492602084016129c9565b613bde565b6040516370a0823160e01b81523060048201526020816024818b5afa9081156107905787916107d8575b506104999161048a916126c2565b92610494836139d6565b6126c2565b926104a3886126e3565b6040516320c94b1360e11b8152600481018a905298906103808a6024816001600160a01b0385165afa998a156107cd579960409161054c9a9b8a9261079b575b50825163ef200d5560e01b81529a8b9283928789887f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048901612661565b038173734bfc66606dfe7943bcf541cf5dcbc5312e695b5af48015610790578798889161075b575b5061057e87613d3e565b8a6105d961058b8c614167565b928b61059686614167565b936001600160a01b036105a88b615056565b16808210156107565750885b6001600160a01b03161493841561074d578a9485925b5015610744578b958693614494565b6001600160801b03811680156107325750602060249a9b9c9d6040519b8c80926370a0823160e01b82523060048301525afa998a15610727578d908d9b6106e7575b50908461063394939261062d8a6139d6565b9d61452f565b61063b6147ac565b5f1981019a908b116106d357899a836106d09b52600d60205260408c2060018060a01b0387165f5260205260405f2055828b52600e60205260408b2060018060a01b0386165f5260205260405f209062ffffff198254169062ffffff16179055818a52600f60205260408a2060018060a01b0385165f5260205260405f209062ffffff198254169062ffffff161790556147e3565b80f35b634e487b7160e01b8a52601160045260248afd5b9392919a50506020833d60201161071f575b8161070660209383612243565b8101031261071b579151989091908c8461061b565b5f80fd5b3d91506106f9565b6040513d8e823e3d90fd5b6364407c8960e01b8c5260045260248bfd5b8a958693614494565b8b9485926105ca565b6105b4565b905061078091985060403d604011610789575b6107788183612243565b8101906125aa565b9790975f610574565b503d61076e565b6040513d89823e3d90fd5b6107be9192506103803d81116107c6575b6107b68183612243565b8101906122b9565b50905f6104e3565b503d6107ac565b6040513d8a823e3d90fd5b90506020813d602011610804575b816107f360209383612243565b8101031261071b575161049961047c565b3d91506107e6565b90506020813d602011610836575b8161082760209383612243565b8101031261071b57515f610348565b3d915061081a565b6040513d88823e3d90fd5b60649284638623c06f60e01b845260045260018060a01b0316602452604452fd5b634550cd6f60e11b81526004929092526001600160a01b0316602452604490fd5b503461071b57604036600319011261071b576004356108a861219d565b906108b6816102888161384b565b805f52600960205260405f2054806109dc575b50805f52600760205260405f205491826108e1578380f35b5f82815260076020526040812055600454906001600160a01b03610904836126e3565b1691823b1561071b575f9160848392604051948593849263b1e6d2a160e01b8452306004850152602484015260018060a01b0316968760448401528960648401525af190816109c7575b5061096857508252600760205260408220555b5f80808380f35b916109bf7f908d0dfd8e6a1766b34c117564501edc5353761bd2c7b158a6767efbf8885f639160045486526011602052604086206109a78282546126c2565b90556040805191825233602083015290918291820190565b0390a3610961565b6109d49195505f90612243565b5f935f61094e565b5f82815260086020908152604080832080546009845282852085905581546001600160a01b0319169091556001600160a01b031680845260129092529091208054919291610a2b9083906126c2565b9055604080518281523360208201526001600160a01b0386169291839186917f908d0dfd8e6a1766b34c117564501edc5353761bd2c7b158a6767efbf8885f6391a36040519163a9059cbb60e01b5f5260045260245260205f60448180865af19060015f5114821615610ab2575b6040526108c957635274afe760e01b5f5260045260245ffd5b906001811516610aca57823b15153d15161690610a99565b503d5f823e3d90fd5b61016036600319011261071b576001600160a01b03610af06126ab565b163003610e47576064356001600160a01b03610b0b826126e3565b168015610e2d57338103610e135760843560018103610dfc5750610b2e826127e2565b6001600160a01b0381168015610de2575f9260243580610ca7575b50845f52600b60205260405f205415610c31575b50602090602493855f5260068352610b7a60405f2091825461314b565b90556040516370a0823160e01b815230600482015293849182905afa918215610c26575f92610bf0575b5090610bb2610bb8926137c3565b906126c2565b90805f52600660205260405f20548210610bce57005b5f52600660205260405f2054906325a34a5760e11b5f5260045260245260445ffd5b91506020823d602011610c1e575b81610c0b60209383612243565b8101031261071b57905190610bb2610ba4565b3d9150610bfe565b6040513d5f823e3d90fd5b90610380602492604051938480926320c94b1360e11b82528960048301525afa938415610c26576001600160701b0360a06024966020955f91610c87575b50015116865f52600b845260405f2055935090610b5d565b610ca091506103803d81116107c6576107b68183612243565b5089610c6f565b6040516370a0823160e01b815230600482015291945090602081602481865afa908115610c26575f91610db0575b50604051916323b872dd60e01b5f52336004523060245260445260205f60648180875af160015f5114811615610d91575b826040525f60605215610d7e576370a0823160e01b8252306004830152602082602481865afa8015610c26575f90610d4a575b610d4392506126c2565b9285610b49565b506020823d602011610d76575b81610d6460209383612243565b8101031261071b57610d439151610d39565b3d9150610d57565b82635274afe760e01b5f5260045260245ffd5b6001811516610da757833b15153d151616610d06565b823d5f823e3d90fd5b90506020813d602011610dda575b81610dcb60209383612243565b8101031261071b575186610cd5565b3d9150610dbe565b82846375f5afe960e01b5f5260045260245260445260645ffd5b631e34745960e11b5f52600452600160245260445ffd5b9063b4c20d6760e01b5f526004523360245260445260645ffd5b906375f5afe960e01b5f526004526024525f60445260645ffd5b6001600160a01b03610e576126ab565b16637f4205dd60e11b5f523060045260245260445ffd5b3461071b57602036600319011261071b576004355f526007602052602060405f2054604051908152f35b3461071b57602036600319011261071b576004355f526006602052602060405f2054604051908152f35b3461071b575f36600319011261071b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461071b57604036600319011261071b57610f1f61219d565b6004355f52600d60205260405f209060018060a01b03165f52602052602060405f20541515604051908152f35b3461071b57606036600319011261071b57600435610f6861219d565b815f52600d60205260405f2060018060a01b0382165f5260205260405f20549182156114b857610f97816126e3565b6040516320c94b1360e11b8152600481018390526001600160a01b0382169461038082602481895afa918215610c26575f92611496575b50610fd98285612787565b835f52600660205260405f20549283156114835795829186976040611035988861109a611005826127e2565b988995835f52600c602052855f2060018060a01b0386165f5260205261102c865f2061251f565b9d8e8686612b53565b855163ef200d5560e01b815296879586957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048901612661565b038173734bfc66606dfe7943bcf541cf5dcbc5312e695b5af4958615610c26575f915f97611460575b50875f52600e60205260405f2060018060a01b038b165f526020526101906110f260405f205460020b8461312a565b60020b13918215611426575b9282935f9361123c575b61119c9890851561121357905b85156111ea57915b85156111e457505f9b5b604051986111348a612226565b8b8a5260018060a01b031660208a015260018060a01b03169a8b60408a0152606089015260020b608088015260020b60a087015260c086015260443560e086015261010085015215159687610120850152610140840152610160830152610180820152613158565b805f52600d60205260405f20825f526020527f85dfdb7bf22c5cc99f5a0cc5f318d28b441810bb08c1b718bc1079008fcda2e96040805f2054948151908152336020820152a4005b9b611127565b50895f52600f60205260405f2060018060a01b038d165f5260205260405f205460020b9161111d565b50895f52600e60205260405f2060018060a01b038d165f5260205260405f205460020b90611115565b9250905061124d89828c898c612a3b565b6040516370a0823160e01b8152306004820152966001600160a01b038716602089602481845afa988915610c26575f996113e9575b509060249392916112928d6139d6565b604051600360f81b6020820152601160f81b6021820152909a90611347908e9061044d906112c3816022810161037c565b6112cb6128d0565b926040518960208201525f60408201525f60608201526080808201525f60a082015260a081526112fc60c082612243565b61130585612944565b5261130f84612944565b508051602091820151604080516001600160a01b0393841694810194909452911690820152306060820152610427816080810161037c565b8b5f526006602052602060405f205492604051978880926370a0823160e01b82523060048301525afa8015610c26578e965f916113ae575b5061139e6113a49361139861119c9e94610494946126c2565b9061314b565b966139d6565b9392909850611108565b9b9196505060208b3d6020116113e1575b816113cc60209383612243565b8101031261071b5799518d959061139e61137f565b3d91506113bf565b9392919098506020843d60201161141e575b8161140860209383612243565b8101031261071b57602493519890919293611282565b3d91506113fb565b9150875f52600f60205260405f2060018060a01b038b165f5260205261019061145660405f205460020b8961312a565b60020b13916110fe565b90965061147c915060403d604011610789576107788183612243565b958a6110c3565b84631050251960e11b5f5260045260245ffd5b6114b09192506103803d81116107c6576107b68183612243565b509086610fce565b638623c06f60e01b5f5260045260018060a01b031660245260445260645ffd5b3461071b57604036600319011261071b576004356114f461219d565b90805f52600d60205260405f2060018060a01b0383165f5260205260405f2054918215611555579161001a92611529836127e2565b835f52600c60205260405f2060018060a01b0383165f5260205261154f60405f2061251f565b93612a3b565b90638623c06f60e01b5f5260045260018060a01b031660245260445260645ffd5b3461071b575f36600319011261071b576001546040516001600160a01b039091168152602090f35b3461071b575f36600319011261071b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461071b57604036600319011261071b576115fb61219d565b6004355f908152600c602090815260408083206001600160a01b03948516845282529182902080546001820154600292830154855192871683528187169483019490945260a081811c62ffffff169583019590955260b81c90910b60608201529216608083015290f35b3461071b57604036600319011261071b5761167e61219d565b611686612572565b506004355f52600c60205260405f209060018060a01b03165f5260205260a06116b160405f2061251f565b6116be60405180926121b3565bf35b3461071b575f36600319011261071b576020600554604051908152f35b3461071b575f36600319011261071b576003546040516001600160a01b039091168152602090f35b3461071b57604036600319011261071b57600435611722816126e3565b6040516320c94b1360e11b8152600481018390526001600160a01b038216919061038081602481865afa908115610c26575f91611d2f575b506117658185612787565b604051632c11262b60e11b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048201819052602482018690526044820194909452929173734bfc66606dfe7943bcf541cf5dcbc5312e695b602085606481845af4948515610c26575f95611cf3575b50855f52600d60205260405f2060018060a01b0386165f5260205260405f2054611cb457855f52600a60205260ff60405f205416611c9157611821866127e2565b90865f52600660205260405f205415611c7e576001600160a01b036118468789612843565b1615611c5b575f878152600a60209081526040808320805460ff19166001179055600d82528083206001600160a01b038a1684529091529020548790156118fa575b505061189a9350846024359187613a1c565b815f52600c60205260405f2060018060a01b0382165f5260205260a06118c260405f2061251f565b20917f61f2675031f59d21563ef85d55fe3d258a504397e4a77c0ba13ad620ce073ab560206040519333855260018060a01b031693a4005b61271095611906612572565b508561191189615056565b6001600160a01b0386811695918891811687811015611c53575095935b8760208d60018060a01b0360015416986040519a61194b8c6121f6565b60018060a01b03168b52828b019860018060a01b0316895260408b019e8f526119bc60608c019860c88a5260808d019b8c527f000000000000000000000000000000000000000000000000000000000000000097604051968795869563316d0fe560e01b87528b8b60048901612661565b0381875af4918215610c26578b948f91948f94958d968d955f91611c09575b50976119e68d613d3e565b976001600160a01b0389169687611b2e575b5050505050505050505060205f9160c460018060a01b036003541691604051948593849263f702040560e01b8452611a33600485018d6121b3565b6001600160a01b031660a48401525af18015610c2657611ae8575b505f8a8152600c602090815260408083206001600160a01b038d811685529252909120945185549082166001600160a01b031991821617865592516001860180549a51935160b81b62ffffff60b81b1662ffffff60a01b60a09590951b949094169183166001600160d01b0319909b169a909a1717919091179097559051600290920180549290961691161790935561189a928686611888565b9291906020843d602011611b26575b81611b0460209383612243565b8101031261071b5761189a98611b1b60029561259c565b509850909192611a4e565b3d9150611af7565b60409798999a5090611b57929188519a8b988997889763ef200d5560e01b895260048901612661565b03915af4918215610c26575f905f93611bde575b50611b78611b7e91614167565b92614167565b916001600160a01b031690818111801590611bcb575b611bab5750505060208a8d8d8180808e8e8e6119f8565b63e3b1ec1560e01b5f5260045260245260018060a01b031660445260645ffd5b506001600160a01b038316811015611b94565b611b789350611b7e9150611c009060403d604011610789576107788183612243565b93909150611b6b565b955050965093509350506020813d602011611c4b575b81611c2c60209383612243565b8101031261071b578d8a938e938d96611c458d956122a5565b5f6119db565b3d9150611c1f565b94905061192e565b634550cd6f60e11b5f90815260048890526001600160a01b038716602452604490fd5b86631050251960e11b5f5260045260245ffd5b63465fb04d60e11b5f90815260048790526001600160a01b038616602452604490fd5b5f868152600d602090815260408083206001600160a01b038916808552925282205463f639028560e01b83526004899052602491909152604452606490fd5b9094506020813d602011611d27575b81611d0f60209383612243565b8101031261071b57611d20906122a5565b93866117e0565b3d9150611d02565b611d4891506103803d81116107c6576107b68183612243565b508461175a565b3461071b57604036600319011261071b57611d6861219d565b6004355f52600e60205260405f209060018060a01b03165f52602052602060405f205460020b604051908152f35b3461071b575f36600319011261071b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461071b57604036600319011261071b57611df361219d565b6004355f52600f60205260405f209060018060a01b03165f52602052602060405f205460020b604051908152f35b3461071b575f36600319011261071b57602060405160c88152f35b3461071b575f36600319011261071b575f546040516001600160a01b039091168152602090f35b3461071b57602036600319011261071b576004355f526008602052602060018060a01b0360405f205416604051908152f35b3461071b57602036600319011261071b576004355f526009602052602060405f2054604051908152f35b3461071b575f36600319011261071b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461071b575f36600319011261071b576020600454604051908152f35b3461071b575f36600319011261071b5760206040516127108152f35b3461071b57604036600319011261071b57611f5561219d565b6004355f52600d60205260405f209060018060a01b03165f52602052602060405f2054604051908152f35b3461071b575f36600319011261071b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461071b5760c036600319011261071b576024356004356044356001600160a01b0381169081900361071b576064356001600160a01b038116919082900361071b576084356001600160a01b038116939084900361071b5760a4356001600160a01b038116959086900361071b57600254916001600160a01b03831661210c57831561210c5761271082116120f357811515806120eb575b6120d557806120b7575b6004556005556001600160601b0360a01b16176002556001600160601b0360a01b60035416176003556001600160601b0360a01b60015416176001556001600160601b0360a01b5f5416175f555f80f35b6001600160a01b036120c8826126e3565b168015610e2d5750612066565b9063d95b2ff360e01b5f5260045260245260445ffd5b50801561205c565b50632b478a5160e21b5f5260045261271060245260445ffd5b631cb8f72960e11b5f5260045ffd5b3461071b57602036600319011261071b576004355f52600a602052602060ff60405f2054166040519015158152f35b3461071b57602036600319011261071b576004359063ffffffff60e01b821680920361071b5760209163e49655b760e01b811490811561218c575b5015158152f35b6318b4127160e31b14905083612185565b602435906001600160a01b038216820361071b57565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b60a0810190811067ffffffffffffffff82111761221257604052565b634e487b7160e01b5f52604160045260245ffd5b6101a0810190811067ffffffffffffffff82111761221257604052565b90601f8019910116810190811067ffffffffffffffff82111761221257604052565b519065ffffffffffff8216820361071b57565b519063ffffffff8216820361071b57565b519061ffff8216820361071b57565b5190811515820361071b57565b51906001600160a01b038216820361071b57565b8092910391610380831261071b57610120831261071b57604051610120810181811067ffffffffffffffff821117612212576040526122f782612265565b815261230560208301612265565b602082015261231660408301612265565b604082015261232760608301612265565b606082015261233860808301612278565b608082015260a08201516001600160701b038116810361071b5760a082015261236360c08301612278565b60c082015260e0820151906001600160a01b038216820361071b576102609160e08201526101008301516101008201529361011f19011261071b5760405190610260820182811067ffffffffffffffff8211176122125761251691610360916040526123d26101208201612289565b84526123e16101408201612289565b60208501526123f36101608201612278565b60408501526124056101808201612298565b60608501526124176101a08201612298565b60808501526124296101c08201612298565b60a085015261243b6101e08201612298565b60c085015261244d6102008201612298565b60e085015261245f6102208201612298565b6101008501526124726102408201612298565b6101208501526124856102608201612298565b6101408501526124986102808201612298565b6101608501526124ab6102a08201612298565b6101808501526124be6102c08201612298565b6101a08501526124d16102e08201612298565b6101c08501526124e46103008201612298565b6101e08501526124f76103208201612298565b61020085015261250a61034082016122a5565b61022085015201612289565b61024082015290565b9060405161252c816121f6565b82546001600160a01b0390811682526001840154808216602084015260a081901c62ffffff16604084015260b81c600290810b6060840152909301549092166080830152565b6040519061257f826121f6565b5f6080838281528260208201528260408201528260608201520152565b51908160020b820361071b57565b919082604091031261071b576125cb60206125c48461259c565b930161259c565b90565b610100809165ffffffffffff815116845265ffffffffffff602082015116602085015265ffffffffffff604082015116604085015265ffffffffffff606082015116606085015263ffffffff60808201511660808501526001600160701b0360a08201511660a085015263ffffffff60c08201511660c085015260018060a01b0360e08201511660e08501520151910152565b6001600160a01b0391821681529181166020830152604082019290925291811660608301529182166080820152911660a08201526101e0810192916126a99160c001906125ce565b565b610144356001600160a01b038116810361071b5790565b919082039182116126cf57565b634e487b7160e01b5f52601160045260245ffd5b604051632eec7b5560e11b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610c26575f91612745575b506001600160a01b031690565b90506020813d60201161277f575b8161276060209383612243565b8101031261071b57516001600160a01b038116810361071b575f612738565b3d9150612753565b90815f52600b60205260405f205480159182156127b5575b50506127a85750565b806102886126a99261384b565b600a91925060a06001600160701b0391015116026001600160701b0381169081036126cf57115f8061279f565b60405163ea78803f60e01b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610c26575f9161274557506001600160a01b031690565b604051630862026560e41b815260048101919091526001600160a01b039091166024820152602081806044810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610c26575f9161274557506001600160a01b031690565b67ffffffffffffffff81116122125760051b60200190565b604051606091906128e18382612243565b6002815291601f1901825f5b8281106128f957505050565b8060606020809385010152016128ed565b60405160c0919061291b8382612243565b6005815291601f1901825f5b82811061293357505050565b806060602080938501015201612927565b8051156129515760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156129515760400190565b8051600210156129515760600190565b8051600310156129515760800190565b8051600410156129515760a00190565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b906129dc906040835260408301906129a5565b906020818303910152815180825260208201916020808360051b8301019401925f915b838310612a0e57505050505090565b9091929394602080612a2c600193601f1986820301875289516129a5565b970193019301919392906129ff565b9290612b4d6126a9959392610494612b3d612a5e60018060a01b03885116613ba0565b6104946020890198612b2e612a7b60018060a01b038c5116613ba0565b604051600160f81b6020820152601160f81b60218201526002815290979061044d90612aa8602282612243565b612ab06128d0565b926040519060208201525f60408201525f60608201525f608082015260a0808201525f60c082015260c08152612ae760e082612243565b612af084612944565b52612afa83612944565b5084518e51604080516001600160a01b0393841660208201529290911690820152306060820152610427816080810161037c565b516001600160a01b0316613ba0565b95516001600160a01b0316613ba0565b93613c93565b91929092604051612b65606082612243565b6002815260208101906040368337610708612b7f82612944565b525f612b8a82612965565b52600154604051637cb7cbf960e11b8152926001600160a01b039091169183919060c4830190612bbd60048501886121b3565b60c060a48501525180915260e4830191905f5b8181106130ee575050509181805f9403915afa5f9181612fdb575b50612c1057505050639dbd540560e01b5f5260045260018060a01b031660245260445ffd5b9390929193916002835110612fbe575050612c37612c2d82612965565b5160060b91612944565b5160060b9003667fffffffffffff198112667fffffffffffff8213176126cf5760060b90610708820560020b915f81129081612fad575b50612f98575b612c7d90613d3e565b73fffd8963efd1fc6a506488495d951d51639616826401000276a21982016001600160a01b031611612f7857602081901b640100000000600160c01b031680801561071b5760ff826001600160801b031060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c821060031b177f07060605060205000602030205040001060502050303040105050304000000006f8421084210842108cc6318c6db6d54be85831c1c601f161a17169160808310155f14612f6c5750607e1982011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c6780000000000000001690607f190160401b1717171717171717171717171717693627a301d71055774c85026f028f6481ab7f045a5af012a19d003aa919810160801d60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918282145f14612f44575090505b60c8612f18838361312a565b60020b13612f24575050565b6326c53bb160e21b5f5260020b60045260020b60245260c860445260645ffd5b6001600160a01b0390811690612f5984614167565b1611612f655750612f0c565b9050612f0c565b905081607f031b612d53565b6318521d4960e21b5f9081526001600160a01b0391909116600452602490fd5b90627fffff1981146126cf575f190190612c74565b61070891500760060b15155f612c6e565b639dbd540560e01b5f5260045260018060a01b031660245260445ffd5b9091503d805f833e612fed8183612243565b810160408282031261071b57815167ffffffffffffffff811161071b5782019181601f8401121561071b578251613023816128b8565b936130316040519586612243565b81855260208086019260051b8201019084821161071b57602001915b8183106130d45750505060208101519067ffffffffffffffff821161071b570181601f8201121561071b57805190602080613087846128b8565b6130946040519182612243565b848152019260051b82010192831161071b57602001905b8282106130bc57505050905f612beb565b602080916130c9846122a5565b8152019101906130ab565b82518060060b810361071b5781526020928301920161304d565b825163ffffffff16845286945060209384019390920191600101612bd0565b600291820b910b0390627fffff198212627fffff8313176126cf57565b600282810b9082900b1261314257906125cb9161310d565b6125cb9161310d565b919082018092116126cf57565b80515f9081526006602052604081205580516101608201805190939291613188916001600160a01b031690613dd6565b9261319860c0830194855161314b565b845260608201936131a98551613d3e565b8092845194604081019060018060a01b0382511696602082019360018060a01b03855116908751996132b461010086019182519c608088019d8e5160020b60a08a019c8d5160020b9260018060a01b03895116946101808d019a8b519760646040519e8f906304d14abb60e41b825260018060a01b037f000000000000000000000000000000000000000000000000000000000000000016600483015260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660248301526044820152015260848d015260a48c015260c48b015260018060a01b031660e48a01526101048901526101248801526101448701526101648601906125ce565b6020846102848173734bfc66606dfe7943bcf541cf5dcbc5312e695b5af4938415610c26575f9461378b575b50518451865160e08701519351945161331d9695613316956113989492936001600160a01b039283169391928992911690613ee4565b96516126c2565b835183519195916001600160a01b03918216919061333c908216615056565b16808210156137865750805b6001600160a01b031614801561377a5761338a869889925b1561377157889283915b6133778d5160020b614167565b613384875160020b614167565b91614494565b976001600160801b03891698891561375b5786516040516370a0823160e01b81523060048201529c9d9b9c9a9b906020908c9060249082906001600160a01b03165afa9a8b15610c26575f9b613727575b5086516133f0906001600160a01b03166139d6565b610120870151909c90156134ca575090613417939291518d5160020b865160020b9161452f565b61341f6147ac565b5f19810199908a116126cf5782515f908152600d6020908152604080832087516001600160a01b0390811685529083528184209d909d55925185518352600e825283832087518e1684528252838320805462ffffff1990811662ffffff93841617909155945186518452600f83528484208851909e1684529c90915291902080549092169916989098179097556126a9965b51915190516001600160a01b03908116929116906147e3565b9094506126a99c506136929293915061014086015194519360018060a01b0385511694602081019060018060a01b03825116975f88155f146137125750835b89806136d657505061368d939261037c61366761037c9461367a946001600160801b038b5b6040515f6020820152600b60f81b602182018190526022820152600560fa1b6023820181905260248201526005815299829061356b60258d612243565b61357361290a565b9d604051956020870152604086015216606084015216608082015260a0808201525f60c082015260c081526135a960e082612243565b6135b28a612944565b526135bc89612944565b5060018060a01b038151166040519060208201525f604082015260016060820152606081526135ec608082612243565b6135f58a612965565b526135ff89612965565b5060018060a01b038451166040519060208201525f6040820152600160608201526060815261362f608082612243565b6136388a612975565b5261364289612975565b5051604080516001600160a01b03909216602083015230908201529182906060820190565b61367087612985565b5261364286612985565b61368384612995565b5261043a83612995565b613c48565b806136c8575b81151590816136bd575b506136ae575b506134b1565b6136b7906151d4565b5f6136a8565b90508114155f6136a2565b6136d1816151d4565b613698565b61366761037c9461367a946001600160801b038b61037c958161368d9c9b989e613702575b505061352e565b61370b91615103565b8f816136fb565b841561350957613722858a615103565b613509565b909a506020813d602011613753575b8161374360209383612243565b8101031261071b5751995f6133db565b3d9150613736565b50633df9465560e11b5f5260045260245260445ffd5b8792839161336a565b61338a87988992613360565b613348565b9350916020843d6020116137bb575b816137a760209383612243565b8101031261071b57925192916113986132e0565b3d915061379a565b6001600160a01b03165f818152601060205260409020546137ed575f52601260205260405f205490565b6020602491604051928380926370a0823160e01b82523060048301525afa908115610c26575f9161381c575090565b90506020813d602011613843575b8161383760209383612243565b8101031261071b575190565b3d915061382a565b6040516331a9108f60e11b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610c26575f916138a3575090565b90506020813d6020116138cf575b816138be60209383612243565b8101031261071b576125cb906122a5565b3d91506138b1565b6001600160a01b031690338214158061391e575b6138f3575050565b6084925060405191631326f75560e11b835260048301523360248301526044820152601d6064820152fd5b50604051631a45b42760e11b81523360048201526024810183905260448101829052601d606482015260016084820181905260a482015260208160c4817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610c26575f9161399c575b50156138eb565b90506020813d6020116139ce575b816139b760209383612243565b8101031261071b576139c890612298565b5f613995565b3d91506139aa565b6001600160a01b031661eeee8114613a17576020602491604051928380926370a0823160e01b82523060048301525afa908115610c26575f9161381c575090565b504790565b9391949290845f52600660205260405f2054908115613b97576040805163ef200d5560e01b8152908180613aa28989878e8e7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048901612661565b038173734bfc66606dfe7943bcf541cf5dcbc5312e695b5af4918215610c26576126a9985f925f94613b6e575b5090613b1e91895f52600c60205260405f2060018060a01b0382165f5260205260405f20916040519a613b018c612226565b8b526001600160a01b0390811660208c01521660408a015261251f565b6060880152600290810b60808801520b60a086015260c085015260e08401525f610100840181905260016101208501526101408401526001600160a01b0316610160830152610180820152613158565b613b8e919450613b1e92935060403d604011610789576107788183612243565b93909291613acf565b50505050505050565b6001600160a01b03168015613a17576020602491604051928380926370a0823160e01b82523060048301525afa908115610c26575f9161381c575090565b60018060a01b0360035416603c4201918242116126cf57813b1561071b575f91613c27918360405180968195829463dd46508f60e01b84526040600485015260448401906129a5565b90602483015203925af18015610c2657613c3e5750565b5f6126a991612243565b60035442603c810193916001600160a01b03169084106126cf57803b1561071b575f92613c279260405180968195829463dd46508f60e01b84526040600485015260448401906129a5565b9390831580613d36575b613d2f576001600160a01b03613cb284615056565b16906001600160a01b038116821115613d28575b6001600160a01b031614928315613d215780935b15613d1a57505b80613cfb575b5081613cf257505050565b6126a992614971565b835f526006602052613d1260405f2091825461314b565b90555f613ce7565b9050613ce1565b8193613cda565b5080613cc6565b5050505050565b508115613c9d565b602060a0600180821b036002541692206040518281019182526006604082015260408152613d6d606082612243565b519020602460405180948193631e2eaeaf60e01b835260048301525afa908115610c26575f91613da457506001600160a01b031690565b90506020813d602011613dce575b81613dbf60209383612243565b8101031261071b57515f612738565b3d9150613db2565b60405163c6c116bd60e01b8152306004820152602481018290526020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610c26575f91613eb2575b50815f52601160205260405f205480821115613eaa57613e4f916126c2565b916001600160a01b031690813b1561071b575f9160848392604051948593849263181faefd60e11b845230600485015260248401528760448401523060648401525af18015610c2657613ea0575090565b5f6125cb91612243565b505050505f90565b90506020813d602011613edc575b81613ecd60209383612243565b8101031261071b57515f613e30565b3d9150613ec0565b929594929390916001600160a01b03613efd8487612843565b16908115801561415f575b61415457613f1584614e2d565b60405163b31c3c4160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526044820189905286811660648301819052951660848201529095908990613fa460a48201846125ce565b6020816101c48173734bfc66606dfe7943bcf541cf5dcbc5312e695b5af4908115610c26575f91614122575b50806140d2575b50505090602092915f613fe8614f9a565b97614032604051998a96879586946313da831760e01b86523060048701526024860152604485015260648401528c60848401523060a484015260e060c484015260e48301906129a5565b03925af1928315610c26575f9361409c575b5061404e90614e2d565b908082111561409457614060916126c2565b8082101561408c5750915b82818110614077575050565b6325a34a5760e11b5f5260045260245260445ffd5b90509161406b565b50505f614060565b9092506020813d6020116140ca575b816140b860209383612243565b8101031261071b57519161404e614044565b3d91506140ab565b6101006140ea6140e561ffff9387614e6d565b614f12565b93015160141c1661410d575b8111614104575b8080613fd7565b975060206140fd565b9061411c9060288104906126c2565b906140f6565b90506020813d60201161414c575b8161413d60209383612243565b8101031261071b57515f613fd0565b3d9150614130565b505f96505050505050565b508015613f08565b60020b908160ff1d82810118620d89e881116144815763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b189160028116614465575b60048116614449575b6008811661442d575b60108116614411575b602081166143f5575b604081166143d9575b608081166143bd575b61010081166143a1575b6102008116614385575b6104008116614369575b610800811661434d575b6110008116614331575b6120008116614315575b61400081166142f9575b61800081166142dd575b6201000081166142c1575b6202000081166142a6575b62040000811661428b575b6208000016614272575b5f1261426a575b0160201c90565b5f1904614263565b6b048a170391f7dc42444e8fa290910260801c9061425c565b6d2216e584f5fa1ea926041bedfe9890920260801c91614252565b916e5d6af8dedb81196699c329225ee6040260801c91614247565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161423c565b916f31be135f97d08fd981231505542fcfa60260801c91614231565b916f70d869a156d2a1b890bb3df62baf32f70260801c91614227565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161421d565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91614213565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614209565b916ff3392b0822b70005940c7a398e4b70f30260801c916141ff565b916ff987a7253ac413176f2b074cf7815e540260801c916141f5565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916141eb565b916ffe5dee046a99a2a811c461f1969c30530260801c916141e1565b916fff2ea16466c96a3843ec78b326b528610260801c916141d8565b916fff973b41fa98c081472e6896dfb254c00260801c916141cf565b916fffcb9843d60f6159c9db58835c9266440260801c916141c6565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916141bd565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916141b4565b916ffff97272373d413259a46990580e213a0260801c916141ab565b826345c3193d60e11b5f5260045260245ffd5b936001600160a01b0383811690831611614527575b6001600160a01b038581169590831686116144ca5750506125cb93506150b6565b919490939192906001600160a01b038216111561451b5782916144f1916144f795946150b6565b9361507c565b6001600160801b0381166001600160801b038316105f14614516575090565b905090565b9150506125cb9261507c565b9091906144a9565b805160208201516001600160a01b0390811697911695614726959094939092915f886147975750855b898061476057505061368d939261037c926001600160801b03838161367a959a5b604051600160f91b6020820152600b60f81b602182018190526022820152600560fa1b602382018190526024820152600581529882906145ba60258c612243565b6145c261290a565b9c604051976145d460208a018b6121b3565b60020b60c089015260020b60e088015216610100860152166101208401521661014082015230610160820152610180808201525f6101a08201526101a0815261461f6101c082612243565b61462887612944565b5261463286612944565b5060018060a01b038151166040519060208201525f60408201526001606082015260608152614662608082612243565b61466b87612965565b5261467586612965565b5060018060a01b036020820151166040519060208201525f604082015260016060820152606081526146a8608082612243565b6146b187612975565b526146bb86612975565b508051604080516001600160a01b03909216602083015230908201526146e4816060810161037c565b6146ed87612985565b526146f786612985565b50602090810151604080516001600160a01b039092169282019290925230918101919091529182906060820190565b80614752575b8115159081614747575b5061473e5750565b6126a9906151d4565b90508114155f614736565b61475b816151d4565b61472c565b926001600160801b03838161368d9897949a61037c978361367a98614787575b5050614579565b61479091615103565b8e83614780565b8615614558576147a7878a615103565b614558565b600354604051631d5e528f60e21b815290602090829060049082906001600160a01b03165afa908115610c26575f9161381c575090565b94602060249594939792604051968780926370a0823160e01b825230600483015260018060a01b03165afa948515610c26575f956148df575b50614826876139d6565b94808211156148d657614838916126c2565b935b808211156148cd5761484b916126c2565b925b808211156148c45761485e916126c2565b915b808211156148bb57614871916126c2565b905b8061489c575b508061488457505050565b6126a9926001600160a01b03811661eeee14926152ca565b825f5260066020526148b360405f2091825461314b565b90555f614879565b50505f90614873565b50505f91614860565b50505f9261484d565b50505f9361483a565b9094506020813d60201161490b575b816148fb60209383612243565b8101031261071b5751935f61481c565b3d91506148ee565b9081526001600160a01b039182166020820152604081019290925290911660608201525f6080820181905260e060a08301819052600690830152654c502046656560d01b61010083015261012060c083018190528201526101400190565b908215614e285760055480840290848204036126cf57612710900461499681856126c2565b5f91806149fa575b918160a0935f516020615bf95f395f51905f5295936149de575b604051978852602088015260408701526060860152336080860152600180831b031693a3565b6149f561eeee600180881b0386161483868a6152ca565b6149b8565b9060045491614a098584612843565b6001600160a01b0381169384614a3f5750505050505f516020615bf95f395f51905f529160a0915f86905b91935091935061499e565b614a4d9192939495506127e2565b5f878152600860205260409020549091906001600160a01b031680151580614e15575b614df657505f9160018060a01b0316918215159586614d5c575b6001600160a01b0388169261eeee8403614cc65750906020614acd93926004549087808c6040519889958694859363fef4325760e01b8552309260048601614913565b03925af18015610c265787935f91614c91575b50965b614b8a575b5050915f516020615bf95f395f51905f52959391859360a096614b0d575b5050614a34565b15614b5057875f52600860205260405f20906001600160601b03871b825416179055865f52600960205260405f20614b4684825461314b565b90555b5f80614b06565b50865f52600760205260405f20614b6884825461314b565b90556004545f52601160205260405f20614b8384825461314b565b9055614b49565b838592939896949750819314614c80575b50506040516370a0823160e01b815230600482015290602082602481895afa918215610c26575f92614c4c575b5080821115614c4357614bda916126c2565b915b614bfb83865f526012602052614bf68360405f20546126c2565b61314b565b855f52601260205260405f2055845f52601060205260405f20948554965f1988019788116126cf575f516020615bf95f395f51905f529760a097559193958193959750614ae8565b50505f91614bdc565b9091506020813d602011614c78575b81614c6860209383612243565b8101031261071b5751905f614bc8565b3d9150614c5b565b614c8a92506126c2565b825f614b9b565b9350506020833d602011614cbe575b81614cad60209383612243565b8101031261071b578692515f614ae0565b3d9150614ca0565b969291906020614d0191614cdb888b876153ce565b60045490885f8d6040519687958694859363fef4325760e01b8552309260048601614913565b03925af18015610c265784915f91614d25575b50614d2090988a615445565b614ae3565b9150506020813d602011614d54575b81614d4160209383612243565b8101031261071b57518390614d20614d14565b3d9150614d34565b6040516370a0823160e01b8152306004820152909150602081602481875afa908115610c26575f91614dc4575b5090835f52601260205260405f20614da286825461314b565b9055835f52601060205260405f20805490600182018092116126cf5755614a8a565b90506020813d602011614dee575b81614ddf60209383612243565b8101031261071b57515f614d89565b3d9150614dd2565b90506315de587f60e01b5f5260045260018060a01b031660245260445ffd5b506001600160a01b038316811415614a70565b505050565b614e36816139d6565b906001600160a01b03811661eeee14614e6957614e52906137c3565b80821115614e63576125cb916126c2565b50505f90565b5090565b91905f905f198185099080850292838084109303928084039314614eff57670de0b6b3a7640000831015614edd5750670de0b6b3a7640000907faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac1066994950990828211900360ee1b910360121c170290565b60649186630c740aef60e31b8352600452602452670de0b6b3a7640000604452fd5b505050670de0b6b3a76400009192500490565b905f5f19606184096061840291828083109203918083039214614f90576064821015614f745750606460617f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c2994950990828211900360fe1b910360021c170290565b60649085630c740aef60e31b8252600452606160245281604452fd5b5050606490049150565b5f546001600160a01b03811615615041576040516125cb91614fbd602083612243565b5f825260405190614fcf604083612243565b600782526618d85cda13dd5d60ca1b602092830152604080515f9381019390935260018382015282529091606091821b6bffffffffffffffffffffffff19167310d629fe9be3073a98bda02aa1e4a81d4ad5a7c760631b186001600160e01b0319169161503c9084612243565b615515565b50604051615050602082612243565b5f815290565b6001600160a01b03811661eeee0361507757505f5b6001600160a01b031690565b61506b565b6125cb926150ab9290916001600160a01b03808316908216116150b0575b90036001600160a01b031690615996565b615ae9565b9061509a565b6125cb926150ab929091906001600160a01b03808216908316116150fd575b6150eb6001600160a01b03828116908416615a20565b9190036001600160a01b031691615a69565b906150d5565b6001600160a01b03908116907f00000000000000000000000000000000000000000000000000000000000000001661513c8382846153ce565b6001600160a01b0383116151b45760035490603c4201928342116126cf57813b1561071b575f60849265ffffffffffff829660405198899788966387517c4560e01b8852600488015260018060a01b0316602487015260018060a01b031660448601521660648401525af18015610c2657613c3e5750565b50630e0b51ef60e11b5f5260045260245260018060a01b0360445260645ffd5b6003545f917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b1561071b576040516387517c4560e01b81526001600160a01b03918216600482018190529390911660248201525f60448201819052600160648301528160848183865af18015610c26576152b5575b50615261838284615b0c565b1561526b57505050565b6152758183615b59565b156152a157826152859183615bbd565b1561528e575050565b635274afe760e01b825260045260249150fd5b635274afe760e01b83526004829052602483fd5b6152c29193505f90612243565b5f915f615255565b9192909280156153c8576152de8484612843565b926001600160a01b0384169182156153a5578315938461538c575b1561538657805b833b1561071b575f92610104916040519586948593639e6eec0560e01b8552600485015260018060a01b038b166024850152604484015285606484015260c060848401528560c484015260e060a48401528560e48401525af18015610c2657615376575b5061536d575050565b6126a991615445565b5f61538091612243565b5f615364565b5f615300565b6153a082876001600160a01b038a166153ce565b6152f9565b63283ecc9960e01b5f90815260048390526001600160a01b038716602452604490fd5b50505050565b91906153db828285615b0c565b156153e557505050565b6153ef8184615b59565b1561542757906153ff9183615bbd565b156154075750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b635274afe760e01b5f9081526001600160a01b038416600452602490fd5b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015290929116602083604481845afa928315610c26575f936154ae575b508261548e57505050565b63620e174b60e11b5f5260045260018060a01b031660245260445260645ffd5b9092506020813d6020116154da575b816154ca60209383612243565b8101031261071b5751915f615483565b3d91506154bd565b6020815191015190602081106154f6575090565b5f199060200360031b1b1690565b908151811015612951570160200190565b91929092606093815160208110615984575060208451111561590e5760258451106158f5578351602410156129515760448401518060f81c905f198201968288116126cf575f91611fe0805f9260f31c1616938085046020149015171592836126cf575f1985018581116126cf578a15602060058d901b9c8d041417159a5f19810191908211908c5b6126cf57816126cf57828111156158e3576001600160f81b03196155c2828e615504565b51166155d75780156126cf575f19018c61559e565b9798999a9b5050505050506155ec8388615504565b51875160f882901c9160f31c611fe016821560208483041417156126cf57615613916126c2565b60051c906001850180861190816126cf57604080518881018201601f1916909152818152908b5f5b8281106158cd5750508197600581018091116126cf57866126cf57871115615840575b5050509061566b9161314b565b60ff811161582957600560206156bd9260405197889183808401998051918291018b5e83019163ffffffff60e01b168483015260ff60f81b9060f81b1660248201520301601a19810187520185612243565b8351601f166157f35783515b84526126cf57808651039060405196601f19603f848a010116604052828852015f5b8281106157de5750505061572f9060208060405197889382850196518091885e8401908282015f8152815193849201905e01015f815203601f198101865285612243565b8351601f166157ab5760208061577493865180975b52866040519788958487015e8401908282015f8152815193849201905e01015f815203601f198101845283612243565b81601f815116155f146157845750565b805160051c600181018091116126cf578060051b90808204602014901517156126cf579052565b835160051c91600183018093116126cf578260051b92808404602014901517156126cf5760208091615774948097615744565b80602080928401015182828b010152016156eb565b835160051c600181018091116126cf578060051b908082046020149015176156c957634e487b7160e01b5f52601160045260245ffd5b631f1a544360e31b5f5260045260ff60245260445ffd5b8260249c9a989694939c9b999795929b905b6126cf57818110156158aa57615868818c615504565b5160f81c600181018091116126cf5760ff81116158295760f81b6001600160f81b0319165f1a615898828e615504565b53600581018091116126cf578c615852565b505091939597995091939597505f1982146126cf579060010161566b5f8061565e565b6020818193010151828286010152018c9061563b565b50505061566b9295969798995061314b565b835163d4e1560560e01b5f52600452602560245260445ffd5b60206159546159226125cb959794966154e2565b6040516001600160e01b031990941683850152600160f91b6024850152600584529261594f602582612243565b6154e2565b946040519586938385015260408401528051918291018484015e81015f838201520301601f198101835282612243565b634c84276360e01b5f5260045260245ffd5b90606082901b905f19600160601b84099282808510940393808503948584111561071b5714615a19578190600160601b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b81810291905f1982820991838084109303928084039384600160601b111561071b5714615a6057600160601b910990828211900360a01b910360601c1790565b50505060601c90565b91818302915f198185099383808610950394808603958685111561071b5714615ae1579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b906001600160801b038216809203615afd57565b6393dafdf160e01b5f5260045ffd5b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f5114841615615b48575b50604052565b3d15903b151516909216915f615b42565b60405163095ea7b360e01b5f9081526001600160a01b03909316600452602483905290929160209060448180875af19260015f5114841615615b9b5750604052565b60018492941516615bb4573b15153d151616915f615b42565b833d5f823e3d90fd5b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f5114841615615b9b575060405256fe799fc5c9aa18f6919621cc3591d51e19da1a23afbc8023f54528f632f790b5c8a164736f6c634300081c000a",
	"deployedBytecode": "0x608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c90816301ffc9a71461214a575080630c39832a1461211b57806310e51e1414611fc45780631d831d5c14611f805780632322bc7c14611f3c578063249d39e914611f2057806326c0e4b214611f03578063293c499914611ebf578063293d9dfe14611e955780633676996c14611e6357806345d1012d14611e3c57806346ca626b14611e215780634f3a8ba814611dda5780636afdd85014611d96578063718a77ed14611d4f57806374a2fa6d14611705578063791b98bc146116dd5780637fd6f15c146116c0578063826a5e7414611665578063860870a7146115e257806388bc2ef31461159e5780639785f1ed14611576578063978db958146114d85780639aa5d46214610f4c578063a866583514610f06578063b5d2553314610ec2578063bd81a3de14610e98578063c15a6fce14610e6e578063c5a0938814610ad3578063cd0802e51461088b578063ce974d151461025c578063dc4c90d314610233578063dd1b9c4a14610216578063ecb567a7146101ec5763f434c9140361000f57346101e957806003193601126101e9576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b80fd5b50346101e95760203660031901126101e95760406020916004358152600b83522054604051908152f35b50346101e957806003193601126101e95760206040516127108152f35b50346101e957806003193601126101e9576002546040516001600160a01b039091168152602090f35b50346101e95760803660031901126101e9576004359061027a61219d565b9061028d836102888161384b565b6138d7565b6001600160a01b0361029f8385612843565b161561086a57828152600d6020526040812060018060a01b0383165f5260205260405f20548015610849576102d3846127e2565b848352600c6020526040832060018060a01b0385165f526020526102f960405f2061251f565b91610305838688612b53565b610312838287858a612a3b565b6040516370a0823160e01b81523060048201526001600160a01b03831695906020816024818a5afa90811561083e57869161080c575b50610452610355836139d6565b604051600360f81b6020820152601160f81b602182015290949061044d9061038a81602281015b03601f198101835282612243565b6103926128d0565b926040519060208201526001600160801b036044351660408201526001600160801b036064351660608201526080808201528a60a082015260a081526103d960c082612243565b6103e284612944565b526103ec83612944565b5088516020808b0151604080516001600160a01b0394851693810193909352921691810191909152306060820152610427816080810161037c565b61043084612965565b5261043a83612965565b5061037c604051938492602084016129c9565b613bde565b6040516370a0823160e01b81523060048201526020816024818b5afa9081156107905787916107d8575b506104999161048a916126c2565b92610494836139d6565b6126c2565b926104a3886126e3565b6040516320c94b1360e11b8152600481018a905298906103808a6024816001600160a01b0385165afa998a156107cd579960409161054c9a9b8a9261079b575b50825163ef200d5560e01b81529a8b9283928789887f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048901612661565b038173734bfc66606dfe7943bcf541cf5dcbc5312e695b5af48015610790578798889161075b575b5061057e87613d3e565b8a6105d961058b8c614167565b928b61059686614167565b936001600160a01b036105a88b615056565b16808210156107565750885b6001600160a01b03161493841561074d578a9485925b5015610744578b958693614494565b6001600160801b03811680156107325750602060249a9b9c9d6040519b8c80926370a0823160e01b82523060048301525afa998a15610727578d908d9b6106e7575b50908461063394939261062d8a6139d6565b9d61452f565b61063b6147ac565b5f1981019a908b116106d357899a836106d09b52600d60205260408c2060018060a01b0387165f5260205260405f2055828b52600e60205260408b2060018060a01b0386165f5260205260405f209062ffffff198254169062ffffff16179055818a52600f60205260408a2060018060a01b0385165f5260205260405f209062ffffff198254169062ffffff161790556147e3565b80f35b634e487b7160e01b8a52601160045260248afd5b9392919a50506020833d60201161071f575b8161070660209383612243565b8101031261071b579151989091908c8461061b565b5f80fd5b3d91506106f9565b6040513d8e823e3d90fd5b6364407c8960e01b8c5260045260248bfd5b8a958693614494565b8b9485926105ca565b6105b4565b905061078091985060403d604011610789575b6107788183612243565b8101906125aa565b9790975f610574565b503d61076e565b6040513d89823e3d90fd5b6107be9192506103803d81116107c6575b6107b68183612243565b8101906122b9565b50905f6104e3565b503d6107ac565b6040513d8a823e3d90fd5b90506020813d602011610804575b816107f360209383612243565b8101031261071b575161049961047c565b3d91506107e6565b90506020813d602011610836575b8161082760209383612243565b8101031261071b57515f610348565b3d915061081a565b6040513d88823e3d90fd5b60649284638623c06f60e01b845260045260018060a01b0316602452604452fd5b634550cd6f60e11b81526004929092526001600160a01b0316602452604490fd5b503461071b57604036600319011261071b576004356108a861219d565b906108b6816102888161384b565b805f52600960205260405f2054806109dc575b50805f52600760205260405f205491826108e1578380f35b5f82815260076020526040812055600454906001600160a01b03610904836126e3565b1691823b1561071b575f9160848392604051948593849263b1e6d2a160e01b8452306004850152602484015260018060a01b0316968760448401528960648401525af190816109c7575b5061096857508252600760205260408220555b5f80808380f35b916109bf7f908d0dfd8e6a1766b34c117564501edc5353761bd2c7b158a6767efbf8885f639160045486526011602052604086206109a78282546126c2565b90556040805191825233602083015290918291820190565b0390a3610961565b6109d49195505f90612243565b5f935f61094e565b5f82815260086020908152604080832080546009845282852085905581546001600160a01b0319169091556001600160a01b031680845260129092529091208054919291610a2b9083906126c2565b9055604080518281523360208201526001600160a01b0386169291839186917f908d0dfd8e6a1766b34c117564501edc5353761bd2c7b158a6767efbf8885f6391a36040519163a9059cbb60e01b5f5260045260245260205f60448180865af19060015f5114821615610ab2575b6040526108c957635274afe760e01b5f5260045260245ffd5b906001811516610aca57823b15153d15161690610a99565b503d5f823e3d90fd5b61016036600319011261071b576001600160a01b03610af06126ab565b163003610e47576064356001600160a01b03610b0b826126e3565b168015610e2d57338103610e135760843560018103610dfc5750610b2e826127e2565b6001600160a01b0381168015610de2575f9260243580610ca7575b50845f52600b60205260405f205415610c31575b50602090602493855f5260068352610b7a60405f2091825461314b565b90556040516370a0823160e01b815230600482015293849182905afa918215610c26575f92610bf0575b5090610bb2610bb8926137c3565b906126c2565b90805f52600660205260405f20548210610bce57005b5f52600660205260405f2054906325a34a5760e11b5f5260045260245260445ffd5b91506020823d602011610c1e575b81610c0b60209383612243565b8101031261071b57905190610bb2610ba4565b3d9150610bfe565b6040513d5f823e3d90fd5b90610380602492604051938480926320c94b1360e11b82528960048301525afa938415610c26576001600160701b0360a06024966020955f91610c87575b50015116865f52600b845260405f2055935090610b5d565b610ca091506103803d81116107c6576107b68183612243565b5089610c6f565b6040516370a0823160e01b815230600482015291945090602081602481865afa908115610c26575f91610db0575b50604051916323b872dd60e01b5f52336004523060245260445260205f60648180875af160015f5114811615610d91575b826040525f60605215610d7e576370a0823160e01b8252306004830152602082602481865afa8015610c26575f90610d4a575b610d4392506126c2565b9285610b49565b506020823d602011610d76575b81610d6460209383612243565b8101031261071b57610d439151610d39565b3d9150610d57565b82635274afe760e01b5f5260045260245ffd5b6001811516610da757833b15153d151616610d06565b823d5f823e3d90fd5b90506020813d602011610dda575b81610dcb60209383612243565b8101031261071b575186610cd5565b3d9150610dbe565b82846375f5afe960e01b5f5260045260245260445260645ffd5b631e34745960e11b5f52600452600160245260445ffd5b9063b4c20d6760e01b5f526004523360245260445260645ffd5b906375f5afe960e01b5f526004526024525f60445260645ffd5b6001600160a01b03610e576126ab565b16637f4205dd60e11b5f523060045260245260445ffd5b3461071b57602036600319011261071b576004355f526007602052602060405f2054604051908152f35b3461071b57602036600319011261071b576004355f526006602052602060405f2054604051908152f35b3461071b575f36600319011261071b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461071b57604036600319011261071b57610f1f61219d565b6004355f52600d60205260405f209060018060a01b03165f52602052602060405f20541515604051908152f35b3461071b57606036600319011261071b57600435610f6861219d565b815f52600d60205260405f2060018060a01b0382165f5260205260405f20549182156114b857610f97816126e3565b6040516320c94b1360e11b8152600481018390526001600160a01b0382169461038082602481895afa918215610c26575f92611496575b50610fd98285612787565b835f52600660205260405f20549283156114835795829186976040611035988861109a611005826127e2565b988995835f52600c602052855f2060018060a01b0386165f5260205261102c865f2061251f565b9d8e8686612b53565b855163ef200d5560e01b815296879586957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048901612661565b038173734bfc66606dfe7943bcf541cf5dcbc5312e695b5af4958615610c26575f915f97611460575b50875f52600e60205260405f2060018060a01b038b165f526020526101906110f260405f205460020b8461312a565b60020b13918215611426575b9282935f9361123c575b61119c9890851561121357905b85156111ea57915b85156111e457505f9b5b604051986111348a612226565b8b8a5260018060a01b031660208a015260018060a01b03169a8b60408a0152606089015260020b608088015260020b60a087015260c086015260443560e086015261010085015215159687610120850152610140840152610160830152610180820152613158565b805f52600d60205260405f20825f526020527f85dfdb7bf22c5cc99f5a0cc5f318d28b441810bb08c1b718bc1079008fcda2e96040805f2054948151908152336020820152a4005b9b611127565b50895f52600f60205260405f2060018060a01b038d165f5260205260405f205460020b9161111d565b50895f52600e60205260405f2060018060a01b038d165f5260205260405f205460020b90611115565b9250905061124d89828c898c612a3b565b6040516370a0823160e01b8152306004820152966001600160a01b038716602089602481845afa988915610c26575f996113e9575b509060249392916112928d6139d6565b604051600360f81b6020820152601160f81b6021820152909a90611347908e9061044d906112c3816022810161037c565b6112cb6128d0565b926040518960208201525f60408201525f60608201526080808201525f60a082015260a081526112fc60c082612243565b61130585612944565b5261130f84612944565b508051602091820151604080516001600160a01b0393841694810194909452911690820152306060820152610427816080810161037c565b8b5f526006602052602060405f205492604051978880926370a0823160e01b82523060048301525afa8015610c26578e965f916113ae575b5061139e6113a49361139861119c9e94610494946126c2565b9061314b565b966139d6565b9392909850611108565b9b9196505060208b3d6020116113e1575b816113cc60209383612243565b8101031261071b5799518d959061139e61137f565b3d91506113bf565b9392919098506020843d60201161141e575b8161140860209383612243565b8101031261071b57602493519890919293611282565b3d91506113fb565b9150875f52600f60205260405f2060018060a01b038b165f5260205261019061145660405f205460020b8961312a565b60020b13916110fe565b90965061147c915060403d604011610789576107788183612243565b958a6110c3565b84631050251960e11b5f5260045260245ffd5b6114b09192506103803d81116107c6576107b68183612243565b509086610fce565b638623c06f60e01b5f5260045260018060a01b031660245260445260645ffd5b3461071b57604036600319011261071b576004356114f461219d565b90805f52600d60205260405f2060018060a01b0383165f5260205260405f2054918215611555579161001a92611529836127e2565b835f52600c60205260405f2060018060a01b0383165f5260205261154f60405f2061251f565b93612a3b565b90638623c06f60e01b5f5260045260018060a01b031660245260445260645ffd5b3461071b575f36600319011261071b576001546040516001600160a01b039091168152602090f35b3461071b575f36600319011261071b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461071b57604036600319011261071b576115fb61219d565b6004355f908152600c602090815260408083206001600160a01b03948516845282529182902080546001820154600292830154855192871683528187169483019490945260a081811c62ffffff169583019590955260b81c90910b60608201529216608083015290f35b3461071b57604036600319011261071b5761167e61219d565b611686612572565b506004355f52600c60205260405f209060018060a01b03165f5260205260a06116b160405f2061251f565b6116be60405180926121b3565bf35b3461071b575f36600319011261071b576020600554604051908152f35b3461071b575f36600319011261071b576003546040516001600160a01b039091168152602090f35b3461071b57604036600319011261071b57600435611722816126e3565b6040516320c94b1360e11b8152600481018390526001600160a01b038216919061038081602481865afa908115610c26575f91611d2f575b506117658185612787565b604051632c11262b60e11b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048201819052602482018690526044820194909452929173734bfc66606dfe7943bcf541cf5dcbc5312e695b602085606481845af4948515610c26575f95611cf3575b50855f52600d60205260405f2060018060a01b0386165f5260205260405f2054611cb457855f52600a60205260ff60405f205416611c9157611821866127e2565b90865f52600660205260405f205415611c7e576001600160a01b036118468789612843565b1615611c5b575f878152600a60209081526040808320805460ff19166001179055600d82528083206001600160a01b038a1684529091529020548790156118fa575b505061189a9350846024359187613a1c565b815f52600c60205260405f2060018060a01b0382165f5260205260a06118c260405f2061251f565b20917f61f2675031f59d21563ef85d55fe3d258a504397e4a77c0ba13ad620ce073ab560206040519333855260018060a01b031693a4005b61271095611906612572565b508561191189615056565b6001600160a01b0386811695918891811687811015611c53575095935b8760208d60018060a01b0360015416986040519a61194b8c6121f6565b60018060a01b03168b52828b019860018060a01b0316895260408b019e8f526119bc60608c019860c88a5260808d019b8c527f000000000000000000000000000000000000000000000000000000000000000097604051968795869563316d0fe560e01b87528b8b60048901612661565b0381875af4918215610c26578b948f91948f94958d968d955f91611c09575b50976119e68d613d3e565b976001600160a01b0389169687611b2e575b5050505050505050505060205f9160c460018060a01b036003541691604051948593849263f702040560e01b8452611a33600485018d6121b3565b6001600160a01b031660a48401525af18015610c2657611ae8575b505f8a8152600c602090815260408083206001600160a01b038d811685529252909120945185549082166001600160a01b031991821617865592516001860180549a51935160b81b62ffffff60b81b1662ffffff60a01b60a09590951b949094169183166001600160d01b0319909b169a909a1717919091179097559051600290920180549290961691161790935561189a928686611888565b9291906020843d602011611b26575b81611b0460209383612243565b8101031261071b5761189a98611b1b60029561259c565b509850909192611a4e565b3d9150611af7565b60409798999a5090611b57929188519a8b988997889763ef200d5560e01b895260048901612661565b03915af4918215610c26575f905f93611bde575b50611b78611b7e91614167565b92614167565b916001600160a01b031690818111801590611bcb575b611bab5750505060208a8d8d8180808e8e8e6119f8565b63e3b1ec1560e01b5f5260045260245260018060a01b031660445260645ffd5b506001600160a01b038316811015611b94565b611b789350611b7e9150611c009060403d604011610789576107788183612243565b93909150611b6b565b955050965093509350506020813d602011611c4b575b81611c2c60209383612243565b8101031261071b578d8a938e938d96611c458d956122a5565b5f6119db565b3d9150611c1f565b94905061192e565b634550cd6f60e11b5f90815260048890526001600160a01b038716602452604490fd5b86631050251960e11b5f5260045260245ffd5b63465fb04d60e11b5f90815260048790526001600160a01b038616602452604490fd5b5f868152600d602090815260408083206001600160a01b038916808552925282205463f639028560e01b83526004899052602491909152604452606490fd5b9094506020813d602011611d27575b81611d0f60209383612243565b8101031261071b57611d20906122a5565b93866117e0565b3d9150611d02565b611d4891506103803d81116107c6576107b68183612243565b508461175a565b3461071b57604036600319011261071b57611d6861219d565b6004355f52600e60205260405f209060018060a01b03165f52602052602060405f205460020b604051908152f35b3461071b575f36600319011261071b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461071b57604036600319011261071b57611df361219d565b6004355f52600f60205260405f209060018060a01b03165f52602052602060405f205460020b604051908152f35b3461071b575f36600319011261071b57602060405160c88152f35b3461071b575f36600319011261071b575f546040516001600160a01b039091168152602090f35b3461071b57602036600319011261071b576004355f526008602052602060018060a01b0360405f205416604051908152f35b3461071b57602036600319011261071b576004355f526009602052602060405f2054604051908152f35b3461071b575f36600319011261071b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461071b575f36600319011261071b576020600454604051908152f35b3461071b575f36600319011261071b5760206040516127108152f35b3461071b57604036600319011261071b57611f5561219d565b6004355f52600d60205260405f209060018060a01b03165f52602052602060405f2054604051908152f35b3461071b575f36600319011261071b576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461071b5760c036600319011261071b576024356004356044356001600160a01b0381169081900361071b576064356001600160a01b038116919082900361071b576084356001600160a01b038116939084900361071b5760a4356001600160a01b038116959086900361071b57600254916001600160a01b03831661210c57831561210c5761271082116120f357811515806120eb575b6120d557806120b7575b6004556005556001600160601b0360a01b16176002556001600160601b0360a01b60035416176003556001600160601b0360a01b60015416176001556001600160601b0360a01b5f5416175f555f80f35b6001600160a01b036120c8826126e3565b168015610e2d5750612066565b9063d95b2ff360e01b5f5260045260245260445ffd5b50801561205c565b50632b478a5160e21b5f5260045261271060245260445ffd5b631cb8f72960e11b5f5260045ffd5b3461071b57602036600319011261071b576004355f52600a602052602060ff60405f2054166040519015158152f35b3461071b57602036600319011261071b576004359063ffffffff60e01b821680920361071b5760209163e49655b760e01b811490811561218c575b5015158152f35b6318b4127160e31b14905083612185565b602435906001600160a01b038216820361071b57565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b60a0810190811067ffffffffffffffff82111761221257604052565b634e487b7160e01b5f52604160045260245ffd5b6101a0810190811067ffffffffffffffff82111761221257604052565b90601f8019910116810190811067ffffffffffffffff82111761221257604052565b519065ffffffffffff8216820361071b57565b519063ffffffff8216820361071b57565b519061ffff8216820361071b57565b5190811515820361071b57565b51906001600160a01b038216820361071b57565b8092910391610380831261071b57610120831261071b57604051610120810181811067ffffffffffffffff821117612212576040526122f782612265565b815261230560208301612265565b602082015261231660408301612265565b604082015261232760608301612265565b606082015261233860808301612278565b608082015260a08201516001600160701b038116810361071b5760a082015261236360c08301612278565b60c082015260e0820151906001600160a01b038216820361071b576102609160e08201526101008301516101008201529361011f19011261071b5760405190610260820182811067ffffffffffffffff8211176122125761251691610360916040526123d26101208201612289565b84526123e16101408201612289565b60208501526123f36101608201612278565b60408501526124056101808201612298565b60608501526124176101a08201612298565b60808501526124296101c08201612298565b60a085015261243b6101e08201612298565b60c085015261244d6102008201612298565b60e085015261245f6102208201612298565b6101008501526124726102408201612298565b6101208501526124856102608201612298565b6101408501526124986102808201612298565b6101608501526124ab6102a08201612298565b6101808501526124be6102c08201612298565b6101a08501526124d16102e08201612298565b6101c08501526124e46103008201612298565b6101e08501526124f76103208201612298565b61020085015261250a61034082016122a5565b61022085015201612289565b61024082015290565b9060405161252c816121f6565b82546001600160a01b0390811682526001840154808216602084015260a081901c62ffffff16604084015260b81c600290810b6060840152909301549092166080830152565b6040519061257f826121f6565b5f6080838281528260208201528260408201528260608201520152565b51908160020b820361071b57565b919082604091031261071b576125cb60206125c48461259c565b930161259c565b90565b610100809165ffffffffffff815116845265ffffffffffff602082015116602085015265ffffffffffff604082015116604085015265ffffffffffff606082015116606085015263ffffffff60808201511660808501526001600160701b0360a08201511660a085015263ffffffff60c08201511660c085015260018060a01b0360e08201511660e08501520151910152565b6001600160a01b0391821681529181166020830152604082019290925291811660608301529182166080820152911660a08201526101e0810192916126a99160c001906125ce565b565b610144356001600160a01b038116810361071b5790565b919082039182116126cf57565b634e487b7160e01b5f52601160045260245ffd5b604051632eec7b5560e11b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610c26575f91612745575b506001600160a01b031690565b90506020813d60201161277f575b8161276060209383612243565b8101031261071b57516001600160a01b038116810361071b575f612738565b3d9150612753565b90815f52600b60205260405f205480159182156127b5575b50506127a85750565b806102886126a99261384b565b600a91925060a06001600160701b0391015116026001600160701b0381169081036126cf57115f8061279f565b60405163ea78803f60e01b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610c26575f9161274557506001600160a01b031690565b604051630862026560e41b815260048101919091526001600160a01b039091166024820152602081806044810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610c26575f9161274557506001600160a01b031690565b67ffffffffffffffff81116122125760051b60200190565b604051606091906128e18382612243565b6002815291601f1901825f5b8281106128f957505050565b8060606020809385010152016128ed565b60405160c0919061291b8382612243565b6005815291601f1901825f5b82811061293357505050565b806060602080938501015201612927565b8051156129515760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156129515760400190565b8051600210156129515760600190565b8051600310156129515760800190565b8051600410156129515760a00190565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b906129dc906040835260408301906129a5565b906020818303910152815180825260208201916020808360051b8301019401925f915b838310612a0e57505050505090565b9091929394602080612a2c600193601f1986820301875289516129a5565b970193019301919392906129ff565b9290612b4d6126a9959392610494612b3d612a5e60018060a01b03885116613ba0565b6104946020890198612b2e612a7b60018060a01b038c5116613ba0565b604051600160f81b6020820152601160f81b60218201526002815290979061044d90612aa8602282612243565b612ab06128d0565b926040519060208201525f60408201525f60608201525f608082015260a0808201525f60c082015260c08152612ae760e082612243565b612af084612944565b52612afa83612944565b5084518e51604080516001600160a01b0393841660208201529290911690820152306060820152610427816080810161037c565b516001600160a01b0316613ba0565b95516001600160a01b0316613ba0565b93613c93565b91929092604051612b65606082612243565b6002815260208101906040368337610708612b7f82612944565b525f612b8a82612965565b52600154604051637cb7cbf960e11b8152926001600160a01b039091169183919060c4830190612bbd60048501886121b3565b60c060a48501525180915260e4830191905f5b8181106130ee575050509181805f9403915afa5f9181612fdb575b50612c1057505050639dbd540560e01b5f5260045260018060a01b031660245260445ffd5b9390929193916002835110612fbe575050612c37612c2d82612965565b5160060b91612944565b5160060b9003667fffffffffffff198112667fffffffffffff8213176126cf5760060b90610708820560020b915f81129081612fad575b50612f98575b612c7d90613d3e565b73fffd8963efd1fc6a506488495d951d51639616826401000276a21982016001600160a01b031611612f7857602081901b640100000000600160c01b031680801561071b5760ff826001600160801b031060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c821060031b177f07060605060205000602030205040001060502050303040105050304000000006f8421084210842108cc6318c6db6d54be85831c1c601f161a17169160808310155f14612f6c5750607e1982011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c6780000000000000001690607f190160401b1717171717171717171717171717693627a301d71055774c85026f028f6481ab7f045a5af012a19d003aa919810160801d60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918282145f14612f44575090505b60c8612f18838361312a565b60020b13612f24575050565b6326c53bb160e21b5f5260020b60045260020b60245260c860445260645ffd5b6001600160a01b0390811690612f5984614167565b1611612f655750612f0c565b9050612f0c565b905081607f031b612d53565b6318521d4960e21b5f9081526001600160a01b0391909116600452602490fd5b90627fffff1981146126cf575f190190612c74565b61070891500760060b15155f612c6e565b639dbd540560e01b5f5260045260018060a01b031660245260445ffd5b9091503d805f833e612fed8183612243565b810160408282031261071b57815167ffffffffffffffff811161071b5782019181601f8401121561071b578251613023816128b8565b936130316040519586612243565b81855260208086019260051b8201019084821161071b57602001915b8183106130d45750505060208101519067ffffffffffffffff821161071b570181601f8201121561071b57805190602080613087846128b8565b6130946040519182612243565b848152019260051b82010192831161071b57602001905b8282106130bc57505050905f612beb565b602080916130c9846122a5565b8152019101906130ab565b82518060060b810361071b5781526020928301920161304d565b825163ffffffff16845286945060209384019390920191600101612bd0565b600291820b910b0390627fffff198212627fffff8313176126cf57565b600282810b9082900b1261314257906125cb9161310d565b6125cb9161310d565b919082018092116126cf57565b80515f9081526006602052604081205580516101608201805190939291613188916001600160a01b031690613dd6565b9261319860c0830194855161314b565b845260608201936131a98551613d3e565b8092845194604081019060018060a01b0382511696602082019360018060a01b03855116908751996132b461010086019182519c608088019d8e5160020b60a08a019c8d5160020b9260018060a01b03895116946101808d019a8b519760646040519e8f906304d14abb60e41b825260018060a01b037f000000000000000000000000000000000000000000000000000000000000000016600483015260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660248301526044820152015260848d015260a48c015260c48b015260018060a01b031660e48a01526101048901526101248801526101448701526101648601906125ce565b6020846102848173734bfc66606dfe7943bcf541cf5dcbc5312e695b5af4938415610c26575f9461378b575b50518451865160e08701519351945161331d9695613316956113989492936001600160a01b039283169391928992911690613ee4565b96516126c2565b835183519195916001600160a01b03918216919061333c908216615056565b16808210156137865750805b6001600160a01b031614801561377a5761338a869889925b1561377157889283915b6133778d5160020b614167565b613384875160020b614167565b91614494565b976001600160801b03891698891561375b5786516040516370a0823160e01b81523060048201529c9d9b9c9a9b906020908c9060249082906001600160a01b03165afa9a8b15610c26575f9b613727575b5086516133f0906001600160a01b03166139d6565b610120870151909c90156134ca575090613417939291518d5160020b865160020b9161452f565b61341f6147ac565b5f19810199908a116126cf5782515f908152600d6020908152604080832087516001600160a01b0390811685529083528184209d909d55925185518352600e825283832087518e1684528252838320805462ffffff1990811662ffffff93841617909155945186518452600f83528484208851909e1684529c90915291902080549092169916989098179097556126a9965b51915190516001600160a01b03908116929116906147e3565b9094506126a99c506136929293915061014086015194519360018060a01b0385511694602081019060018060a01b03825116975f88155f146137125750835b89806136d657505061368d939261037c61366761037c9461367a946001600160801b038b5b6040515f6020820152600b60f81b602182018190526022820152600560fa1b6023820181905260248201526005815299829061356b60258d612243565b61357361290a565b9d604051956020870152604086015216606084015216608082015260a0808201525f60c082015260c081526135a960e082612243565b6135b28a612944565b526135bc89612944565b5060018060a01b038151166040519060208201525f604082015260016060820152606081526135ec608082612243565b6135f58a612965565b526135ff89612965565b5060018060a01b038451166040519060208201525f6040820152600160608201526060815261362f608082612243565b6136388a612975565b5261364289612975565b5051604080516001600160a01b03909216602083015230908201529182906060820190565b61367087612985565b5261364286612985565b61368384612995565b5261043a83612995565b613c48565b806136c8575b81151590816136bd575b506136ae575b506134b1565b6136b7906151d4565b5f6136a8565b90508114155f6136a2565b6136d1816151d4565b613698565b61366761037c9461367a946001600160801b038b61037c958161368d9c9b989e613702575b505061352e565b61370b91615103565b8f816136fb565b841561350957613722858a615103565b613509565b909a506020813d602011613753575b8161374360209383612243565b8101031261071b5751995f6133db565b3d9150613736565b50633df9465560e11b5f5260045260245260445ffd5b8792839161336a565b61338a87988992613360565b613348565b9350916020843d6020116137bb575b816137a760209383612243565b8101031261071b57925192916113986132e0565b3d915061379a565b6001600160a01b03165f818152601060205260409020546137ed575f52601260205260405f205490565b6020602491604051928380926370a0823160e01b82523060048301525afa908115610c26575f9161381c575090565b90506020813d602011613843575b8161383760209383612243565b8101031261071b575190565b3d915061382a565b6040516331a9108f60e11b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610c26575f916138a3575090565b90506020813d6020116138cf575b816138be60209383612243565b8101031261071b576125cb906122a5565b3d91506138b1565b6001600160a01b031690338214158061391e575b6138f3575050565b6084925060405191631326f75560e11b835260048301523360248301526044820152601d6064820152fd5b50604051631a45b42760e11b81523360048201526024810183905260448101829052601d606482015260016084820181905260a482015260208160c4817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610c26575f9161399c575b50156138eb565b90506020813d6020116139ce575b816139b760209383612243565b8101031261071b576139c890612298565b5f613995565b3d91506139aa565b6001600160a01b031661eeee8114613a17576020602491604051928380926370a0823160e01b82523060048301525afa908115610c26575f9161381c575090565b504790565b9391949290845f52600660205260405f2054908115613b97576040805163ef200d5560e01b8152908180613aa28989878e8e7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048901612661565b038173734bfc66606dfe7943bcf541cf5dcbc5312e695b5af4918215610c26576126a9985f925f94613b6e575b5090613b1e91895f52600c60205260405f2060018060a01b0382165f5260205260405f20916040519a613b018c612226565b8b526001600160a01b0390811660208c01521660408a015261251f565b6060880152600290810b60808801520b60a086015260c085015260e08401525f610100840181905260016101208501526101408401526001600160a01b0316610160830152610180820152613158565b613b8e919450613b1e92935060403d604011610789576107788183612243565b93909291613acf565b50505050505050565b6001600160a01b03168015613a17576020602491604051928380926370a0823160e01b82523060048301525afa908115610c26575f9161381c575090565b60018060a01b0360035416603c4201918242116126cf57813b1561071b575f91613c27918360405180968195829463dd46508f60e01b84526040600485015260448401906129a5565b90602483015203925af18015610c2657613c3e5750565b5f6126a991612243565b60035442603c810193916001600160a01b03169084106126cf57803b1561071b575f92613c279260405180968195829463dd46508f60e01b84526040600485015260448401906129a5565b9390831580613d36575b613d2f576001600160a01b03613cb284615056565b16906001600160a01b038116821115613d28575b6001600160a01b031614928315613d215780935b15613d1a57505b80613cfb575b5081613cf257505050565b6126a992614971565b835f526006602052613d1260405f2091825461314b565b90555f613ce7565b9050613ce1565b8193613cda565b5080613cc6565b5050505050565b508115613c9d565b602060a0600180821b036002541692206040518281019182526006604082015260408152613d6d606082612243565b519020602460405180948193631e2eaeaf60e01b835260048301525afa908115610c26575f91613da457506001600160a01b031690565b90506020813d602011613dce575b81613dbf60209383612243565b8101031261071b57515f612738565b3d9150613db2565b60405163c6c116bd60e01b8152306004820152602481018290526020816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610c26575f91613eb2575b50815f52601160205260405f205480821115613eaa57613e4f916126c2565b916001600160a01b031690813b1561071b575f9160848392604051948593849263181faefd60e11b845230600485015260248401528760448401523060648401525af18015610c2657613ea0575090565b5f6125cb91612243565b505050505f90565b90506020813d602011613edc575b81613ecd60209383612243565b8101031261071b57515f613e30565b3d9150613ec0565b929594929390916001600160a01b03613efd8487612843565b16908115801561415f575b61415457613f1584614e2d565b60405163b31c3c4160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526044820189905286811660648301819052951660848201529095908990613fa460a48201846125ce565b6020816101c48173734bfc66606dfe7943bcf541cf5dcbc5312e695b5af4908115610c26575f91614122575b50806140d2575b50505090602092915f613fe8614f9a565b97614032604051998a96879586946313da831760e01b86523060048701526024860152604485015260648401528c60848401523060a484015260e060c484015260e48301906129a5565b03925af1928315610c26575f9361409c575b5061404e90614e2d565b908082111561409457614060916126c2565b8082101561408c5750915b82818110614077575050565b6325a34a5760e11b5f5260045260245260445ffd5b90509161406b565b50505f614060565b9092506020813d6020116140ca575b816140b860209383612243565b8101031261071b57519161404e614044565b3d91506140ab565b6101006140ea6140e561ffff9387614e6d565b614f12565b93015160141c1661410d575b8111614104575b8080613fd7565b975060206140fd565b9061411c9060288104906126c2565b906140f6565b90506020813d60201161414c575b8161413d60209383612243565b8101031261071b57515f613fd0565b3d9150614130565b505f96505050505050565b508015613f08565b60020b908160ff1d82810118620d89e881116144815763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b189160028116614465575b60048116614449575b6008811661442d575b60108116614411575b602081166143f5575b604081166143d9575b608081166143bd575b61010081166143a1575b6102008116614385575b6104008116614369575b610800811661434d575b6110008116614331575b6120008116614315575b61400081166142f9575b61800081166142dd575b6201000081166142c1575b6202000081166142a6575b62040000811661428b575b6208000016614272575b5f1261426a575b0160201c90565b5f1904614263565b6b048a170391f7dc42444e8fa290910260801c9061425c565b6d2216e584f5fa1ea926041bedfe9890920260801c91614252565b916e5d6af8dedb81196699c329225ee6040260801c91614247565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161423c565b916f31be135f97d08fd981231505542fcfa60260801c91614231565b916f70d869a156d2a1b890bb3df62baf32f70260801c91614227565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161421d565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91614213565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614209565b916ff3392b0822b70005940c7a398e4b70f30260801c916141ff565b916ff987a7253ac413176f2b074cf7815e540260801c916141f5565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916141eb565b916ffe5dee046a99a2a811c461f1969c30530260801c916141e1565b916fff2ea16466c96a3843ec78b326b528610260801c916141d8565b916fff973b41fa98c081472e6896dfb254c00260801c916141cf565b916fffcb9843d60f6159c9db58835c9266440260801c916141c6565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916141bd565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916141b4565b916ffff97272373d413259a46990580e213a0260801c916141ab565b826345c3193d60e11b5f5260045260245ffd5b936001600160a01b0383811690831611614527575b6001600160a01b038581169590831686116144ca5750506125cb93506150b6565b919490939192906001600160a01b038216111561451b5782916144f1916144f795946150b6565b9361507c565b6001600160801b0381166001600160801b038316105f14614516575090565b905090565b9150506125cb9261507c565b9091906144a9565b805160208201516001600160a01b0390811697911695614726959094939092915f886147975750855b898061476057505061368d939261037c926001600160801b03838161367a959a5b604051600160f91b6020820152600b60f81b602182018190526022820152600560fa1b602382018190526024820152600581529882906145ba60258c612243565b6145c261290a565b9c604051976145d460208a018b6121b3565b60020b60c089015260020b60e088015216610100860152166101208401521661014082015230610160820152610180808201525f6101a08201526101a0815261461f6101c082612243565b61462887612944565b5261463286612944565b5060018060a01b038151166040519060208201525f60408201526001606082015260608152614662608082612243565b61466b87612965565b5261467586612965565b5060018060a01b036020820151166040519060208201525f604082015260016060820152606081526146a8608082612243565b6146b187612975565b526146bb86612975565b508051604080516001600160a01b03909216602083015230908201526146e4816060810161037c565b6146ed87612985565b526146f786612985565b50602090810151604080516001600160a01b039092169282019290925230918101919091529182906060820190565b80614752575b8115159081614747575b5061473e5750565b6126a9906151d4565b90508114155f614736565b61475b816151d4565b61472c565b926001600160801b03838161368d9897949a61037c978361367a98614787575b5050614579565b61479091615103565b8e83614780565b8615614558576147a7878a615103565b614558565b600354604051631d5e528f60e21b815290602090829060049082906001600160a01b03165afa908115610c26575f9161381c575090565b94602060249594939792604051968780926370a0823160e01b825230600483015260018060a01b03165afa948515610c26575f956148df575b50614826876139d6565b94808211156148d657614838916126c2565b935b808211156148cd5761484b916126c2565b925b808211156148c45761485e916126c2565b915b808211156148bb57614871916126c2565b905b8061489c575b508061488457505050565b6126a9926001600160a01b03811661eeee14926152ca565b825f5260066020526148b360405f2091825461314b565b90555f614879565b50505f90614873565b50505f91614860565b50505f9261484d565b50505f9361483a565b9094506020813d60201161490b575b816148fb60209383612243565b8101031261071b5751935f61481c565b3d91506148ee565b9081526001600160a01b039182166020820152604081019290925290911660608201525f6080820181905260e060a08301819052600690830152654c502046656560d01b61010083015261012060c083018190528201526101400190565b908215614e285760055480840290848204036126cf57612710900461499681856126c2565b5f91806149fa575b918160a0935f516020615bf95f395f51905f5295936149de575b604051978852602088015260408701526060860152336080860152600180831b031693a3565b6149f561eeee600180881b0386161483868a6152ca565b6149b8565b9060045491614a098584612843565b6001600160a01b0381169384614a3f5750505050505f516020615bf95f395f51905f529160a0915f86905b91935091935061499e565b614a4d9192939495506127e2565b5f878152600860205260409020549091906001600160a01b031680151580614e15575b614df657505f9160018060a01b0316918215159586614d5c575b6001600160a01b0388169261eeee8403614cc65750906020614acd93926004549087808c6040519889958694859363fef4325760e01b8552309260048601614913565b03925af18015610c265787935f91614c91575b50965b614b8a575b5050915f516020615bf95f395f51905f52959391859360a096614b0d575b5050614a34565b15614b5057875f52600860205260405f20906001600160601b03871b825416179055865f52600960205260405f20614b4684825461314b565b90555b5f80614b06565b50865f52600760205260405f20614b6884825461314b565b90556004545f52601160205260405f20614b8384825461314b565b9055614b49565b838592939896949750819314614c80575b50506040516370a0823160e01b815230600482015290602082602481895afa918215610c26575f92614c4c575b5080821115614c4357614bda916126c2565b915b614bfb83865f526012602052614bf68360405f20546126c2565b61314b565b855f52601260205260405f2055845f52601060205260405f20948554965f1988019788116126cf575f516020615bf95f395f51905f529760a097559193958193959750614ae8565b50505f91614bdc565b9091506020813d602011614c78575b81614c6860209383612243565b8101031261071b5751905f614bc8565b3d9150614c5b565b614c8a92506126c2565b825f614b9b565b9350506020833d602011614cbe575b81614cad60209383612243565b8101031261071b578692515f614ae0565b3d9150614ca0565b969291906020614d0191614cdb888b876153ce565b60045490885f8d6040519687958694859363fef4325760e01b8552309260048601614913565b03925af18015610c265784915f91614d25575b50614d2090988a615445565b614ae3565b9150506020813d602011614d54575b81614d4160209383612243565b8101031261071b57518390614d20614d14565b3d9150614d34565b6040516370a0823160e01b8152306004820152909150602081602481875afa908115610c26575f91614dc4575b5090835f52601260205260405f20614da286825461314b565b9055835f52601060205260405f20805490600182018092116126cf5755614a8a565b90506020813d602011614dee575b81614ddf60209383612243565b8101031261071b57515f614d89565b3d9150614dd2565b90506315de587f60e01b5f5260045260018060a01b031660245260445ffd5b506001600160a01b038316811415614a70565b505050565b614e36816139d6565b906001600160a01b03811661eeee14614e6957614e52906137c3565b80821115614e63576125cb916126c2565b50505f90565b5090565b91905f905f198185099080850292838084109303928084039314614eff57670de0b6b3a7640000831015614edd5750670de0b6b3a7640000907faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac1066994950990828211900360ee1b910360121c170290565b60649186630c740aef60e31b8352600452602452670de0b6b3a7640000604452fd5b505050670de0b6b3a76400009192500490565b905f5f19606184096061840291828083109203918083039214614f90576064821015614f745750606460617f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c2994950990828211900360fe1b910360021c170290565b60649085630c740aef60e31b8252600452606160245281604452fd5b5050606490049150565b5f546001600160a01b03811615615041576040516125cb91614fbd602083612243565b5f825260405190614fcf604083612243565b600782526618d85cda13dd5d60ca1b602092830152604080515f9381019390935260018382015282529091606091821b6bffffffffffffffffffffffff19167310d629fe9be3073a98bda02aa1e4a81d4ad5a7c760631b186001600160e01b0319169161503c9084612243565b615515565b50604051615050602082612243565b5f815290565b6001600160a01b03811661eeee0361507757505f5b6001600160a01b031690565b61506b565b6125cb926150ab9290916001600160a01b03808316908216116150b0575b90036001600160a01b031690615996565b615ae9565b9061509a565b6125cb926150ab929091906001600160a01b03808216908316116150fd575b6150eb6001600160a01b03828116908416615a20565b9190036001600160a01b031691615a69565b906150d5565b6001600160a01b03908116907f00000000000000000000000000000000000000000000000000000000000000001661513c8382846153ce565b6001600160a01b0383116151b45760035490603c4201928342116126cf57813b1561071b575f60849265ffffffffffff829660405198899788966387517c4560e01b8852600488015260018060a01b0316602487015260018060a01b031660448601521660648401525af18015610c2657613c3e5750565b50630e0b51ef60e11b5f5260045260245260018060a01b0360445260645ffd5b6003545f917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b1561071b576040516387517c4560e01b81526001600160a01b03918216600482018190529390911660248201525f60448201819052600160648301528160848183865af18015610c26576152b5575b50615261838284615b0c565b1561526b57505050565b6152758183615b59565b156152a157826152859183615bbd565b1561528e575050565b635274afe760e01b825260045260249150fd5b635274afe760e01b83526004829052602483fd5b6152c29193505f90612243565b5f915f615255565b9192909280156153c8576152de8484612843565b926001600160a01b0384169182156153a5578315938461538c575b1561538657805b833b1561071b575f92610104916040519586948593639e6eec0560e01b8552600485015260018060a01b038b166024850152604484015285606484015260c060848401528560c484015260e060a48401528560e48401525af18015610c2657615376575b5061536d575050565b6126a991615445565b5f61538091612243565b5f615364565b5f615300565b6153a082876001600160a01b038a166153ce565b6152f9565b63283ecc9960e01b5f90815260048390526001600160a01b038716602452604490fd5b50505050565b91906153db828285615b0c565b156153e557505050565b6153ef8184615b59565b1561542757906153ff9183615bbd565b156154075750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b635274afe760e01b5f9081526001600160a01b038416600452602490fd5b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015290929116602083604481845afa928315610c26575f936154ae575b508261548e57505050565b63620e174b60e11b5f5260045260018060a01b031660245260445260645ffd5b9092506020813d6020116154da575b816154ca60209383612243565b8101031261071b5751915f615483565b3d91506154bd565b6020815191015190602081106154f6575090565b5f199060200360031b1b1690565b908151811015612951570160200190565b91929092606093815160208110615984575060208451111561590e5760258451106158f5578351602410156129515760448401518060f81c905f198201968288116126cf575f91611fe0805f9260f31c1616938085046020149015171592836126cf575f1985018581116126cf578a15602060058d901b9c8d041417159a5f19810191908211908c5b6126cf57816126cf57828111156158e3576001600160f81b03196155c2828e615504565b51166155d75780156126cf575f19018c61559e565b9798999a9b5050505050506155ec8388615504565b51875160f882901c9160f31c611fe016821560208483041417156126cf57615613916126c2565b60051c906001850180861190816126cf57604080518881018201601f1916909152818152908b5f5b8281106158cd5750508197600581018091116126cf57866126cf57871115615840575b5050509061566b9161314b565b60ff811161582957600560206156bd9260405197889183808401998051918291018b5e83019163ffffffff60e01b168483015260ff60f81b9060f81b1660248201520301601a19810187520185612243565b8351601f166157f35783515b84526126cf57808651039060405196601f19603f848a010116604052828852015f5b8281106157de5750505061572f9060208060405197889382850196518091885e8401908282015f8152815193849201905e01015f815203601f198101865285612243565b8351601f166157ab5760208061577493865180975b52866040519788958487015e8401908282015f8152815193849201905e01015f815203601f198101845283612243565b81601f815116155f146157845750565b805160051c600181018091116126cf578060051b90808204602014901517156126cf579052565b835160051c91600183018093116126cf578260051b92808404602014901517156126cf5760208091615774948097615744565b80602080928401015182828b010152016156eb565b835160051c600181018091116126cf578060051b908082046020149015176156c957634e487b7160e01b5f52601160045260245ffd5b631f1a544360e31b5f5260045260ff60245260445ffd5b8260249c9a989694939c9b999795929b905b6126cf57818110156158aa57615868818c615504565b5160f81c600181018091116126cf5760ff81116158295760f81b6001600160f81b0319165f1a615898828e615504565b53600581018091116126cf578c615852565b505091939597995091939597505f1982146126cf579060010161566b5f8061565e565b6020818193010151828286010152018c9061563b565b50505061566b9295969798995061314b565b835163d4e1560560e01b5f52600452602560245260445ffd5b60206159546159226125cb959794966154e2565b6040516001600160e01b031990941683850152600160f91b6024850152600584529261594f602582612243565b6154e2565b946040519586938385015260408401528051918291018484015e81015f838201520301601f198101835282612243565b634c84276360e01b5f5260045260245ffd5b90606082901b905f19600160601b84099282808510940393808503948584111561071b5714615a19578190600160601b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b81810291905f1982820991838084109303928084039384600160601b111561071b5714615a6057600160601b910990828211900360a01b910360601c1790565b50505060601c90565b91818302915f198185099383808610950394808603958685111561071b5714615ae1579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b906001600160801b038216809203615afd57565b6393dafdf160e01b5f5260045ffd5b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f5114841615615b48575b50604052565b3d15903b151516909216915f615b42565b60405163095ea7b360e01b5f9081526001600160a01b03909316600452602483905290929160209060448180875af19260015f5114841615615b9b5750604052565b60018492941516615bb4573b15153d151616915f615b42565b833d5f823e3d90fd5b92916040519163095ea7b360e01b5f5260018060a01b031660045260245260205f60448180875af19260015f5114841615615b9b575060405256fe799fc5c9aa18f6919621cc3591d51e19da1a23afbc8023f54528f632f790b5c8a164736f6c634300081c000a",
	"metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokens\",\"type\":\"address\"},{\"internalType\":\"contract IAllowanceTransfer\",\"name\":\"permit2\",\"type\":\"address\"},{\"internalType\":\"contract IJBSuckerRegistry\",\"name\":\"suckerRegistry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMetadataResolver_DataNotPadded\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxOffset\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMetadataResolver_MetadataTooLong\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"metadataLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minMetadataLength\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMetadataResolver_MetadataTooShort\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_AlreadyInitialized\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"existingPrice\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"lowerBound\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"upperBound\",\"type\":\"uint160\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_ExistingPoolPriceOutOfBounds\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feePercent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeProjectId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_FeePercentWithoutFeeProject\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_InsufficientLiquidity\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feePercent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePercent\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_InvalidFeePercent\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"projectToken\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_InvalidProjectId\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_InvalidStageForAction\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_InvalidTerminalToken\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_NoTokensAccumulated\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"expectedHook\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actualHook\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_NotHookSpecifiedInContext\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_OnlyOneTerminalTokenSupported\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_Permit2AmountOverflow\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_PoolAlreadyDeployed\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"spotTick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"twapTick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"maxDeviationTicks\",\"type\":\"int24\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_PriceDeviationTooHigh\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_SplitSenderNotValidControllerOrTerminal\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_TemporaryAllowanceNotConsumed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_TerminalNotFound\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredGroupId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_TerminalTokensNotAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_TwapUnavailable\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nextToken\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_UnclaimedFeeTokenChanged\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHook_ZeroLiquidity\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"FeeTokensClaimed\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"remainingAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"feeTokensMinted\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LPFeesRouted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"isNewPosition\",\"type\":\"bool\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LiquidityAdded\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ProjectDeployed\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"BPS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMIT2\",\"outputs\":[{\"internalType\":\"contract IAllowanceTransfer\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"POOL_FEE\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"SUCKER_REGISTRY\",\"outputs\":[{\"internalType\":\"contract IJBSuckerRegistry\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TICK_SPACING\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKENS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"accumulatedProjectTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"accumulatedProjectTokens\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"activeTickLowerOf\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"activeTickUpperOf\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minCashOutReturn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addLiquidity\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"buybackHook\",\"outputs\":[{\"internalType\":\"contract IJBBuybackHookRegistry\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimFeeTokensFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"claimableFeeCredits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"claimableFeeCredits\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"claimableFeeTokenOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"claimToken\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"claimableFeeTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"claimableFeeTokens\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"collectAndRouteLPFees\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minCashOutReturn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deployPool\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"feePercent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"feeProjectId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"hasDeployedPool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"hasDeployedPool\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"initialWeightOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"initialFeeProjectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialFeePercent\",\"type\":\"uint256\"},{\"internalType\":\"contract IPoolManager\",\"name\":\"newPoolManager\",\"type\":\"address\"},{\"internalType\":\"contract IPositionManager\",\"name\":\"newPositionManager\",\"type\":\"address\"},{\"internalType\":\"contract IHooks\",\"name\":\"newOracleHook\",\"type\":\"address\"},{\"internalType\":\"contract IJBBuybackHookRegistry\",\"name\":\"newBuybackHook\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"initialize\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isPoolDeployed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"deployed\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"oracleHook\",\"outputs\":[{\"internalType\":\"contract IHooks\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"poolKeyOf\",\"outputs\":[{\"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\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"poolKeysOf\",\"outputs\":[{\"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\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"poolManager\",\"outputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"positionManager\",\"outputs\":[{\"internalType\":\"contract IPositionManager\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"struct JBSplitHookContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"projectId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"processSplitWith\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"decreaseAmount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decreaseAmount1Min\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"rebalanceLiquidity\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenIdOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addLiquidity(uint256,address,uint256)\":{\"params\":{\"minCashOutReturn\":\"Minimum terminal tokens to accept from the funding cash-out (slippage protection). Pass 0 to use the hook's default tolerance derived from the current cash-out rate.\",\"projectId\":\"The ID of the project whose accumulated tokens should be added as liquidity.\",\"terminalToken\":\"The terminal token paired with the project token in the deployed pool.\"}},\"claimFeeTokensFor(uint256,address)\":{\"details\":\"Requires `SET_BUYBACK_POOL` permission from the project's owner.ERC-20 fee tokens are claimed first, followed by any fee credits that were accrued while the fee project had no ERC-20. Credit claims are best-effort: if the downstream controller rejects the transfer, the pending credit balance is restored so it can be retried later without blocking the ERC-20 claim path.\",\"params\":{\"beneficiary\":\"The address that should receive any claimed fee proceeds.\",\"projectId\":\"The project to claim accumulated fee proceeds for.\"}},\"collectAndRouteLPFees(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project whose LP fees to collect.\",\"terminalToken\":\"The terminal token paired with the project token in the pool.\"}},\"constructor\":{\"params\":{\"directory\":\"JBDirectory address.\",\"permissions\":\"JBPermissions address.\",\"permit2\":\"The Permit2 utility.\",\"suckerRegistry\":\"The sucker registry for cross-chain surplus/supply queries.\",\"tokens\":\"JBTokens address.\"}},\"deployPool(uint256,uint256)\":{\"params\":{\"minCashOutReturn\":\"Minimum terminal tokens to accept from the cash-out (slippage protection). Pass 0 to use the hook's default 3% tolerance derived from the current cash-out rate.\",\"projectId\":\"The ID of the project whose accumulated tokens should be deployed as LP.\"}},\"initialize(uint256,uint256,address,address,address,address)\":{\"details\":\"The implementation contract can be initialized by anyone, but this is harmless — each clone gets its own storage, so the implementation's state is never used. In normal production use, the deployer factory's `deployHookFor` atomically clones + initializes in the same transaction, so the call site for `initialize` is uncontested.\",\"params\":{\"initialFeePercent\":\"Percentage of LP fees to route to fee project, out of `BPS` (e.g., 3800 = 38%).\",\"initialFeeProjectId\":\"Project ID to receive LP fees.\",\"newBuybackHook\":\"The buyback-hook registry this clone targets for force-direct cash-outs. May be the zero address, in which case no force-direct metadata is attached.\",\"newOracleHook\":\"The Uniswap V4 oracle hook deployed against `newPoolManager` on this chain.\",\"newPoolManager\":\"The Uniswap V4 PoolManager on this chain.\",\"newPositionManager\":\"The Uniswap V4 PositionManager on this chain.\"}},\"isPoolDeployed(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project to check.\",\"terminalToken\":\"The terminal token paired with the project token.\"},\"returns\":{\"deployed\":\"True once a position exists for the pair.\"}},\"poolKeyOf(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project.\",\"terminalToken\":\"The terminal token paired with the project token.\"},\"returns\":{\"key\":\"The stored pool key (zero-valued if no pool has been deployed for the pair).\"}},\"processSplitWith((address,uint256,uint256,uint256,uint256,(uint32,uint64,address,bool,uint48,address)))\":{\"details\":\"Only accepts reserved-token splits (groupId == 1). Reverts if the sender is not the project's controller or if the project has no ERC-20 token deployed.\"},\"rebalanceLiquidity(uint256,address,uint256,uint256)\":{\"params\":{\"decreaseAmount0Min\":\"Minimum amount of token0 to recover from the burned position (slippage protection).\",\"decreaseAmount1Min\":\"Minimum amount of token1 to recover from the burned position (slippage protection).\",\"projectId\":\"The ID of the project whose LP position should be rebalanced.\",\"terminalToken\":\"The terminal token paired with the project token in the pool.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"interfaceId\":\"The ERC-165 interface identifier to check.\"},\"returns\":{\"_0\":\"True if `interfaceId` is the hook or split-hook interface.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"BPS()\":{\"notice\":\"The basis-points denominator (10_000 = 100%).\"},\"DIRECTORY()\":{\"notice\":\"The JBDirectory used to resolve a project's controller and terminals.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PERMIT2()\":{\"notice\":\"The Permit2 utility used to approve tokens for PositionManager.\"},\"POOL_FEE()\":{\"notice\":\"The Uniswap V4 pool fee tier this hook deploys into (10_000 = 1%).\"},\"PROJECTS()\":{\"notice\":\"The JBProjects registry used to resolve project owners.\"},\"SUCKER_REGISTRY()\":{\"notice\":\"The sucker registry for querying remote cross-chain surplus and supply.\"},\"TICK_SPACING()\":{\"notice\":\"The tick spacing of the 1% fee tier the hook uses (200).\"},\"TOKENS()\":{\"notice\":\"The JBTokens registry used to resolve a project's ERC-20.\"},\"accumulatedProjectTokens(uint256)\":{\"notice\":\"The accumulated project-token balance currently held for each project before its first pool deployment.\"},\"activeTickLowerOf(uint256,address)\":{\"notice\":\"The lower tick of the currently active LP position for each project and terminal-token pair.\"},\"activeTickUpperOf(uint256,address)\":{\"notice\":\"The upper tick of the currently active LP position for each project and terminal-token pair.\"},\"addLiquidity(uint256,address,uint256)\":{\"notice\":\"Convert the project's post-deployment accumulated reserved tokens into additional protocol-owned liquidity. Tops up the active position while the live cash-out/issuance corridor still matches the active position's ticks; once the corridor has drifted past `_RERANGE_THRESHOLD_TICKS`, BURNS the stale position to recover its principal and re-mints a single fresh position at the current corridor (folding in the new accumulation) — so all allocated funds stay in one maximally-efficient position rather than fragmenting across stale bands. The funding cash-out is forced DIRECTLY through the bonding curve (never the AMM this hook feeds), and the add is rejected if the pool's spot price has deviated from the oracle TWAP — bounding sandwich/JIT manipulation. Permissionless once the ruleset weight has decayed 10x from when accumulation began; otherwise requires `SET_BUYBACK_POOL` from the project owner. Safe for anyone to call.\"},\"buybackHook()\":{\"notice\":\"The buyback-hook registry this clone targets for force-direct cash-outs.\"},\"claimFeeTokensFor(uint256,address)\":{\"notice\":\"Claims accumulated fee proceeds for `projectId` and sends them to `beneficiary`.\"},\"claimableFeeCredits(uint256)\":{\"notice\":\"The fee-project credits, rather than ERC-20s, currently claimable by each project.\"},\"claimableFeeTokenOf(uint256)\":{\"notice\":\"The fee-project ERC-20 currently backing each project's `claimableFeeTokens` balance.\"},\"claimableFeeTokens(uint256)\":{\"notice\":\"The amount of fee-project ERC-20 tokens claimable by each project.\"},\"collectAndRouteLPFees(uint256,address)\":{\"notice\":\"Collect accrued Uniswap LP trading fees for a project (from its single active position) and route them back to its terminal balance. The terminal-token portion is deposited (minus an optional fee-project cut); the project-token portion is carried into the accumulation ledger to become future liquidity (never burned). Callable by anyone.\"},\"deployPool(uint256,uint256)\":{\"notice\":\"Create the Uniswap V4 pool and mint the initial LP position using the project's accumulated reserved tokens. A portion of those tokens is cashed out for terminal tokens so the position is two-sided. Permissionless once the ruleset weight has decayed to 10% of what it was when accumulation began; otherwise requires `SET_BUYBACK_POOL` permission from the project owner.\"},\"feePercent()\":{\"notice\":\"The percentage of LP fees routed to the fee project, in basis points (e.g. 3800 = 38%).\"},\"feeProjectId()\":{\"notice\":\"The project ID that receives the LP-fee cut.\"},\"hasDeployedPool(uint256)\":{\"notice\":\"Whether each project has already deployed its single supported Uniswap V4 pool.\"},\"initialWeightOf(uint256)\":{\"notice\":\"The ruleset weight recorded when the hook first starts accumulating project tokens for each project.\"},\"initialize(uint256,uint256,address,address,address,address)\":{\"notice\":\"Initialize per-instance config + chain-specific Uniswap V4 addresses on a clone. Callable once.\"},\"isPoolDeployed(uint256,address)\":{\"notice\":\"Whether a Uniswap V4 LP position has been minted for a project's terminal-token pair.\"},\"oracleHook()\":{\"notice\":\"The oracle hook used for configured Uniswap V4 pools (provides TWAP via observe()).\"},\"poolKeyOf(uint256,address)\":{\"notice\":\"The Uniswap V4 pool key (currency pair, fee, tick spacing, and hook) for a project's deployed pool.\"},\"poolKeysOf(uint256,address)\":{\"notice\":\"The Uniswap V4 pool key configured for each project and terminal-token pair.\"},\"poolManager()\":{\"notice\":\"The Uniswap V4 pool manager contract that coordinates all pool operations.\"},\"positionManager()\":{\"notice\":\"The Uniswap V4 position manager contract that handles liquidity position NFTs.\"},\"processSplitWith((address,uint256,uint256,uint256,uint256,(uint32,uint64,address,bool,uint48,address)))\":{\"notice\":\"Called by the Juicebox controller when reserved tokens are distributed to this hook's split. Tokens are accumulated in escrow both before AND after pool deployment: pre-deploy, `deployPool` consumes the accumulation; post-deploy, `addLiquidity` converts it into more liquidity. The hook never burns.\"},\"rebalanceLiquidity(uint256,address,uint256,uint256)\":{\"notice\":\"Burn the existing LP position and re-mint it with tick bounds recalculated from the project's current issuance and cash-out rates. Useful when rate changes have shifted the price range away from the active position. Requires `SET_BUYBACK_POOL` permission from the project owner.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Whether this contract implements a given interface (ERC-165).\"},\"tokenIdOf(uint256,address)\":{\"notice\":\"The Uniswap V4 PositionManager token ID for each deployed project and terminal-token pair.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@ballkidz/=node_modules/@ballkidz/\",\"@bananapus/=node_modules/@bananapus/\",\"@bannynet/=node_modules/@bannynet/\",\"@chainlink/=node_modules/@chainlink/\",\"@croptop/=node_modules/@croptop/\",\"@ensdomains/=node_modules/@ensdomains/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@rev-net/=node_modules/@rev-net/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/=node_modules/@sphinx-labs/\",\"@uniswap/=node_modules/@uniswap/\",\"@unruggable/=node_modules/@unruggable/\",\"@zksync/=node_modules/@zksync/\",\"base64-sol/=node_modules/base64-sol/\",\"ds-test/=node_modules/@uniswap/v4-core/lib/solmate/lib/ds-test/\",\"erc4626-tests/=node_modules/@uniswap/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/\",\"forge-gas-snapshot/=node_modules/@uniswap/v4-periphery/lib/permit2/lib/forge-gas-snapshot/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"lib/base64/=node_modules/base64-sol/\",\"openzeppelin-contracts/=node_modules/@uniswap/v4-core/lib/openzeppelin-contracts/\",\"permit2/=node_modules/@uniswap/v4-periphery/lib/permit2/\",\"solady/=node_modules/solady/\",\"solmate/=node_modules/@sphinx-labs/contracts/node_modules/solmate/\",\"typeface/=lib/typeface/contracts/\",\"v4-core/=node_modules/@uniswap/v4-periphery/lib/v4-core/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"none\"},\"compilationTarget\":{\"node_modules/@bananapus/univ4-lp-split-hook-v6/src/JBUniswapV4LPSplitHook.sol\":\"JBUniswapV4LPSplitHook\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"viaIR\":true},\"sources\":{\"node_modules/@bananapus/buyback-hook-v6/src/interfaces/IJBBuybackHookRegistry.sol\":{\"keccak256\":\"0xf7d81dae9ce343f32e5dfaa4c58d11d3aa83bf57f1f32f97850fd30652d86bb1\",\"urls\":[\"bzz-raw://57f7bf7786c24ace92fe3d49a3f7c5b31fb53f37c463c4b97c7702dfb1be1464\",\"dweb:/ipfs/QmTHfeTtXHz23wEPxYQgWpMq8ANHbtAbGdKRBe5ULsRyeA\"],\"license\":\"MIT\"},\"node_modules/@bananapus/buyback-hook-v6/src/structs/DefaultHookSegment.sol\":{\"keccak256\":\"0xbaa0c49eca88943e46adcae47230c7ef0c5387938352b31f59c4dff8072dbb82\",\"urls\":[\"bzz-raw://2b6a7b7048b8eb5cb90b0031a18eb7ad951b278c3ccbb20219cce96db1b87bb8\",\"dweb:/ipfs/QmdMMQP2zwWVm5DKTcpmUfkm1U2Wcwh8gt6W3DUBCTJ2Dm\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0x16a1fa9f031564f9f3253d5e21327b228651269263bfbde10eb04862c65ed577\",\"urls\":[\"bzz-raw://4150d75d10f267953c0a42948ebd7bffe1568a5fb0dfe84befcda512ddf3a19c\",\"dweb:/ipfs/QmVMYXMRyiLySHCtoPke9AuVkhoVm9Gx1zoLMmSjXjFf2M\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x58f3eed8b6ecea6b640f4eb78a5a416ce8737f9155e350ef4077db422b3fca8f\",\"urls\":[\"bzz-raw://0b56bde97ef9d8ec2a3e464202c5d2fee9c39597485b3fb8baaeef971cc63bc8\",\"dweb:/ipfs/QmSdPaNfPm83yibuSvgLbaqgZw7LYkTLhacrxDagH3sprJ\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x2a6d327092775fdbeaf922b8364403102cae437f765f662fe142bf97e87c2ef1\",\"urls\":[\"bzz-raw://5f9a23971860b907569917fe14cbcc85993d83fb32e5342dd5338a1721e540f7\",\"dweb:/ipfs/Qmamt2n7HaWo2cUDn8K2FhrZPHBVxuaCWh9jf8V3WYPXMN\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBCashOutTerminal.sol\":{\"keccak256\":\"0x4923d51fd680cc280a9e90eec8e0597334ae2beb8c04d71289e319d7f82aa70b\",\"urls\":[\"bzz-raw://a39ee26c58248c154e5d4818fe544c614effded1c069b7d2e732c25d9caab4ff\",\"dweb:/ipfs/QmefeSH8CWtNQcrb8iNmfKKSViu3YnnJ9ciaNfEKhxgFHh\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBController.sol\":{\"keccak256\":\"0x7032c26dd11cec1ed279bd96a63c0b4f77126835e9fec744e259495827f9ad92\",\"urls\":[\"bzz-raw://a2129d48bed0763676d7f0854d6e784134642584f4c70fabdc7e9e5a9490bf13\",\"dweb:/ipfs/QmU1D5L4gxf2acwXz4QAp9fSZNVboDcj4qTE3xCz5bh2M4\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xb8f3ba0a544360b32c9f0a704168ee93c2960accfc010735c8cbea54941e63d5\",\"urls\":[\"bzz-raw://e9f14d5daa2357db4afe96313b40bf0c53c606315c9cb55109fffdc9c2fd85d0\",\"dweb:/ipfs/QmRPHFAiivM9CqdfocRyahdSjfWTbaSepPNCGGQU23ABcv\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x963e641f7b02187389fa813ab177b8d0f20a7a543f6ce2306e8d5f9db95d56e3\",\"urls\":[\"bzz-raw://b500161bcc70fac6830211b2f9855c2c1ab17a91226619cedde7daa166f9196c\",\"dweb:/ipfs/QmV92TK8CTZxVJoGBDEsBfUDidoLAobFmyL1NdQVJARpCD\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBFeeTerminal.sol\":{\"keccak256\":\"0xaaa9a98ad8967e1ab71b560f1cc07fc53d4900a8d595d53f5fb090d8e004562f\",\"urls\":[\"bzz-raw://36513a02be24f9677e0f1e82e01970c81c09043b69e4e60cb3007e2a05f3ce64\",\"dweb:/ipfs/QmZPKkEhgM5A5GzHG4TPxAe8HzjyLxLZzmJaDMDTNxV783\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0x13cad5a8ef2daeb7634d93df6c9f6d1681b5344f4cdc89b03bbbd0953802fd8a\",\"urls\":[\"bzz-raw://35f25042894569b5c50a38d39ab3ceb91e4f69e56d448785701a3ffff335fe98\",\"dweb:/ipfs/QmTd6dF5X6L3v9bnfsh2ZKtRjK5ApwvmKipMWHNXfjwjBF\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBFeelessHook.sol\":{\"keccak256\":\"0x39b8d6e9798a90f555ea9ca44ade52f2fec5964df8994494bd5f4cfd42853602\",\"urls\":[\"bzz-raw://18e0a22e15d53db093648f6087280b45cf5a19571cf721ea49e4453f5da1cb98\",\"dweb:/ipfs/QmaRDN58nhCR4EkP3oaHpyG5EPgLtR2DSEDfPw4gRUG5Zd\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0x0cb50a855cccbbe7c74a1ebc454112b7b63f502badd019895dd936365ac73340\",\"urls\":[\"bzz-raw://226be05349028b8f055e386fbc41f7db0feb6d027b6068c1c929b0924688e129\",\"dweb:/ipfs/QmXyotizn7pR8DQJtuj6Xkcr7LKorSkm9q8kQGaSDDikSw\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBMultiTerminal.sol\":{\"keccak256\":\"0x8e258ab09d0b1c429236d98a78610b829a9604e88f7c20fc1041535922c8b207\",\"urls\":[\"bzz-raw://0418c1dcfcd663ad55bf55ce38690e45ebefcc5a01575d6d7ecde18de283edab\",\"dweb:/ipfs/Qmbt2BJ3r9rLXqAZzrs36s24Ks3e6Ho3UTwvuUrtRdDtW6\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x08599d439d898566b311bc4bedf7f0050ce25c86e246c43f673f3ab4d2457f21\",\"urls\":[\"bzz-raw://db19e95707920262c79197be9296fe381782220bfaf00b71df3a4271da83832f\",\"dweb:/ipfs/QmYzdomQzXNSk46U5vkiEnDErJJdR17deL4S6hPundstZd\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPayoutTerminal.sol\":{\"keccak256\":\"0x67353962158e3349be384d3ceec89db2b7525c5f5c7f6c8cb8f98aeb09142e95\",\"urls\":[\"bzz-raw://01e55c712af9794b2bf0caeab8bd2bd8150f4c6cab61dfec026d40652d5a26d6\",\"dweb:/ipfs/QmbbcxEBJ8UxFUbGPWvyu1cwxgU9YefwhdNuPvfj7LzSZw\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0xa43d05c9cc31cd768072e60d4f097d60dfe199469bfc96aa8df29346a15ee4dc\",\"urls\":[\"bzz-raw://de7caab7841a56b681140993557374edb54763a08b28aaaba35f1bc1a01f7937\",\"dweb:/ipfs/QmQKG6QNm7PNebRtKeLSzzXgp71Yw5Ja37nGPCvVa62Rzu\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0xb32e13d512a7deb9ba1e47bbc0992817a63caa9e1f2913d6c55b637a57084037\",\"urls\":[\"bzz-raw://0d291ccc6edc581febf386779423001b0ed4d3b5b021ec444f7bef01cb2f9d28\",\"dweb:/ipfs/QmSUFhJpcpWYLEUzt4KrzyC4am39TNost8tWAtn5GdAUg2\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPermitTerminal.sol\":{\"keccak256\":\"0x5540c746854add8cdc1911f9903a77c9fc97098d8d205075b8baf07485be5cd2\",\"urls\":[\"bzz-raw://b2136b9ac8a2f2429c83531150810b144f5f7f1855dc85c60fcf8e8c161889a3\",\"dweb:/ipfs/QmNSB7LStqYoPLkZcDwb1dTcakxBp9iENoFfkTaNswBYXj\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x3a948500b5397c90e926f3bdef9423e7f095f906b23cd1503009802c80bedb41\",\"urls\":[\"bzz-raw://a0ea0b7e5d442257f6159799b7bf262615b0f04e5cd542b0980f131ae40a63bb\",\"dweb:/ipfs/QmX7uugLaXtT5XmYxqfrmDqU2YuknAeYjHMiLm9iHaRfHw\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xed5e532f6ee86029a1a4a1ba8b593296f772909a5f9d95da6cc6c595a838446f\",\"urls\":[\"bzz-raw://4314cbfe4ebd96a48eaf1c14af860aa08b7cd6a73da10391746b4d3410d13d67\",\"dweb:/ipfs/QmfRkWFbxmJUMew6DsDGbK88PypDBUA6PDTJFvfBaMno5n\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0x4342aaa8b9566e17691f69fc71e050350dd89b63f5040f092f115610d7a6c0eb\",\"urls\":[\"bzz-raw://88ce07791403524a229b080ad05604962d5b54e57106a533f62bff8a32896b1d\",\"dweb:/ipfs/QmSYxFpoH714CF7mZVhgKvFdYHHgg8R4UGXVXhMS69C7H2\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x72c6cbda5a93593e3cc49ef6c4e0848a4b6daa88c188c4192776af86c49911dc\",\"urls\":[\"bzz-raw://448ed5d7a704b5f4dd759514dbcb78160b82732ac6bd7bc368a9f8822045e6de\",\"dweb:/ipfs/QmbnpCPxQLDvQx5ymEy1Ty3aks7bjonydops1CsjCACJBN\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x11dd67effb025396bec1bb97d35a9ba162340e9a824c048e8286802a12acaa45\",\"urls\":[\"bzz-raw://bae11f483c66d98e7fad9bbf47249f6fa4434693e8bace78cbe6d4da9afee009\",\"dweb:/ipfs/QmWjrjPtr8dLGtXQBrz6idwcNqyx2yVSVVQtqo74yqUSZV\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0xf9aad7d3c7de29e020af4fea893bbaa6a1c0e9a8ae5860331c9f4d68d1a5a99f\",\"urls\":[\"bzz-raw://e10b6ed0827ac155153544b8018d2fa812628016e8a168f7df771616f92fd6f4\",\"dweb:/ipfs/QmUB3zuj8B2MAdgSYEMPh7ovXuM1fBb7jN6gLVxstjcAE7\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x8fd69e04aa2b5962a917394c0a4baa6653f7cea93629a1915c1f9c2e870143e5\",\"urls\":[\"bzz-raw://6c7ce64037e6a11cc03e5c66607a219eb25c953ad76aa7b914d2a9e8f0cd5434\",\"dweb:/ipfs/QmYoTec9wfd89HAnNckC2XJWegtgUmfjmi1vJYT4LTXQ61\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0x8155763689f6f51b5c6712ac6f23728b248a8924e69e63f8aa14d01c78ea17f1\",\"urls\":[\"bzz-raw://7bab14bd7250cc3ba6665573f2a961308a3453015af7a0305488c0db1745f95b\",\"dweb:/ipfs/QmYpKwToPcSChWXyJ75SBEeWKugBygAnQ1WaZ8wWcu5rha\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x9d27fe4d9aa6dcbb24a24ee1fc16e51b51fab1c4ab1eace93981e73f3c4ce636\",\"urls\":[\"bzz-raw://7a6a1243102ac23cb1643bcc670b6b16b70566877941233964159f9b37755113\",\"dweb:/ipfs/Qmewa2o3nyoRwZ4pdhWqUh1ShWXA3GHJffiVafcKYXg2Ao\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xa3621c12f7c2e33ee38b5de626a5939190d8a12b1e5318a7cd8d398595480cec\",\"urls\":[\"bzz-raw://1341254389038383117d9b23ed2f9d1812fc30ef1c11cfd6c8423918894d7ba3\",\"dweb:/ipfs/QmV2WJ5a3NW12RnZAM3ySbEfGHNN6GfqqpsMHXorfoxiQo\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0x0ab2fd1b5249ff9dcbb51585df7df8c09af309a984fb0a2378426c7fd1800f43\",\"urls\":[\"bzz-raw://8bab809f8ea5692c738fbeb3f83d7b7259e469e03b7e4e3011358f887636ca44\",\"dweb:/ipfs/QmdbyiVSctQZcfibvygyyJntRpwzRoMDKrSkPydn7VouYm\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xadb3a7c3c149b60b6b51fdfb2acc814956d8aa9bb94e745c0e907c171b0983f2\",\"urls\":[\"bzz-raw://dddd118b37582f19c7559bdf848f53a29fb16289311bd14957c95fdee9cd28e6\",\"dweb:/ipfs/QmbwWXXVR4SGH9tz6pMKKMZxZ8YF8iRQpMCP3DnXDadx3L\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xcbdb1448260ebea5937411516957ef199099e34ff997e7f2a617c2898f921994\",\"urls\":[\"bzz-raw://d1cbf97e5684c987be6703c096e8230d870fab25a23eec8d209cd082e3f2637b\",\"dweb:/ipfs/QmNmzeuQoFiaUTQAcV1tyJyjUYEJ3t7386zTw4ofT7HoZM\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0xf7b458ce7e75e1c4daf2052873846b7c99abb098c0d5fbb2ee5d18e132e4a76c\",\"urls\":[\"bzz-raw://ee20abdc20787df386809255eaee2ef27daca71d4769a0d146cc249502ab0604\",\"dweb:/ipfs/QmP3ZpnnnTQKKGNV9KyLxCYXkjBDuiAgqHX6NRGYuYzTaW\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/libraries/JBConstants.sol\":{\"keccak256\":\"0x5d4b095f3b94c52f89b9cf8a8104de0242497e61f1b32ddc82e78a9ba71a6d0f\",\"urls\":[\"bzz-raw://3ac3340339e0b6a7aae881781b2830f59e3f44114955e2f770172a9bffddc104\",\"dweb:/ipfs/QmV9pFGNGcknqHLEuc6rmC1YPwuwtsokjzh1WX8H2jmVRp\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/libraries/JBFees.sol\":{\"keccak256\":\"0x8f09351a739b9b99258bf6034190fd8bc9e48adc4ece31615dbeaa0f830859aa\",\"urls\":[\"bzz-raw://30b4486940f25131972c603c4417dc0b8b0166390fb8ebf9b9afbf1a0c0fa5ba\",\"dweb:/ipfs/Qme5YniWZmqotsBHnJnhtGVY2xQuUG1yaNo9URhQ2Qu4GY\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/libraries/JBMetadataResolver.sol\":{\"keccak256\":\"0x8f671604390274457e0d13806f9ca9aab44c784f4492612771bada213ed261bd\",\"urls\":[\"bzz-raw://e10babd77a88bb1e9c09d5a99b3f165ce46cca4b348e23add2dc4d53aefe07d7\",\"dweb:/ipfs/QmTLc2R1o5W3hkxX8avYrWPtf1oMLTtmve1sPujAbtoUtz\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0xbd3b117f9457dbe55bd29a2daf368a682c0ab25cbedc0139f309809a4ab646c5\",\"urls\":[\"bzz-raw://6a72f70e18edb22b8abc238ba169e5c775696d07915b5d91a8601c1a28ff096e\",\"dweb:/ipfs/QmQZHfiTLqdk1pv1hiursm2icuAwFSzmjGTxRaHMcAqsUh\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0xf53e975ce2632558a95d0a57679dbb8afff984d06daaa530cd4c442e467c3403\",\"urls\":[\"bzz-raw://519f7c466c8d90227afe2bd9108e7477412600fea8b4134889795a58a51b156c\",\"dweb:/ipfs/QmaSHMrNLfP8D9RRUaYbMWURdZYweUmt5ysgtTGMZiwnai\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0x8cd6d13c98bd825d7e61cb3b2f5cbf56e77f9a2f85eaa0e27d82f1fb8d5af4f7\",\"urls\":[\"bzz-raw://0e4ff9a254147cc6728b3bdc3862b77d15b518b49375e400b5f0b78552f14c62\",\"dweb:/ipfs/Qmd25R3LDrnRHiSdrNSdfqk8746A3J3VH44C5HDfHkFvU2\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xcf1761f48e4cbd6eeeb64bb19e434eff50a7f666b2116657f88f63d19620c6de\",\"urls\":[\"bzz-raw://842fe47a4ad56c830040864b458de398efd0cf82eb0add9349e792d0c8b0c275\",\"dweb:/ipfs/QmXBj6EVnzvVX8ZYa2ndyjoSZDGjpXxaoy7dBuoGMaAmRX\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBBeforeCashOutRecordedContext.sol\":{\"keccak256\":\"0xd3af6ce6d8ef731aa746e08de846f0422b34a568a3d1000fb8f85a32ba5701b0\",\"urls\":[\"bzz-raw://237e31d3ee24305c1ff4ffb9f829a4159fbd6bb8b4ecb5b557aa16e7eb924bcd\",\"dweb:/ipfs/QmeW4zTaM2J8DDxdC7zLwaHryBLcC3ydbHNSTHcmyETGvG\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xa5e4dd0ffa54c8e56f3bb6a437b2e13ef8728ee15aee3d7cb1d0dc96317e75dd\",\"urls\":[\"bzz-raw://fcd2113962a3f34e782090a553f1ba5ace6653bd5d5f932e8bb5279f42bbcb5b\",\"dweb:/ipfs/QmWLhDEprdQsNFmPhmNojRHDhqwG2QMx58AV5j4o56P4mx\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBCashOutHookSpecification.sol\":{\"keccak256\":\"0x1579c160a19e68eb06158f56120acf06b8aa4bbbc9836c80fabbb3d2e57ccf3d\",\"urls\":[\"bzz-raw://a81f5e0c384caf0ac11814825ce07e6c6cee97d28f60dcd65dfe8d529b6135fe\",\"dweb:/ipfs/QmY2q7oMFDMN1PoQ8zp7PUQu4K5dYKhYLKBKqrTy42YU6N\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBFee.sol\":{\"keccak256\":\"0x354a99f21d8fa1e306886b0163c8b2daed66d32a2b2bcf6eb1dcefecfc7ef471\",\"urls\":[\"bzz-raw://91b468d942f96d5e27882b836d503125aedd8b0da4ea8e4295cd1b619a83073b\",\"dweb:/ipfs/QmT6TL5eEap2GvaWCwcsCEgVVVwnwnNWmBGskrkESJeFKu\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x7e62015441edc056c3959fb0e5d0b59a1b209a91ce4beab9d3f6c25e02daf0c0\",\"urls\":[\"bzz-raw://5c77a27155794a7c05ea17ed4bdb382039187b9effecc300563d7fb144029983\",\"dweb:/ipfs/QmXE4FptihU4wSqFLeGWsaNDpZmmNYFLEXMnWGhEC5pf3X\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x28f565b626774c36a990ac999f268fbaf9d7f7861e862fab1fb8301f2534e8d1\",\"urls\":[\"bzz-raw://a5d7375934179178febd3b412099b1a5ff42a154ce8b949df2c11b5f3cb3b80e\",\"dweb:/ipfs/QmXP5vVq8Z6HntiuMcPWfQURCKejyiyHLKYuMmzCuUJJtV\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0x9cb75b1171657be08950f9fc9f6c2bcb2496f618de4ab932141d424dec29d9df\",\"urls\":[\"bzz-raw://a8f578d6132c92048ae553a3c13260ecfa657f4a1bbe18f6c550d96988167590\",\"dweb:/ipfs/QmSYfGm2mcYfMm4wfnZMTjuUr1kBJoq4vZSCkwdgi9BRFk\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBRuleset.sol\":{\"keccak256\":\"0xd03f45345597fca43effe3bc593572c989f4294d909505e331cbd2640a801d23\",\"urls\":[\"bzz-raw://2cc09b335549f4982c16c1109f3078f09fb81c32370baff007633a38badb7a83\",\"dweb:/ipfs/QmYJHBvXscvokRqzdGdTCRQtHUpnePS2uaCDfgHLuuMo56\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0x812ca14f18e228fde272c0caf56a59b71302bfb4f9c514ac6fb0989ab8e1c48e\",\"urls\":[\"bzz-raw://9b234704315ac567db402c89dd5be46ca029094872f6dd52698324dd6ddf6a2d\",\"dweb:/ipfs/QmYPUJHLkyUwbYfJ7UdcpgvyzPtibUmhrKtzXQcRtA8Kvz\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0xbb9bda3b7ebb6796fa091ee6ce3182ad2a03dc35b89df0fb1107fae7c26ae0b4\",\"urls\":[\"bzz-raw://1b400674d8ec4e3495041c03d5601c07a68eb5d18a0cff83a5823007d6bad36e\",\"dweb:/ipfs/Qma76CRFPwV9WZq2ttZ2FFvui5BvzRHnftrL3Tz1m9uGKv\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBSplit.sol\":{\"keccak256\":\"0xf50ba85591d86076ff127e97af2c4b7d1a1be3e20e25d784b64591697d71ab52\",\"urls\":[\"bzz-raw://04276773313a01c2b816c95addea68843c21db3888f4c547eb6e6c486ac55547\",\"dweb:/ipfs/QmZGpxzryNkheek5V9dJWfcJyTP7T52PsPXgRBuweK2rsN\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0xa2246f4960ec2b24db3fbfce5d59782cdb9a8fb3c3f832a2c39ddc92859ff170\",\"urls\":[\"bzz-raw://3e3a0ae100c15bb15f0484cb68e3052c3d3d764f84e37020e8dd6b658ff98076\",\"dweb:/ipfs/QmPAv99zN7senrfCMMkeT4RMWpwTdqLgMURQR73BLRe4ZG\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"node_modules/@bananapus/core-v6/src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"},\"node_modules/@bananapus/permission-ids-v6/src/JBPermissionIds.sol\":{\"keccak256\":\"0x5105c29834e0dce4e395e262f23089a1077404f5317c591c89f3621cdfda9628\",\"urls\":[\"bzz-raw://54deca2c06d77f5d1087911e8035d244dde2b08a5dc0dff146b86e6a314419e8\",\"dweb:/ipfs/QmNdpTioAbk6bahJx4aT1WFUY9aV182JH1Dn4FqfuqC8QC\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/enums/JBSuckerState.sol\":{\"keccak256\":\"0x0ee6d0d08cd4f538b8c9ff59d480c7c3371c4cb1971e5a67a89088b4b040a608\",\"urls\":[\"bzz-raw://b8cce8e51b084cc9a844dc1040aba00b63b01f97868d52cc9f38b9d354fd741f\",\"dweb:/ipfs/QmTveKLmdZAGbwEwaCTBwofSBtckZsDcew3E7iNTnpeskY\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/interfaces/IJBSucker.sol\":{\"keccak256\":\"0x570edfbf153b28f44f5dcf4b8e9ee146be16ba08aee58178d288e121edd023d4\",\"urls\":[\"bzz-raw://f67f5797159640a3d39835b7dbac501ca3f4e95fbebdf4673dc884af6c8b4de3\",\"dweb:/ipfs/QmW49DYyf2vrwMz2Jt3x2NuA6Dy4phnyGpifMpGPacQ4qz\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/interfaces/IJBSuckerDeployer.sol\":{\"keccak256\":\"0x385534f1171e96f75da0fb34c31976a8bff68e3719a87fe526a1bd2c80044826\",\"urls\":[\"bzz-raw://af89283ddccdad821f8d975175082e8a3ecdccba35ad1ec626b2cebbfe5696ec\",\"dweb:/ipfs/QmXAzpwVBH1PwpCZoXFbTXk8v4wUhiKAzXF6chpe5cgoYJ\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/interfaces/IJBSuckerRegistry.sol\":{\"keccak256\":\"0xa80cf6e229335f88468be1625cb02d65bd84f585e047a720e53661dd5c9caab2\",\"urls\":[\"bzz-raw://01b17afe90ae5f10adfac0d32d54615128ac66fae4357d85f4e12a0cd7259b8d\",\"dweb:/ipfs/QmW3reADRJmkA2ay4AqM5TcseW3ybKvdbexZBG9FuLCUAi\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBAccountingSnapshot.sol\":{\"keccak256\":\"0x3a3b48c50fe27dd4b2907dd26d9e48de0f8bf7e48e4ac42b65e4c8550b5037cf\",\"urls\":[\"bzz-raw://b61c627efb41e8bf1f77fec9e79a1d43846dfa14ec6d6dfe8b6fc93ab09c3bf8\",\"dweb:/ipfs/QmVx19cqSfeHHzr94n9iJAp45WC6sETtC6fp9SuHX8gNfF\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBChainAccounting.sol\":{\"keccak256\":\"0x40ee90d31b301b8ad7c3879afa605cf65e9f41c763b3c84f9a73f15ef67b8dc3\",\"urls\":[\"bzz-raw://0ef0660386fefb8c4761f7a96484ae88027ae7432939fb43170b209cd54a01b7\",\"dweb:/ipfs/QmSyhhHEyHswUoTT99SekwfoVnCbL9cBjEDHsXcqpWxMKM\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBClaim.sol\":{\"keccak256\":\"0xd616fb935e61727ce04832808667bd40dc121d66f5cc2f347018dfd971635dab\",\"urls\":[\"bzz-raw://dfdcfb12878dc03b4623ddfaa42afa7e8270e8a259a8c453ef4f7e916ca52876\",\"dweb:/ipfs/QmZyAUzatUq2HfGBpoKbeqkC7mpetQC27M3797wgNgkE6H\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBInboxTreeRoot.sol\":{\"keccak256\":\"0x9553483a63fbad26d7f3fc50d47bbf309f6b2b316785bc179fa83f97f6ba88f1\",\"urls\":[\"bzz-raw://fddbe03a2a31812774aba9ffe44b0d0209da182f03ddd7fb8f8f2cb5858a3923\",\"dweb:/ipfs/QmeQJHXw5Bc8s3CXr9kE7Tw35m3Tcmq7DjrEidcB2CK5D5\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBLeaf.sol\":{\"keccak256\":\"0x48da8acc3873c390430f57de4871bce06b0d9a1be75935a4367b694acab447e2\",\"urls\":[\"bzz-raw://0ecb27f67901ef293993dc257efa592191bd2464cf9c2afcf5b53a4ddaff905c\",\"dweb:/ipfs/QmdoA5SkomSqJvx7v3qn9Z1cTzzH43WDCozqoi7GBYKjaA\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBOutboxTree.sol\":{\"keccak256\":\"0x52552d8927b83d06955f7d40552b19779bc05e3d4ee58a7e026d160fb1958a92\",\"urls\":[\"bzz-raw://d1f21d7415fa29bf088f1dfc3ba2e7251f1132424194703b7dc2493839495bbe\",\"dweb:/ipfs/QmTUL5mALZi8A6QyrWrp1Qdt2e5S72nyEDPuZPwgW54dc7\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBPeerChainContext.sol\":{\"keccak256\":\"0x1da3d201771c88f2469069d3f2295fd26e2f494e0ec0c4d06d0ccb068f2b26bc\",\"urls\":[\"bzz-raw://2898b578f708e6988392fec3b1eca0eb07cb267c139ed7c1cf1b62f27a153e91\",\"dweb:/ipfs/QmVQJxAdkLZVyVGaeYywrwoA8GkTbBwLykWeroLJvS8A7w\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBPeerChainValue.sol\":{\"keccak256\":\"0x784d12e2ee229cb8242366a27636228d2df62915f8bcc64cb6d72ddcf111f655\",\"urls\":[\"bzz-raw://b7d3885e5f02a52af36487ce6fa15f11ee41674c2821c8959ad6ccaac10941fb\",\"dweb:/ipfs/QmYVdYM55ajAKE78sEkf5GZo45k4iP8t6JceDnce4bpjrW\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBRemoteToken.sol\":{\"keccak256\":\"0x972657457699a63ded3cba38b3796cf619fe1929b7e857d4861e52a06ad9b378\",\"urls\":[\"bzz-raw://b35379dc126296a4f8a47ebd2bc09101ec782677711373245b33017670deb051\",\"dweb:/ipfs/QmQs397EjjPgbZdzQR8yUC6vxMYj3nvJZ26RZ6qy9Thg9N\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBSourceContext.sol\":{\"keccak256\":\"0x1fc57c102ae28eb62103063a13289ed484c5520ce220ee59f4412e9b78f431c2\",\"urls\":[\"bzz-raw://af3a7ba1d82c982f6396cc9444fb69afe2a90279eb6b8b147ce1626bab3836f7\",\"dweb:/ipfs/QmUZybGqw84SgTbqvDk27eXQhpPYLDz7FV6o4M4oJC4chK\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBSuckerDeployerConfig.sol\":{\"keccak256\":\"0xee7d3235a13ea2a66a885f90a2623740029f58fad4121e59b46666abb598fcdd\",\"urls\":[\"bzz-raw://3702c6c3f19d11fa0d0cf8b918cdb122c27e2aec09a67386483834e98f533706\",\"dweb:/ipfs/QmZMwk65iWi5HCwLwHiqwrXSEJMnaZMEM9cW359matZ8AT\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBSuckersPair.sol\":{\"keccak256\":\"0x535f28ba838f066ea773b575f83230663761996cc358f6f9b684340403faab18\",\"urls\":[\"bzz-raw://c94e5c03989b03d66ee9cc08c3299957a25b7c3492416792d1d8fa50d11f34e3\",\"dweb:/ipfs/QmTrsUX4KySQsVZYEY6hjwtL6g5cFqFkwopMMAU47Atyqf\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/structs/JBTokenMapping.sol\":{\"keccak256\":\"0x45ab5eb3775475cbf5b2c011ed8ea78fbc719f5dc13019409f09d53e9719f97b\",\"urls\":[\"bzz-raw://7010e7fe473cc892ee5fbb8310ebf7c739bc64e4c9311b6fd63a358dc16bb634\",\"dweb:/ipfs/Qmcj73PiufP2dRdPVGV3gSfdbneYH13Kx4NP1cYbV5aVX8\"],\"license\":\"MIT\"},\"node_modules/@bananapus/suckers-v6/src/utils/MerkleLib.sol\":{\"keccak256\":\"0xb08ffa1c6d9394eed1396ecf6bf59333ec925c9cb80623248448a6f1f2a7b366\",\"urls\":[\"bzz-raw://da8df7bd8918eba5116f3ff527352f804f73dc430f03cf529b34b4bb225479d2\",\"dweb:/ipfs/QmarAXVxZAAxePcMgpzsE84E1LNnCEFZKRXjhaBUy46L74\"],\"license\":\"MIT OR Apache-2.0\"},\"node_modules/@bananapus/univ4-lp-split-hook-v6/src/JBUniswapV4LPSplitHook.sol\":{\"keccak256\":\"0xe69025ca938b11774c046978fc2af9cf8e1aa455adbbc49bb15927b4539a8fb3\",\"urls\":[\"bzz-raw://a7c051ae532dbbc9b0f4c2f74839fb19f1f76be82224b4e983c6f45d9302cf83\",\"dweb:/ipfs/QmbDRwECYygqf8mgHyeFKPPreGkYkRSQzPLUMLMcBepGWa\"],\"license\":\"MIT\"},\"node_modules/@bananapus/univ4-lp-split-hook-v6/src/interfaces/IJBUniswapV4LPSplitHook.sol\":{\"keccak256\":\"0x610d73820e25222544f6b33d69c24cca5f7f139514b5b0dffb53c93c167e6f74\",\"urls\":[\"bzz-raw://151075c97fde7502fc443b314413dab93557996d3ba59cabbd755c91e5ea51c3\",\"dweb:/ipfs/QmWTLmT6mbYVhCFsqJ9Nb5t6vwN7oqngPFyHRYU1wYAthf\"],\"license\":\"MIT\"},\"node_modules/@bananapus/univ4-lp-split-hook-v6/src/libraries/JBLPSplitHookHelpers.sol\":{\"keccak256\":\"0x607363e3483b36125dfc2c4796bb5948795e0fb647c30863fefdadee97e38c01\",\"urls\":[\"bzz-raw://2507067dbf751d74cae9a53989010bdf615522430547d9de11091d8a53be0099\",\"dweb:/ipfs/QmQ3ihu1xBtwfoakagFpqUANv662Xjt54QJdRQuBRnW3jk\"],\"license\":\"MIT\"},\"node_modules/@bananapus/univ4-lp-split-hook-v6/src/libraries/JBUniswapV4LPSplitHookMath.sol\":{\"keccak256\":\"0xb65fc275281362bf71ba74fc30a4316d56e4664bdf9f7f61bcc19041fda27574\",\"urls\":[\"bzz-raw://21be2e123024fb0e9031a478dde629ebe158bb1ae338dd0d297201cf7036bd89\",\"dweb:/ipfs/QmVzBSeNiESaXtcJZKPqa2ztViSBDJ9RGNvXzrdVWy2MwV\"],\"license\":\"MIT\"},\"node_modules/@bananapus/univ4-lp-split-hook-v6/src/structs/AddLiquidityParams.sol\":{\"keccak256\":\"0x9eb8c9238042b71d17ccda9c0f6b796ecbe90a1cfbc44dd5c1d2b8e9dd50a311\",\"urls\":[\"bzz-raw://c642be1be08a9096d418247b99801fbbb966b64d05fb42e12d96b2834d802832\",\"dweb:/ipfs/QmfCXtDN2ooK9xuWtZ14WZuSVcVYRbe99VcRTrxPnEjtrh\"],\"license\":\"MIT\"},\"node_modules/@bananapus/univ4-router-v6/src/interfaces/IGeomeanOracle.sol\":{\"keccak256\":\"0x9ec9e147188bf5309b14e2dadb9db7245951d58461f99e3b1cea53d33357c47f\",\"urls\":[\"bzz-raw://8a11cf9731d487483c8418e5360dccc0afbfaf87abcb031282ee3ff8cc0f0832\",\"dweb:/ipfs/QmRYY5b7cMgmbANsvqWL2XiPyjPcVSAXy2S46oTE5ZFTCX\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xf78f05f3b8c9f75570e85300d7b4600d7f6f6a198449273f31d44c1641adb46f\",\"urls\":[\"bzz-raw://e28b872613b45e0e801d4995aa4380be2531147bfe2d85c1d6275f1de514fba3\",\"dweb:/ipfs/QmeeFcfShHYaS3BdgVj78nxR28ZaVUwbvr66ud8bT6kzw9\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x1949276271967e9954a65f27c1c32e1dd73cbd1f3d2af88f2fdd694ba4b7da60\",\"urls\":[\"bzz-raw://ca414ac0a29a3d0d9e194afa73029a7d94168029df6aeb5f6a4b540d0072eb14\",\"dweb:/ipfs/QmYVipmQDvcvurNZZSFGjxabWXwEpdfijYYx2b3d7ico8U\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e\",\"urls\":[\"bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4\",\"dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/libraries/BitMath.sol\":{\"keccak256\":\"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d\",\"urls\":[\"bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e\",\"dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542\",\"urls\":[\"bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb\",\"dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741\",\"urls\":[\"bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4\",\"dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353\",\"urls\":[\"bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99\",\"dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/libraries/Position.sol\":{\"keccak256\":\"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9\",\"urls\":[\"bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2\",\"dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5\"],\"license\":\"BUSL-1.1\"},\"node_modules/@uniswap/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol\":{\"keccak256\":\"0x96db333ee126a841dd959e38e452cc59d73583cb0437a1d48b2052e33a74f952\",\"urls\":[\"bzz-raw://8672bba1eb69608299b0904f4ff305238eb18479d371c26518f278c9ee184cd0\",\"dweb:/ipfs/QmTLu3s6ECvsEDHStQv8HTVHYtvkviBbdjPrFJd4SpVRFY\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/libraries/TickMath.sol\":{\"keccak256\":\"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8\",\"urls\":[\"bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70\",\"dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/types/PoolOperation.sol\":{\"keccak256\":\"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162\",\"urls\":[\"bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07\",\"dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-periphery/lib/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-periphery/lib/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-periphery/src/interfaces/IEIP712_v4.sol\":{\"keccak256\":\"0xd7f7115476e307a0bfc32a0f0a0f5434e9e5ca62a6c5af1e18b75e48161bb408\",\"urls\":[\"bzz-raw://b1600b953556da38a7adc5ad2a2925ec5fb138fecf8eec48743646543195b736\",\"dweb:/ipfs/QmarZi2aiLVAfHXgnDWV1cCFiZk2DdPW7KJnWHqzuRChJR\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-periphery/src/interfaces/IERC721Permit_v4.sol\":{\"keccak256\":\"0x103adbba724ef536abc536fe8a4d7dc12880724c562109b69f2adce4a91fa017\",\"urls\":[\"bzz-raw://06f51b5a5a218e0bc866a83e7821be53c9db9de0ca921f16abd3d13ea0eab69d\",\"dweb:/ipfs/QmbnhLy992hpQZyphTkj7fpr6jKKVva2AzfmLiDZEuqHAk\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-periphery/src/interfaces/IImmutableState.sol\":{\"keccak256\":\"0x36ab3100e87457ecf04887f4f540e34fd7f21d8e3b83880cb679239e60b7b06b\",\"urls\":[\"bzz-raw://7f290c7ce8e4832608d637a51b13dff95abecf6549485448e647a11c8ed01341\",\"dweb:/ipfs/QmfD1R6mTp8j4EjQXmQZW3vCh11EYFjnvoaw8rXRP27mMq\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-periphery/src/interfaces/IMulticall_v4.sol\":{\"keccak256\":\"0x336bec303f7ff86497d2679464c5adad5040f412b3d0769ce5e1d2a42f7e2c08\",\"urls\":[\"bzz-raw://7734f047d98d331c8abc51ad9f358ceee0a6dcae8d89ac49084b84de0d2d42e7\",\"dweb:/ipfs/QmWij2h7mU36LsXhb9P6pkYXrSCua4ixeWaVFSrsEcEmPQ\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-periphery/src/interfaces/INotifier.sol\":{\"keccak256\":\"0xfdc5187a98240a1691aae98b7dd2444d4c2bfb4746f3c34de9f3d18399c17c5e\",\"urls\":[\"bzz-raw://683af56401ec4f8817e8dfe150e7b3febaf0baaf40efe8d0d0475f735275f746\",\"dweb:/ipfs/QmRQ6S3nFnSc2jjDcQTvUJdTf4xKPojmvCkpvgyr6qTuVV\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-periphery/src/interfaces/IPermit2Forwarder.sol\":{\"keccak256\":\"0xfad472937280e861125ff12aa6f9c2cf7440fbb20a2cc29485c24662ad4279c5\",\"urls\":[\"bzz-raw://31bfbc331f5972fc373d9469fd1ca1d14818db3275f21b7b590f20820cb4439d\",\"dweb:/ipfs/QmX3Bv9wfYpAFZKBcxKsQSXUrSC8mqNBdzh6XVMS72aNx9\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-periphery/src/interfaces/IPoolInitializer_v4.sol\":{\"keccak256\":\"0x2e4feda94650a2642039e0309ffdec480ee050bc40864bf5e1dba42bb4dc9e98\",\"urls\":[\"bzz-raw://964c178b4da8bab9ef898b94bb26d7c17cc44c5cf20485f55dcf5e9c7e1b1d92\",\"dweb:/ipfs/QmVd2c3SYteyr5xZgUS4sDAiZF43dLwVAEKdCfvQbkZpRJ\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-periphery/src/interfaces/IPositionManager.sol\":{\"keccak256\":\"0x62dfa0cbee8314ee7e6787db8bc1d364245c340f940875ac7ff11e89d074fc7e\",\"urls\":[\"bzz-raw://26f560c77d8a187bf93a710b827e3167eab3446922192fa8f92f208da2103834\",\"dweb:/ipfs/Qmbzp5gSYdTpMBF9aAb2GraxMEQZb5LRJCyg8VaRUyjTFc\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-periphery/src/interfaces/ISubscriber.sol\":{\"keccak256\":\"0x34ceadec4a63019680e543fe73197f198a55c825d86e18f327840354760b57e7\",\"urls\":[\"bzz-raw://31734feafe1fe162a0702ddf862fcc3bd97505931afb3c685033c0185d898051\",\"dweb:/ipfs/QmQEANYVyaXTNzXKcjUVfPhLU71Bix5vxQH75BpPWMkWgw\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-periphery/src/interfaces/IUnorderedNonce.sol\":{\"keccak256\":\"0xd7f32fee74dc7d1a3b078ca1263961baccaa6bf434c79e8fe0e092e30c3e0ec3\",\"urls\":[\"bzz-raw://e7d1e92d89d5f49c84aa82f3b259678c2c97a4473b22d753ca4411a6b0cec36d\",\"dweb:/ipfs/QmNZoQyminStaAdaLqoDLoWaBU5QWrWjXFjmBm4aFhzL8i\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-periphery/src/libraries/Actions.sol\":{\"keccak256\":\"0x8efd4b8b289177ee27e557d9d0a5a9f973d66fe1eb1ef8959d316b11987ca830\",\"urls\":[\"bzz-raw://07fe35f194eb99465028f0546359befea574d844da53767d32f22b233c3bcc98\",\"dweb:/ipfs/Qmc19631uFxABTHAbGrDrroexi9GdyxWntaum1v8npPYz5\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-periphery/src/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x8ea74b89831877ffe657f8461164a01a6f3c7e46f415410854fca8d28a8cab53\",\"urls\":[\"bzz-raw://f4015f62e5e8aa154baa555dc39ce36b498e6d875a53f793d62b8556e6b97ccb\",\"dweb:/ipfs/QmUVHyEe3hZZZQum5ct6yDY8qduj62Ta7f7x5Kw95LpQbg\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-periphery/src/libraries/PositionInfoLibrary.sol\":{\"keccak256\":\"0xc5ddf96bd088bc87ea50a20f907fc932fb28397a42682a301b268a11b7f34078\",\"urls\":[\"bzz-raw://7dfeb4dc747537240f8167243e8066b6f5f08057386fb8bda93f82973fc18ad6\",\"dweb:/ipfs/Qmby9DAAaHj8hjsMUnqY3vjqCHKGAKrT5EULMmeGcjbbGx\"],\"license\":\"MIT\"}},\"version\":1}",
	"gitCommit": "npm:@bananapus/univ4-lp-split-hook-v6@1.3.0",
	"gitDirty": false,
	"history": []
}
