{
	"format": "sphinx-sol-ct-artifact-1",
	"address": "0x734bfc66606dfe7943bcf541cf5dcbc5312e695b",
	"sourceName": "node_modules/@bananapus/univ4-lp-split-hook-v6/src/libraries/JBUniswapV4LPSplitHookMath.sol",
	"contractName": "JBUniswapV4LPSplitHookMath",
	"chainId": "0x14a34",
	"abi": [
		{
			"type": "function",
			"name": "calculateTickBounds",
			"inputs": [
				{
					"name": "directory",
					"type": "IJBDirectory",
					"internalType": "contract IJBDirectory"
				},
				{
					"name": "suckerRegistry",
					"type": "IJBSuckerRegistry",
					"internalType": "contract IJBSuckerRegistry"
				},
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "projectToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "controller",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "ruleset",
					"type": "tuple",
					"internalType": "struct JBRuleset",
					"components": [
						{
							"name": "cycleNumber",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "id",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "basedOnId",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "start",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "duration",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "weight",
							"type": "uint112",
							"internalType": "uint112"
						},
						{
							"name": "weightCutPercent",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "approvalHook",
							"type": "IJBRulesetApprovalHook",
							"internalType": "contract IJBRulesetApprovalHook"
						},
						{
							"name": "metadata",
							"type": "uint256",
							"internalType": "uint256"
						}
					]
				}
			],
			"outputs": [
				{
					"name": "tickLower",
					"type": "int24",
					"internalType": "int24"
				},
				{
					"name": "tickUpper",
					"type": "int24",
					"internalType": "int24"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "computeInitialSqrtPrice",
			"inputs": [
				{
					"name": "directory",
					"type": "IJBDirectory",
					"internalType": "contract IJBDirectory"
				},
				{
					"name": "suckerRegistry",
					"type": "IJBSuckerRegistry",
					"internalType": "contract IJBSuckerRegistry"
				},
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "projectToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "controller",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "ruleset",
					"type": "tuple",
					"internalType": "struct JBRuleset",
					"components": [
						{
							"name": "cycleNumber",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "id",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "basedOnId",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "start",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "duration",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "weight",
							"type": "uint112",
							"internalType": "uint112"
						},
						{
							"name": "weightCutPercent",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "approvalHook",
							"type": "IJBRulesetApprovalHook",
							"internalType": "contract IJBRulesetApprovalHook"
						},
						{
							"name": "metadata",
							"type": "uint256",
							"internalType": "uint256"
						}
					]
				}
			],
			"outputs": [
				{
					"name": "sqrtPriceX96",
					"type": "uint160",
					"internalType": "uint160"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "computeOptimalCashOutAmount",
			"inputs": [
				{
					"name": "directory",
					"type": "IJBDirectory",
					"internalType": "contract IJBDirectory"
				},
				{
					"name": "suckerRegistry",
					"type": "IJBSuckerRegistry",
					"internalType": "contract IJBSuckerRegistry"
				},
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "projectToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "totalProjectTokens",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "preHeldTerminalTokens",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "sqrtPriceInit",
					"type": "uint160",
					"internalType": "uint160"
				},
				{
					"name": "tickLower",
					"type": "int24",
					"internalType": "int24"
				},
				{
					"name": "tickUpper",
					"type": "int24",
					"internalType": "int24"
				},
				{
					"name": "controller",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "ruleset",
					"type": "tuple",
					"internalType": "struct JBRuleset",
					"components": [
						{
							"name": "cycleNumber",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "id",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "basedOnId",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "start",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "duration",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "weight",
							"type": "uint112",
							"internalType": "uint112"
						},
						{
							"name": "weightCutPercent",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "approvalHook",
							"type": "IJBRulesetApprovalHook",
							"internalType": "contract IJBRulesetApprovalHook"
						},
						{
							"name": "metadata",
							"type": "uint256",
							"internalType": "uint256"
						}
					]
				}
			],
			"outputs": [
				{
					"name": "cashOutAmount",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "findHighestValueTerminalTokenOf",
			"inputs": [
				{
					"name": "directory",
					"type": "IJBDirectory",
					"internalType": "contract IJBDirectory"
				},
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "controller",
					"type": "address",
					"internalType": "address"
				}
			],
			"outputs": [
				{
					"name": "highestToken",
					"type": "address",
					"internalType": "address"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "getCashOutRate",
			"inputs": [
				{
					"name": "directory",
					"type": "IJBDirectory",
					"internalType": "contract IJBDirectory"
				},
				{
					"name": "suckerRegistry",
					"type": "IJBSuckerRegistry",
					"internalType": "contract IJBSuckerRegistry"
				},
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "controller",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "ruleset",
					"type": "tuple",
					"internalType": "struct JBRuleset",
					"components": [
						{
							"name": "cycleNumber",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "id",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "basedOnId",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "start",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "duration",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "weight",
							"type": "uint112",
							"internalType": "uint112"
						},
						{
							"name": "weightCutPercent",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "approvalHook",
							"type": "IJBRulesetApprovalHook",
							"internalType": "contract IJBRulesetApprovalHook"
						},
						{
							"name": "metadata",
							"type": "uint256",
							"internalType": "uint256"
						}
					]
				}
			],
			"outputs": [
				{
					"name": "terminalTokensPerProjectToken",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "getCashOutRateSqrtPriceX96",
			"inputs": [
				{
					"name": "directory",
					"type": "IJBDirectory",
					"internalType": "contract IJBDirectory"
				},
				{
					"name": "suckerRegistry",
					"type": "IJBSuckerRegistry",
					"internalType": "contract IJBSuckerRegistry"
				},
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "projectToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "controller",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "ruleset",
					"type": "tuple",
					"internalType": "struct JBRuleset",
					"components": [
						{
							"name": "cycleNumber",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "id",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "basedOnId",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "start",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "duration",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "weight",
							"type": "uint112",
							"internalType": "uint112"
						},
						{
							"name": "weightCutPercent",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "approvalHook",
							"type": "IJBRulesetApprovalHook",
							"internalType": "contract IJBRulesetApprovalHook"
						},
						{
							"name": "metadata",
							"type": "uint256",
							"internalType": "uint256"
						}
					]
				}
			],
			"outputs": [
				{
					"name": "sqrtPriceX96",
					"type": "uint160",
					"internalType": "uint160"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "getIssuanceRate",
			"inputs": [
				{
					"name": "directory",
					"type": "IJBDirectory",
					"internalType": "contract IJBDirectory"
				},
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "controller",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "ruleset",
					"type": "tuple",
					"internalType": "struct JBRuleset",
					"components": [
						{
							"name": "cycleNumber",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "id",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "basedOnId",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "start",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "duration",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "weight",
							"type": "uint112",
							"internalType": "uint112"
						},
						{
							"name": "weightCutPercent",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "approvalHook",
							"type": "IJBRulesetApprovalHook",
							"internalType": "contract IJBRulesetApprovalHook"
						},
						{
							"name": "metadata",
							"type": "uint256",
							"internalType": "uint256"
						}
					]
				}
			],
			"outputs": [
				{
					"name": "projectTokensPerTerminalToken",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "getIssuanceRateSqrtPriceX96",
			"inputs": [
				{
					"name": "directory",
					"type": "IJBDirectory",
					"internalType": "contract IJBDirectory"
				},
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "projectToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "controller",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "ruleset",
					"type": "tuple",
					"internalType": "struct JBRuleset",
					"components": [
						{
							"name": "cycleNumber",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "id",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "basedOnId",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "start",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "duration",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "weight",
							"type": "uint112",
							"internalType": "uint112"
						},
						{
							"name": "weightCutPercent",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "approvalHook",
							"type": "IJBRulesetApprovalHook",
							"internalType": "contract IJBRulesetApprovalHook"
						},
						{
							"name": "metadata",
							"type": "uint256",
							"internalType": "uint256"
						}
					]
				}
			],
			"outputs": [
				{
					"name": "sqrtPriceX96",
					"type": "uint160",
					"internalType": "uint160"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "getProjectTokensOutForTerminalTokensIn",
			"inputs": [
				{
					"name": "directory",
					"type": "IJBDirectory",
					"internalType": "contract IJBDirectory"
				},
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "terminalTokenInAmount",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "controller",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "ruleset",
					"type": "tuple",
					"internalType": "struct JBRuleset",
					"components": [
						{
							"name": "cycleNumber",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "id",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "basedOnId",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "start",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "duration",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "weight",
							"type": "uint112",
							"internalType": "uint112"
						},
						{
							"name": "weightCutPercent",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "approvalHook",
							"type": "IJBRulesetApprovalHook",
							"internalType": "contract IJBRulesetApprovalHook"
						},
						{
							"name": "metadata",
							"type": "uint256",
							"internalType": "uint256"
						}
					]
				}
			],
			"outputs": [
				{
					"name": "projectTokenOutAmount",
					"type": "uint256",
					"internalType": "uint256"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "function",
			"name": "getSqrtPriceX96ForCurrentJuiceboxPrice",
			"inputs": [
				{
					"name": "directory",
					"type": "IJBDirectory",
					"internalType": "contract IJBDirectory"
				},
				{
					"name": "projectId",
					"type": "uint256",
					"internalType": "uint256"
				},
				{
					"name": "terminalToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "projectToken",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "controller",
					"type": "address",
					"internalType": "address"
				},
				{
					"name": "ruleset",
					"type": "tuple",
					"internalType": "struct JBRuleset",
					"components": [
						{
							"name": "cycleNumber",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "id",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "basedOnId",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "start",
							"type": "uint48",
							"internalType": "uint48"
						},
						{
							"name": "duration",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "weight",
							"type": "uint112",
							"internalType": "uint112"
						},
						{
							"name": "weightCutPercent",
							"type": "uint32",
							"internalType": "uint32"
						},
						{
							"name": "approvalHook",
							"type": "IJBRulesetApprovalHook",
							"internalType": "contract IJBRulesetApprovalHook"
						},
						{
							"name": "metadata",
							"type": "uint256",
							"internalType": "uint256"
						}
					]
				}
			],
			"outputs": [
				{
					"name": "sqrtPriceX96",
					"type": "uint160",
					"internalType": "uint160"
				}
			],
			"stateMutability": "view"
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHookMath_InvalidTickBounds",
			"inputs": [
				{
					"name": "tickLower",
					"type": "int24",
					"internalType": "int24"
				},
				{
					"name": "tickUpper",
					"type": "int24",
					"internalType": "int24"
				}
			]
		},
		{
			"type": "error",
			"name": "JBUniswapV4LPSplitHookMath_NoTerminalTokenFound",
			"inputs": [
				{
					"name": "projectId",
					"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"
				}
			]
		}
	],
	"args": [],
	"solcInputHash": "a32ea9786d395c6201f069f16d7e1638",
	"receipt": {
		"type": "0x2",
		"status": "0x1",
		"cumulativeGasUsed": "0x6ab6b0",
		"logs": [
			{
				"address": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
				"topics": [
					"0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d",
					"0x000000000000000000000000755ff2f75a0a586ecfa2b9a3c959cb662458a105",
					"0x00000000000000000000000091f164e1300f13beaf77358e4d84ed78f8e99d38",
					"0x9e73bc112f8d048c253634a09a3a235e115df11dcbb58084fd09bd7aac87882b"
				],
				"data": "0x0000000000000000000000000000000000000000000000000000000000000000",
				"blockHash": "0x945a4936642206caa1fa7ad68ad827acc2d46185c18db541225d84143fdf369a",
				"blockNumber": "0x2a314a3",
				"blockTimestamp": "0x6a598826",
				"transactionHash": "0x9c3392cbc25b93fdd6c3a7bcd5b2ae99d5d7ff729d4240bb9367f24379a33b3a",
				"transactionIndex": "0x11",
				"logIndex": "0x5c",
				"removed": false
			},
			{
				"address": "0x4dc161ef837ff1c4485b08ddfcdb182f2157be18",
				"topics": [
					"0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8",
					"0x00000000000000000000000091f164e1300f13beaf77358e4d84ed78f8e99d38"
				],
				"data": "0x",
				"blockHash": "0x945a4936642206caa1fa7ad68ad827acc2d46185c18db541225d84143fdf369a",
				"blockNumber": "0x2a314a3",
				"blockTimestamp": "0x6a598826",
				"transactionHash": "0x9c3392cbc25b93fdd6c3a7bcd5b2ae99d5d7ff729d4240bb9367f24379a33b3a",
				"transactionIndex": "0x11",
				"logIndex": "0x5d",
				"removed": false
			},
			{
				"address": "0x91f164e1300f13beaf77358e4d84ed78f8e99d38",
				"topics": [
					"0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07",
					"0x54e5233fd5ea56d644b298b88e147094c101735f9375d5be851c5e13076dd9ad"
				],
				"data": "0x0000000000000000000000000000000000000000000000000000000000000001",
				"blockHash": "0x945a4936642206caa1fa7ad68ad827acc2d46185c18db541225d84143fdf369a",
				"blockNumber": "0x2a314a3",
				"blockTimestamp": "0x6a598826",
				"transactionHash": "0x9c3392cbc25b93fdd6c3a7bcd5b2ae99d5d7ff729d4240bb9367f24379a33b3a",
				"transactionIndex": "0x11",
				"logIndex": "0x5e",
				"removed": false
			}
		],
		"logsBloom": "0x00002000000010000000000000080000001000000000000000000000000000000000000000000000000000000040000000000000000000000000000400000000000000000800200000000000000000000000000000000040000000000000000040000000000000000000000000000000000000000000000000000000000080008800000000000000000104000000000000000000000000000000000000000000004000040000000000000000000000002200000400000000000000000004000000000002008000000000000000400000000000000000000000000000800000000000000000000104000000000000000200000010000080000000000000000000",
		"transactionHash": "0x9c3392cbc25b93fdd6c3a7bcd5b2ae99d5d7ff729d4240bb9367f24379a33b3a",
		"transactionIndex": "0x11",
		"blockHash": "0x945a4936642206caa1fa7ad68ad827acc2d46185c18db541225d84143fdf369a",
		"blockNumber": "0x2a314a3",
		"gasUsed": "0x27b6e2",
		"effectiveGasPrice": "0x802c80",
		"blobGasUsed": "0x2be898",
		"from": "0x755ff2f75a0a586ecfa2b9a3c959cb662458a105",
		"to": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
		"contractAddress": null,
		"l1GasPrice": "0x3dbf0d61",
		"l1GasUsed": "0x19340",
		"l1Fee": "0x58ac2fd4ae",
		"l1BaseFeeScalar": "0x44d",
		"l1BlobBaseFee": "0x3aefd34",
		"l1BlobBaseFeeScalar": "0xa118b",
		"daFootprintGasScalar": "0x1be"
	},
	"bytecode": "0x60808060405234601957612b01908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806306d382b3146108df578063316d0fe5146108c55780634b7a1e5a146100b35780634d14abb01461075757806358224c5614610248578063585e6ad11461013757806395135b471461010b578063b31c3c41146100b8578063e4cb85e9146100b35763ef200d5514610087575f80fd5b60406100a161009536610d8b565b95949094939193611ad8565b82519160020b825260020b6020820152f35b610e0e565b6101c03660031901126101075760206100ff6100d2610b0c565b6100da610d75565b906100e3610b4e565b6100eb610b38565b916100f536610bdb565b9360443591611639565b604051908152f35b5f80fd5b602061012561011936610d8b565b959490949391936115b6565b6040516001600160a01b039091168152f35b6101a03660031901126101075761014c610b0c565b610154610b22565b61015c610b4e565b610120366083190112610107576040519061017682610b64565b60843565ffffffffffff8116810361010757825260a43565ffffffffffff8116810361010757602083015260c43565ffffffffffff8116810361010757604083015260e43565ffffffffffff811681036101075760608301526101043563ffffffff81168103610107576080830152610124356001600160701b03811681036101075760a08301526101443563ffffffff811681036101075760c083015261016435926001600160a01b0384168403610107576020946100ff9460e08501526101843561010085015260243590611379565b60603660031901126101075761025c610b0c565b610264610b22565b60405163d175415360e01b81526024803560048301525f9392919084908290816001600160a01b0387165afa9081156105a2575f916106be575b505f915f935f938351935f5b8581106102fb5788886001600160a01b038216156102f3575b506001600160a01b031680156102de57602090604051908152f35b6339eecfaf60e21b5f5260243560045260245ffd5b9050816102c3565b6001600160a01b0361030d8284611351565b511660405163507f146560e01b8152602081600481855afa5f918161069e575b5061033e5750506001905b016102aa565b60405163515a929360e01b815260243560048201525f81602481865afa5f9181610600575b5061037357505050600190610338565b918251925f5b84811061038d575050505050600190610338565b6103978183611351565b5180516001600160a01b03906103b29082166024358d611d55565b168481159182156105f5575b50506105ec57805160405163467f4cb960e01b81526004810186905260248035908201526001600160a01b03918216604482015290602090829060649082908a165afa80156105a2578c915f916105b8575b5080156105ad5760408301805163ffffffff1661eeee0361045a575090505b898111610443575b50506001905b01610379565b90516001600160a01b03169e50975060018f610437565b6040516307aaf34d60e21b815292602090849060049082906001600160a01b03165afa9283156105a2575f9361056c575b505160208481018051604051631df139fd60e11b815260248035600483015263ffffffff9095169481019490945261eeee604485015260ff16606484015293829060849082906001600160a01b03165afa5f9181610539575b5061052957506104fa60ff610500935116610f13565b90611de8565b8d8111610512575b505060019061043d565b90516001600160a01b03169d509b5060018f610508565b906105349250611de8565b61042f565b9091506020813d8211610564575b8161055460209383610b95565b810103126101075751905f6104e4565b3d9150610547565b63ffffffff9193506105949060203d811161059b575b61058c8183610b95565b810190610ef4565b929061048b565b503d610582565b6040513d5f823e3d90fd5b50505060019061043d565b9150506020813d82116105e4575b816105d360209383610b95565b81010312610107578b90515f610410565b3d91506105c6565b5060019061043d565b14159050845f6103be565b9091503d805f833e6106128183610b95565b8101906020818303126101075780519067ffffffffffffffff8211610107570181601f8201121561010757805161064881611325565b926106566040519485610b95565b8184526020606081860193028401019281841161010757602001915b8383106106845750505050908d610363565b60206060916106938486610e85565b815201920191610672565b6106b791925060203d811161059b5761058c8183610b95565b908c61032d565b90503d805f833e6106cf8183610b95565b8101906020818303126101075780519067ffffffffffffffff821161010757019080601f8301121561010757815161070681611325565b926107146040519485610b95565b81845260208085019260051b82010192831161010757602001905b82821061073f575050508461029e565b6020809161074c8461133d565b81520191019061072f565b6102803660031901126101075761076c610b0c565b610774610d75565b9061077d610b4e565b91610786610b38565b9160e4356001600160a01b038116810361010757610104358060020b81036101075761012435918260020b83036101075761014435936001600160a01b0385168503610107576101203661016319011261010757604051956107e787610b64565b6101643565ffffffffffff811681036101075787526101843565ffffffffffff811681036101075760208801526101a43565ffffffffffff811681036101075760408801526101c43565ffffffffffff811681036101075760608801526101e43563ffffffff81168103610107576080880152610204356001600160701b03811681036101075760a08801526102243563ffffffff811681036101075760c088015261024435976001600160a01b0389168903610107576020996100ff9960e08a0152610264356101008a015260c4359360a43593604435916111d2565b60206101256108d336610d8b565b95949094939193610fc2565b6101c0366003190112610107576108f4610b0c565b610965602435610902610b22565b606061090c610b38565b9161091636610bdb565b956001600160a01b039061092d9083908790611d55565b604051633a01714f60e01b8152600481018790526001600160a01b039093166024840152919586929190911690829081906044820190565b03915afa9283156105a2575f93610ad1575b5063ffffffff61010085015160241c169060408401908263ffffffff835116145f146109cd57505050506020916001600160701b0360a06109c060ff866100ff96015116610f13565b925b0151166064356120f9565b6040516307aaf34d60e21b8152939490602090859060049082906001600160a01b03165afa9182156105a2576020945f93610aa7575b505190840151604051631df139fd60e11b8152600481019690965263ffffffff91821660248701529216604485015260ff9091166064840152829060849082906001600160a01b03165afa9081156105a2575f91610a74575b506020916001600160701b0360a06100ff93926109c2565b90506020813d602011610a9f575b81610a8f60209383610b95565b8101031261010757516020610a5c565b3d9150610a82565b60ff91935063ffffffff610ac88792833d851161059b5761058c8183610b95565b94925050610a03565b90925060603d606011610b05575b610ae98183610b95565b810160608282031261010757610afe91610e85565b9184610977565b503d610adf565b600435906001600160a01b038216820361010757565b604435906001600160a01b038216820361010757565b608435906001600160a01b038216820361010757565b606435906001600160a01b038216820361010757565b610120810190811067ffffffffffffffff821117610b8157604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610b8157604052565b359065ffffffffffff8216820361010757565b359063ffffffff8216820361010757565b6101209060a31901126101075760405190610bf582610b64565b8160a43565ffffffffffff8116810361010757815260c43565ffffffffffff8116810361010757602082015260e43565ffffffffffff811681036101075760408201526101043565ffffffffffff811681036101075760608201526101243563ffffffff81168103610107576080820152610144356001600160701b03811681036101075760a08201526101643563ffffffff811681036101075760c0820152610184356001600160a01b03811681036101075760e08201526101006101a435910152565b91908261012091031261010757604051610cd381610b64565b8092610cde81610bb7565b8252610cec60208201610bb7565b6020830152610cfd60408201610bb7565b6040830152610d0e60608201610bb7565b6060830152610d1f60808201610bca565b608083015260a08101356001600160701b03811681036101075760a0830152610d4a60c08201610bca565b60c083015260e08101356001600160a01b03811681036101075760e083015261010090810135910152565b602435906001600160a01b038216820361010757565b6101e0600319820112610107576004356001600160a01b038116810361010757916024356001600160a01b03811681036101075791604435916064356001600160a01b038116810361010757916084356001600160a01b0381168103610107579160a4356001600160a01b038116810361010757610e0b909260c4610cba565b90565b6101c0366003190112610107576004356001600160a01b03811681036101075760443590602435906001600160a01b0383168303610107576064356001600160a01b038116810361010757608435906001600160a01b03821682036101075760209461012594610e7f3660a4610cba565b946110d7565b9190826060910312610107576040516060810181811067ffffffffffffffff821117610b81576040528251909283916001600160a01b038116810361010757825260208101519060ff8216820361010757604091602084015201519063ffffffff821682036101075760400152565b9081602091031261010757516001600160a01b03811681036101075790565b60ff16604d8111610f2457600a0a90565b634e487b7160e01b5f52601160045260245ffd5b60020b60c80190627fffff8213627fffff19831217610f2457565b60020b9060020b908115610f7557627fffff1981145f19831416610f24570590565b634e487b7160e01b5f52601260045260245ffd5b60020b60c7190190627fffff198212627fffff831317610f2457565b600291820b910b0390627fffff198212627fffff831317610f2457565b959493929190610fd686868585858c611639565b156110d1579181610ff5878787856110019b9997610ffb9b998e6115b6565b976110d7565b91612199565b9061100b81612199565b8060020b8360020b1292835f146110ca5780935b156110c357505b60020b9160020b908282146110bd575001627fffff8113627fffff19821217610f2457600261105791810b05612495565b620d89e7198160020b126110a7575b620d89e88160020b1361107d575b610e0b906124f6565b50610e0b6110a061109b60c861109681620d89e8610f53565b61247e565b610f89565b9050611074565b506110b86110b36124d2565b610f38565b611066565b91505090565b9050611026565b819361101f565b50610e0b955b9390918095926110ea6110f19583612823565b5095611379565b918215611182576001600160a01b039182169116036111685761111661112491612904565b61111e61283e565b90611ea6565b6401000276a3811061115e5773fffd8963efd1fc6a506488495d951d5263988d2580821161115957506001600160a01b031690565b905090565b506401000276a390565b61117d9061111e61117761283e565b91612904565b611124565b6001600160a01b039182169116141590506111a0576401000276a390565b73fffd8963efd1fc6a506488495d951d5263988d2590565b91908203918211610f2457565b91908201809211610f2457565b91839699979a92916111e795969c9492611639565b938415611319576111fa611200916124f6565b936124f6565b916001600160a01b03811661eeee0361131357505f905b6001600160a01b039384169690841691841691909110921690858211156112ff576001600160a01b0316808210156112ee57611258611281949596836111b8565b9161126381836111b8565b93156112db576112779061127c9394611fb3565b611ea6565b611de8565b9081156112d35781611292916111c5565b9283156112d3576112a49184916120f9565b91816112c55750505f5b808211156112bf57610e0b916111b8565b50505f90565b6112ce91611de8565b6112ae565b505050505f90565b61127c92916112e991611f46565b611f46565b5050925050505f14610e0b57505f90565b5050925050505f1461130e5790565b505f90565b90611217565b50505050505050505f90565b67ffffffffffffffff8111610b815760051b60200190565b51906001600160a01b038216820361010757565b80518210156113655760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b9391926113dc93606061010085019161ffff835160041c16976113a4828760018060a01b0393611d55565b604051633a01714f60e01b8152600481018890526001600160a01b039093166024840152919788929190911690829081906044820190565b03915afa9485156105a2575f95611574575b5063ffffffff905160241c169060408501908263ffffffff835116145f1461146b57505050506001600160701b0360a061143160ff602061144496015116610f13565b925b015116670de0b6b3a76400006120f9565b90801561146757612710039061ffff8211610f245761ffff610e0b921690612052565b5090565b6040516307aaf34d60e21b8152939590602090859060049082906001600160a01b03165afa9182156105a2576020945f9361154a575b505190840151604051631df139fd60e11b8152600481019790975263ffffffff91821660248801529216604486015260ff9091166064850152839060849082906001600160a01b03165afa9182156105a2575f9261150f575b506001600160701b0360a06114449392611433565b91506020823d602011611542575b8161152a60209383610b95565b81010312610107579051906001600160701b036114fa565b3d915061151d565b60ff91935063ffffffff61156b8792833d851161059b5761058c8183610b95565b949250506114a1565b90945060603d6060116115af575b61158c8183610b95565b8101906060818303126101075763ffffffff916115a891610e85565b94906113ee565b503d611582565b9592949185916115c96115d09684612823565b5097611639565b908115611600576111249261111692916001600160a01b039182169116036115fb576115fb906120df565b612904565b6001600160a01b039283169216919091141590506116305773fffd8963efd1fc6a506488495d951d5263988d2590565b6401000276a390565b9394936001600160a01b03906116529085908590611d55565b60405163507f146560e01b8152949116602085600481845afa9485156105a2575f95611aae575b50604051633a01714f60e01b8152600481018590526001600160a01b03909216602483015260609082908180604481015b03915afa9081156105a2575f91611a75575b5060018061010063ffffffff604060ff60208701511695015116970151604f1c1614155f146118db5760405163ab5f3a0160e01b8152600481018490526024810182905260448101869052916020836064816001600160a01b0389165afa5f93816118a7575b5061173257505050505050505f90565b604051634da781a960e01b81526004810185905296602090889060249082906001600160a01b03165afa9687156105a2575f9761186b575b5060405163622c574160e11b815260048101859052602481019690965260448601919091526001600160a01b0316939060208280606481015b0381885afa9182156105a2575f92611835575b506117c56024926020926111c5565b946040519283809263139db5a960e31b82528660048301525afa9081156105a2575f91611801575b506117fb90610e0b956111c5565b91612a35565b90506020813d60201161182d575b8161181c60209383610b95565b810103126101075751610e0b6117ed565b3d915061180f565b91506020823d602011611863575b8161185060209383610b95565b81010312610107579051906117c56117b6565b3d9150611843565b9096506020929192813d60201161189f575b8161188a60209383610b95565b810103126101075751959091906117a361176a565b3d915061187d565b9093506020813d6020116118d3575b816118c360209383610b95565b810103126101075751925f611722565b3d91506118b6565b604051634da781a960e01b815260048101849052939590939150602090829060249082906001600160a01b03165afa5f9181611a41575b506119205750505050505f90565b670de0b6b3a764000081106119b65750608490602093946040519586948593636392f5a560e11b85526004850152670de0b6b3a764000060248501526044840152606483015260018060a01b03165afa5f9181611982575b50610e0b57505f90565b9091506020813d6020116119ae575b8161199e60209383610b95565b810103126101075751905f611978565b3d9150611991565b60405163ab5f3a0160e01b815260048101839052602481019390935260448301939093529091906020836064816001600160a01b0388165afa5f9381611a0d575b50611a0457505050505f90565b610e0b93612a35565b9093506020813d602011611a39575b81611a2960209383610b95565b810103126101075751925f6119f7565b3d9150611a1c565b9091506020813d602011611a6d575b81611a5d60209383610b95565b810103126101075751905f611912565b3d9150611a50565b905060603d606011611aa7575b611a8c8183610b95565b810160608282031261010757611aa191610e85565b5f6116bc565b503d611a82565b606091955091611acf6116aa9360203d60201161059b5761058c8183610b95565b95915091611679565b959196939290611aec8387848b858c611639565b15611c845796611b1d611b128488878686611b178e9f8f86868686611b12958c956115b6565b612199565b9d6110d7565b8060020b8860020b1297885f14611c7d5780985b15611c755750965b60020b9260c880850560020b028060020b908103610f245780948112611c63575b50611b658498612495565b96611b716110b36124d2565b95611b8761109b60c861109681620d89e8610f53565b948760020b809760020b12611c5a575b8560020b94858b60020b13611c51575b8a60020b8c60020b1215611bc5575b50505050505050505090919250565b611be2979b50611bdd96999a50611b1295989c6110d7565b612495565b94611bf5611bef87610f89565b96610f38565b948660020b12611c49575b508360020b13611c41575b508160020b8360020b81811215611c2c57808080808080808b9a9998611bb6565b63b0140a7f60e01b5f5260045260245260445ffd5b91505f611c0b565b94505f611c00565b99508599611ba7565b99508699611b97565b611c6e919450610f38565b925f611b5a565b905096611b39565b8198611b31565b50949295939091611c988383888888611379565b15611d2e57611cae95611bdd95611b12956110d7565b90611cc1611cbb83610f89565b92610f38565b91611ccd6110b36124d2565b611ce261109b60c861109681620d89e8610f53565b908060020b8360020b12611d26575b508060020b8460020b13611d1e575b508260020b8160020b1215611d13579190565b9150610e0b82610f38565b92505f611d00565b91505f611cf1565b505050505050611d3f6110b36124d2565b90610e0b61109b60c861109681620d89e8610f53565b604051630862026560e41b815260048101929092526001600160a01b039283166024830152909160209183916044918391165afa9081156105a2575f91611da4575b506001600160a01b031690565b90506020813d602011611dd6575b81611dbf60209383610b95565b8101031261010757611dd09061133d565b5f611d97565b3d9150611db2565b8115610f75570490565b5f19670de0b6b3a7640000820991670de0b6b3a7640000820291828085109403938085039414611e9a5781841015611e7957670de0b6b3a7640000829109600182190182168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b630c740aef60e31b5f52600452670de0b6b3a764000060245260445260645ffd5b5090610e0b9250611dde565b5f19600160601b8209918160601b91828085109403938085039414611e9a5781841015611f29578190600160601b9009600182190182168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b630c740aef60e31b5f52600452600160601b60245260445260645ffd5b5f91905f198282099180820293848085109403938085039414611fa957600160601b841015611f895750600160601b910990828211900360a01b910360601c1790565b630c740aef60e31b8152600492909252602452600160601b604452606490fd5b5050505060601c90565b5f1981600160601b09918160601b91828085109403938085039414611e9a5781841015612035578190600160601b09600182190182168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b630c740aef60e31b5f52600160601b60045260245260445260645ffd5b91905f905f1981850990808502928380841093039280840393146120d2576127108310156120b65750612710907fbc01a36e2eb1c432ca57a786c226809d495182a9930be0ded288ce703afb7e9194950990828211900360fc1b910360041c170290565b60649186630c740aef60e31b8352600452602452612710604452fd5b5050506127109192500490565b8015610f75576ec097ce7bc90715b34b9f10000000000490565b90915f19838309928083029283808610950394808603951461218c57828510156121745790829109600182190182168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b630c740aef60e31b5f5260045260245260445260645ffd5b505090610e0b9250611dde565b73fffd8963efd1fc6a506488495d951d51639616826401000276a21982016001600160a01b03161161245e57602081901b640100000000600160c01b03168080156101075760ff826fffffffffffffffffffffffffffffffff1060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c821060031b177f07060605060205000602030205040001060502050303040105050304000000006f8421084210842108cc6318c6db6d54be85831c1c601f161a17169160808310155f146124525750607e1982011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c6780000000000000001690607f190160401b1717171717171717171717171717693627a301d71055774c85026f028f6481ab7f045a5af012a19d003aa919810160801d60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918282145f146124335750905090565b6001600160a01b0390811690612448846124f6565b1611611159575090565b905081607f031b612278565b6318521d4960e21b5f9081526001600160a01b0391909116600452602490fd5b9060020b9060020b02908160020b918203610f2457565b6124a460c86110968184610f53565b9060020b5f811290816124c5575b506124ba5790565b60c8610e0b91610fa5565b90508160020b135f6124b2565b6124e560c861109681620d89e719610f53565b620d89e7198160020b136124ba5790565b60020b908160ff1d82810118620d89e881116128105763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b1891600281166127f4575b600481166127d8575b600881166127bc575b601081166127a0575b60208116612784575b60408116612768575b6080811661274c575b6101008116612730575b6102008116612714575b61040081166126f8575b61080081166126dc575b61100081166126c0575b61200081166126a4575b6140008116612688575b618000811661266c575b620100008116612650575b620200008116612635575b62040000811661261a575b6208000016612601575b5f126125f9575b0160201c90565b5f19046125f2565b6b048a170391f7dc42444e8fa290910260801c906125eb565b6d2216e584f5fa1ea926041bedfe9890920260801c916125e1565b916e5d6af8dedb81196699c329225ee6040260801c916125d6565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c916125cb565b916f31be135f97d08fd981231505542fcfa60260801c916125c0565b916f70d869a156d2a1b890bb3df62baf32f70260801c916125b6565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916125ac565b916fd097f3bdfd2022b8845ad8f792aa58250260801c916125a2565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91612598565b916ff3392b0822b70005940c7a398e4b70f30260801c9161258e565b916ff987a7253ac413176f2b074cf7815e540260801c91612584565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c9161257a565b916ffe5dee046a99a2a811c461f1969c30530260801c91612570565b916fff2ea16466c96a3843ec78b326b528610260801c91612567565b916fff973b41fa98c081472e6896dfb254c00260801c9161255e565b916fffcb9843d60f6159c9db58835c9266440260801c91612555565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c9161254c565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91612543565b916ffff97272373d413259a46990580e213a0260801c9161253a565b826345c3193d60e11b5f5260045260245ffd5b9091906001600160a01b038084169082161015610e0b579190565b63100000006128fc565b8015610f755780670de0b6b3a7640000040160011c8015610f755780670de0b6b3a7640000040160011c8015610f755780670de0b6b3a7640000040160011c8015610f755780670de0b6b3a7640000040160011c8015610f755780670de0b6b3a7640000040160011c8015610f755780670de0b6b3a7640000040160011c8015610f755780670de0b6b3a7640000040160011c908115610f755781670de0b6b3a764000004808310156128f85750565b9150565b60011b612848565b908115612a3057816001600160801b821015612a1f575b600482600160401b6129cd941015612a12575b640100000000811015612a05575b620100008110156129f8575b6101008110156129ec575b60108110156129e0575b10156129d8575b61296e8185611dde565b0160011c61297c8185611dde565b0160011c61298a8185611dde565b0160011c6129988185611dde565b0160011c6129a68185611dde565b0160011c6129b48185611dde565b0160011c6129c28185611dde565b0160011c8093611dde565b808310156128f85750565b60011b612964565b811c9160021b9161295d565b60081c91811b91612953565b60101c9160081b91612948565b60201c9160101b9161293c565b60401c9160201b9161292e565b5050608082901c600160401b61291b565b5f9150565b9180156112d3576084602092670de0b6b3a764000083105f14612ae55782945b6040519687948593639e0a5d5960e01b855260048501528760248501526044840152606483015260018060a01b03165afa5f9281612ab1575b50612a995750505f90565b670de0b6b3a7640000811461146757610e0b91611de8565b9092506020813d602011612add575b81612acd60209383610b95565b810103126101075751915f612a8e565b3d9150612ac0565b670de0b6b3a764000094612a5556fea164736f6c634300081c000a",
	"deployedBytecode": "0x60806040526004361015610011575f80fd5b5f3560e01c806306d382b3146108df578063316d0fe5146108c55780634b7a1e5a146100b35780634d14abb01461075757806358224c5614610248578063585e6ad11461013757806395135b471461010b578063b31c3c41146100b8578063e4cb85e9146100b35763ef200d5514610087575f80fd5b60406100a161009536610d8b565b95949094939193611ad8565b82519160020b825260020b6020820152f35b610e0e565b6101c03660031901126101075760206100ff6100d2610b0c565b6100da610d75565b906100e3610b4e565b6100eb610b38565b916100f536610bdb565b9360443591611639565b604051908152f35b5f80fd5b602061012561011936610d8b565b959490949391936115b6565b6040516001600160a01b039091168152f35b6101a03660031901126101075761014c610b0c565b610154610b22565b61015c610b4e565b610120366083190112610107576040519061017682610b64565b60843565ffffffffffff8116810361010757825260a43565ffffffffffff8116810361010757602083015260c43565ffffffffffff8116810361010757604083015260e43565ffffffffffff811681036101075760608301526101043563ffffffff81168103610107576080830152610124356001600160701b03811681036101075760a08301526101443563ffffffff811681036101075760c083015261016435926001600160a01b0384168403610107576020946100ff9460e08501526101843561010085015260243590611379565b60603660031901126101075761025c610b0c565b610264610b22565b60405163d175415360e01b81526024803560048301525f9392919084908290816001600160a01b0387165afa9081156105a2575f916106be575b505f915f935f938351935f5b8581106102fb5788886001600160a01b038216156102f3575b506001600160a01b031680156102de57602090604051908152f35b6339eecfaf60e21b5f5260243560045260245ffd5b9050816102c3565b6001600160a01b0361030d8284611351565b511660405163507f146560e01b8152602081600481855afa5f918161069e575b5061033e5750506001905b016102aa565b60405163515a929360e01b815260243560048201525f81602481865afa5f9181610600575b5061037357505050600190610338565b918251925f5b84811061038d575050505050600190610338565b6103978183611351565b5180516001600160a01b03906103b29082166024358d611d55565b168481159182156105f5575b50506105ec57805160405163467f4cb960e01b81526004810186905260248035908201526001600160a01b03918216604482015290602090829060649082908a165afa80156105a2578c915f916105b8575b5080156105ad5760408301805163ffffffff1661eeee0361045a575090505b898111610443575b50506001905b01610379565b90516001600160a01b03169e50975060018f610437565b6040516307aaf34d60e21b815292602090849060049082906001600160a01b03165afa9283156105a2575f9361056c575b505160208481018051604051631df139fd60e11b815260248035600483015263ffffffff9095169481019490945261eeee604485015260ff16606484015293829060849082906001600160a01b03165afa5f9181610539575b5061052957506104fa60ff610500935116610f13565b90611de8565b8d8111610512575b505060019061043d565b90516001600160a01b03169d509b5060018f610508565b906105349250611de8565b61042f565b9091506020813d8211610564575b8161055460209383610b95565b810103126101075751905f6104e4565b3d9150610547565b63ffffffff9193506105949060203d811161059b575b61058c8183610b95565b810190610ef4565b929061048b565b503d610582565b6040513d5f823e3d90fd5b50505060019061043d565b9150506020813d82116105e4575b816105d360209383610b95565b81010312610107578b90515f610410565b3d91506105c6565b5060019061043d565b14159050845f6103be565b9091503d805f833e6106128183610b95565b8101906020818303126101075780519067ffffffffffffffff8211610107570181601f8201121561010757805161064881611325565b926106566040519485610b95565b8184526020606081860193028401019281841161010757602001915b8383106106845750505050908d610363565b60206060916106938486610e85565b815201920191610672565b6106b791925060203d811161059b5761058c8183610b95565b908c61032d565b90503d805f833e6106cf8183610b95565b8101906020818303126101075780519067ffffffffffffffff821161010757019080601f8301121561010757815161070681611325565b926107146040519485610b95565b81845260208085019260051b82010192831161010757602001905b82821061073f575050508461029e565b6020809161074c8461133d565b81520191019061072f565b6102803660031901126101075761076c610b0c565b610774610d75565b9061077d610b4e565b91610786610b38565b9160e4356001600160a01b038116810361010757610104358060020b81036101075761012435918260020b83036101075761014435936001600160a01b0385168503610107576101203661016319011261010757604051956107e787610b64565b6101643565ffffffffffff811681036101075787526101843565ffffffffffff811681036101075760208801526101a43565ffffffffffff811681036101075760408801526101c43565ffffffffffff811681036101075760608801526101e43563ffffffff81168103610107576080880152610204356001600160701b03811681036101075760a08801526102243563ffffffff811681036101075760c088015261024435976001600160a01b0389168903610107576020996100ff9960e08a0152610264356101008a015260c4359360a43593604435916111d2565b60206101256108d336610d8b565b95949094939193610fc2565b6101c0366003190112610107576108f4610b0c565b610965602435610902610b22565b606061090c610b38565b9161091636610bdb565b956001600160a01b039061092d9083908790611d55565b604051633a01714f60e01b8152600481018790526001600160a01b039093166024840152919586929190911690829081906044820190565b03915afa9283156105a2575f93610ad1575b5063ffffffff61010085015160241c169060408401908263ffffffff835116145f146109cd57505050506020916001600160701b0360a06109c060ff866100ff96015116610f13565b925b0151166064356120f9565b6040516307aaf34d60e21b8152939490602090859060049082906001600160a01b03165afa9182156105a2576020945f93610aa7575b505190840151604051631df139fd60e11b8152600481019690965263ffffffff91821660248701529216604485015260ff9091166064840152829060849082906001600160a01b03165afa9081156105a2575f91610a74575b506020916001600160701b0360a06100ff93926109c2565b90506020813d602011610a9f575b81610a8f60209383610b95565b8101031261010757516020610a5c565b3d9150610a82565b60ff91935063ffffffff610ac88792833d851161059b5761058c8183610b95565b94925050610a03565b90925060603d606011610b05575b610ae98183610b95565b810160608282031261010757610afe91610e85565b9184610977565b503d610adf565b600435906001600160a01b038216820361010757565b604435906001600160a01b038216820361010757565b608435906001600160a01b038216820361010757565b606435906001600160a01b038216820361010757565b610120810190811067ffffffffffffffff821117610b8157604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610b8157604052565b359065ffffffffffff8216820361010757565b359063ffffffff8216820361010757565b6101209060a31901126101075760405190610bf582610b64565b8160a43565ffffffffffff8116810361010757815260c43565ffffffffffff8116810361010757602082015260e43565ffffffffffff811681036101075760408201526101043565ffffffffffff811681036101075760608201526101243563ffffffff81168103610107576080820152610144356001600160701b03811681036101075760a08201526101643563ffffffff811681036101075760c0820152610184356001600160a01b03811681036101075760e08201526101006101a435910152565b91908261012091031261010757604051610cd381610b64565b8092610cde81610bb7565b8252610cec60208201610bb7565b6020830152610cfd60408201610bb7565b6040830152610d0e60608201610bb7565b6060830152610d1f60808201610bca565b608083015260a08101356001600160701b03811681036101075760a0830152610d4a60c08201610bca565b60c083015260e08101356001600160a01b03811681036101075760e083015261010090810135910152565b602435906001600160a01b038216820361010757565b6101e0600319820112610107576004356001600160a01b038116810361010757916024356001600160a01b03811681036101075791604435916064356001600160a01b038116810361010757916084356001600160a01b0381168103610107579160a4356001600160a01b038116810361010757610e0b909260c4610cba565b90565b6101c0366003190112610107576004356001600160a01b03811681036101075760443590602435906001600160a01b0383168303610107576064356001600160a01b038116810361010757608435906001600160a01b03821682036101075760209461012594610e7f3660a4610cba565b946110d7565b9190826060910312610107576040516060810181811067ffffffffffffffff821117610b81576040528251909283916001600160a01b038116810361010757825260208101519060ff8216820361010757604091602084015201519063ffffffff821682036101075760400152565b9081602091031261010757516001600160a01b03811681036101075790565b60ff16604d8111610f2457600a0a90565b634e487b7160e01b5f52601160045260245ffd5b60020b60c80190627fffff8213627fffff19831217610f2457565b60020b9060020b908115610f7557627fffff1981145f19831416610f24570590565b634e487b7160e01b5f52601260045260245ffd5b60020b60c7190190627fffff198212627fffff831317610f2457565b600291820b910b0390627fffff198212627fffff831317610f2457565b959493929190610fd686868585858c611639565b156110d1579181610ff5878787856110019b9997610ffb9b998e6115b6565b976110d7565b91612199565b9061100b81612199565b8060020b8360020b1292835f146110ca5780935b156110c357505b60020b9160020b908282146110bd575001627fffff8113627fffff19821217610f2457600261105791810b05612495565b620d89e7198160020b126110a7575b620d89e88160020b1361107d575b610e0b906124f6565b50610e0b6110a061109b60c861109681620d89e8610f53565b61247e565b610f89565b9050611074565b506110b86110b36124d2565b610f38565b611066565b91505090565b9050611026565b819361101f565b50610e0b955b9390918095926110ea6110f19583612823565b5095611379565b918215611182576001600160a01b039182169116036111685761111661112491612904565b61111e61283e565b90611ea6565b6401000276a3811061115e5773fffd8963efd1fc6a506488495d951d5263988d2580821161115957506001600160a01b031690565b905090565b506401000276a390565b61117d9061111e61117761283e565b91612904565b611124565b6001600160a01b039182169116141590506111a0576401000276a390565b73fffd8963efd1fc6a506488495d951d5263988d2590565b91908203918211610f2457565b91908201809211610f2457565b91839699979a92916111e795969c9492611639565b938415611319576111fa611200916124f6565b936124f6565b916001600160a01b03811661eeee0361131357505f905b6001600160a01b039384169690841691841691909110921690858211156112ff576001600160a01b0316808210156112ee57611258611281949596836111b8565b9161126381836111b8565b93156112db576112779061127c9394611fb3565b611ea6565b611de8565b9081156112d35781611292916111c5565b9283156112d3576112a49184916120f9565b91816112c55750505f5b808211156112bf57610e0b916111b8565b50505f90565b6112ce91611de8565b6112ae565b505050505f90565b61127c92916112e991611f46565b611f46565b5050925050505f14610e0b57505f90565b5050925050505f1461130e5790565b505f90565b90611217565b50505050505050505f90565b67ffffffffffffffff8111610b815760051b60200190565b51906001600160a01b038216820361010757565b80518210156113655760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b9391926113dc93606061010085019161ffff835160041c16976113a4828760018060a01b0393611d55565b604051633a01714f60e01b8152600481018890526001600160a01b039093166024840152919788929190911690829081906044820190565b03915afa9485156105a2575f95611574575b5063ffffffff905160241c169060408501908263ffffffff835116145f1461146b57505050506001600160701b0360a061143160ff602061144496015116610f13565b925b015116670de0b6b3a76400006120f9565b90801561146757612710039061ffff8211610f245761ffff610e0b921690612052565b5090565b6040516307aaf34d60e21b8152939590602090859060049082906001600160a01b03165afa9182156105a2576020945f9361154a575b505190840151604051631df139fd60e11b8152600481019790975263ffffffff91821660248801529216604486015260ff9091166064850152839060849082906001600160a01b03165afa9182156105a2575f9261150f575b506001600160701b0360a06114449392611433565b91506020823d602011611542575b8161152a60209383610b95565b81010312610107579051906001600160701b036114fa565b3d915061151d565b60ff91935063ffffffff61156b8792833d851161059b5761058c8183610b95565b949250506114a1565b90945060603d6060116115af575b61158c8183610b95565b8101906060818303126101075763ffffffff916115a891610e85565b94906113ee565b503d611582565b9592949185916115c96115d09684612823565b5097611639565b908115611600576111249261111692916001600160a01b039182169116036115fb576115fb906120df565b612904565b6001600160a01b039283169216919091141590506116305773fffd8963efd1fc6a506488495d951d5263988d2590565b6401000276a390565b9394936001600160a01b03906116529085908590611d55565b60405163507f146560e01b8152949116602085600481845afa9485156105a2575f95611aae575b50604051633a01714f60e01b8152600481018590526001600160a01b03909216602483015260609082908180604481015b03915afa9081156105a2575f91611a75575b5060018061010063ffffffff604060ff60208701511695015116970151604f1c1614155f146118db5760405163ab5f3a0160e01b8152600481018490526024810182905260448101869052916020836064816001600160a01b0389165afa5f93816118a7575b5061173257505050505050505f90565b604051634da781a960e01b81526004810185905296602090889060249082906001600160a01b03165afa9687156105a2575f9761186b575b5060405163622c574160e11b815260048101859052602481019690965260448601919091526001600160a01b0316939060208280606481015b0381885afa9182156105a2575f92611835575b506117c56024926020926111c5565b946040519283809263139db5a960e31b82528660048301525afa9081156105a2575f91611801575b506117fb90610e0b956111c5565b91612a35565b90506020813d60201161182d575b8161181c60209383610b95565b810103126101075751610e0b6117ed565b3d915061180f565b91506020823d602011611863575b8161185060209383610b95565b81010312610107579051906117c56117b6565b3d9150611843565b9096506020929192813d60201161189f575b8161188a60209383610b95565b810103126101075751959091906117a361176a565b3d915061187d565b9093506020813d6020116118d3575b816118c360209383610b95565b810103126101075751925f611722565b3d91506118b6565b604051634da781a960e01b815260048101849052939590939150602090829060249082906001600160a01b03165afa5f9181611a41575b506119205750505050505f90565b670de0b6b3a764000081106119b65750608490602093946040519586948593636392f5a560e11b85526004850152670de0b6b3a764000060248501526044840152606483015260018060a01b03165afa5f9181611982575b50610e0b57505f90565b9091506020813d6020116119ae575b8161199e60209383610b95565b810103126101075751905f611978565b3d9150611991565b60405163ab5f3a0160e01b815260048101839052602481019390935260448301939093529091906020836064816001600160a01b0388165afa5f9381611a0d575b50611a0457505050505f90565b610e0b93612a35565b9093506020813d602011611a39575b81611a2960209383610b95565b810103126101075751925f6119f7565b3d9150611a1c565b9091506020813d602011611a6d575b81611a5d60209383610b95565b810103126101075751905f611912565b3d9150611a50565b905060603d606011611aa7575b611a8c8183610b95565b810160608282031261010757611aa191610e85565b5f6116bc565b503d611a82565b606091955091611acf6116aa9360203d60201161059b5761058c8183610b95565b95915091611679565b959196939290611aec8387848b858c611639565b15611c845796611b1d611b128488878686611b178e9f8f86868686611b12958c956115b6565b612199565b9d6110d7565b8060020b8860020b1297885f14611c7d5780985b15611c755750965b60020b9260c880850560020b028060020b908103610f245780948112611c63575b50611b658498612495565b96611b716110b36124d2565b95611b8761109b60c861109681620d89e8610f53565b948760020b809760020b12611c5a575b8560020b94858b60020b13611c51575b8a60020b8c60020b1215611bc5575b50505050505050505090919250565b611be2979b50611bdd96999a50611b1295989c6110d7565b612495565b94611bf5611bef87610f89565b96610f38565b948660020b12611c49575b508360020b13611c41575b508160020b8360020b81811215611c2c57808080808080808b9a9998611bb6565b63b0140a7f60e01b5f5260045260245260445ffd5b91505f611c0b565b94505f611c00565b99508599611ba7565b99508699611b97565b611c6e919450610f38565b925f611b5a565b905096611b39565b8198611b31565b50949295939091611c988383888888611379565b15611d2e57611cae95611bdd95611b12956110d7565b90611cc1611cbb83610f89565b92610f38565b91611ccd6110b36124d2565b611ce261109b60c861109681620d89e8610f53565b908060020b8360020b12611d26575b508060020b8460020b13611d1e575b508260020b8160020b1215611d13579190565b9150610e0b82610f38565b92505f611d00565b91505f611cf1565b505050505050611d3f6110b36124d2565b90610e0b61109b60c861109681620d89e8610f53565b604051630862026560e41b815260048101929092526001600160a01b039283166024830152909160209183916044918391165afa9081156105a2575f91611da4575b506001600160a01b031690565b90506020813d602011611dd6575b81611dbf60209383610b95565b8101031261010757611dd09061133d565b5f611d97565b3d9150611db2565b8115610f75570490565b5f19670de0b6b3a7640000820991670de0b6b3a7640000820291828085109403938085039414611e9a5781841015611e7957670de0b6b3a7640000829109600182190182168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b630c740aef60e31b5f52600452670de0b6b3a764000060245260445260645ffd5b5090610e0b9250611dde565b5f19600160601b8209918160601b91828085109403938085039414611e9a5781841015611f29578190600160601b9009600182190182168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b630c740aef60e31b5f52600452600160601b60245260445260645ffd5b5f91905f198282099180820293848085109403938085039414611fa957600160601b841015611f895750600160601b910990828211900360a01b910360601c1790565b630c740aef60e31b8152600492909252602452600160601b604452606490fd5b5050505060601c90565b5f1981600160601b09918160601b91828085109403938085039414611e9a5781841015612035578190600160601b09600182190182168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b630c740aef60e31b5f52600160601b60045260245260445260645ffd5b91905f905f1981850990808502928380841093039280840393146120d2576127108310156120b65750612710907fbc01a36e2eb1c432ca57a786c226809d495182a9930be0ded288ce703afb7e9194950990828211900360fc1b910360041c170290565b60649186630c740aef60e31b8352600452602452612710604452fd5b5050506127109192500490565b8015610f75576ec097ce7bc90715b34b9f10000000000490565b90915f19838309928083029283808610950394808603951461218c57828510156121745790829109600182190182168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b630c740aef60e31b5f5260045260245260445260645ffd5b505090610e0b9250611dde565b73fffd8963efd1fc6a506488495d951d51639616826401000276a21982016001600160a01b03161161245e57602081901b640100000000600160c01b03168080156101075760ff826fffffffffffffffffffffffffffffffff1060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c821060031b177f07060605060205000602030205040001060502050303040105050304000000006f8421084210842108cc6318c6db6d54be85831c1c601f161a17169160808310155f146124525750607e1982011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c6780000000000000001690607f190160401b1717171717171717171717171717693627a301d71055774c85026f028f6481ab7f045a5af012a19d003aa919810160801d60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918282145f146124335750905090565b6001600160a01b0390811690612448846124f6565b1611611159575090565b905081607f031b612278565b6318521d4960e21b5f9081526001600160a01b0391909116600452602490fd5b9060020b9060020b02908160020b918203610f2457565b6124a460c86110968184610f53565b9060020b5f811290816124c5575b506124ba5790565b60c8610e0b91610fa5565b90508160020b135f6124b2565b6124e560c861109681620d89e719610f53565b620d89e7198160020b136124ba5790565b60020b908160ff1d82810118620d89e881116128105763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b1891600281166127f4575b600481166127d8575b600881166127bc575b601081166127a0575b60208116612784575b60408116612768575b6080811661274c575b6101008116612730575b6102008116612714575b61040081166126f8575b61080081166126dc575b61100081166126c0575b61200081166126a4575b6140008116612688575b618000811661266c575b620100008116612650575b620200008116612635575b62040000811661261a575b6208000016612601575b5f126125f9575b0160201c90565b5f19046125f2565b6b048a170391f7dc42444e8fa290910260801c906125eb565b6d2216e584f5fa1ea926041bedfe9890920260801c916125e1565b916e5d6af8dedb81196699c329225ee6040260801c916125d6565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c916125cb565b916f31be135f97d08fd981231505542fcfa60260801c916125c0565b916f70d869a156d2a1b890bb3df62baf32f70260801c916125b6565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916125ac565b916fd097f3bdfd2022b8845ad8f792aa58250260801c916125a2565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91612598565b916ff3392b0822b70005940c7a398e4b70f30260801c9161258e565b916ff987a7253ac413176f2b074cf7815e540260801c91612584565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c9161257a565b916ffe5dee046a99a2a811c461f1969c30530260801c91612570565b916fff2ea16466c96a3843ec78b326b528610260801c91612567565b916fff973b41fa98c081472e6896dfb254c00260801c9161255e565b916fffcb9843d60f6159c9db58835c9266440260801c91612555565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c9161254c565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91612543565b916ffff97272373d413259a46990580e213a0260801c9161253a565b826345c3193d60e11b5f5260045260245ffd5b9091906001600160a01b038084169082161015610e0b579190565b63100000006128fc565b8015610f755780670de0b6b3a7640000040160011c8015610f755780670de0b6b3a7640000040160011c8015610f755780670de0b6b3a7640000040160011c8015610f755780670de0b6b3a7640000040160011c8015610f755780670de0b6b3a7640000040160011c8015610f755780670de0b6b3a7640000040160011c8015610f755780670de0b6b3a7640000040160011c908115610f755781670de0b6b3a764000004808310156128f85750565b9150565b60011b612848565b908115612a3057816001600160801b821015612a1f575b600482600160401b6129cd941015612a12575b640100000000811015612a05575b620100008110156129f8575b6101008110156129ec575b60108110156129e0575b10156129d8575b61296e8185611dde565b0160011c61297c8185611dde565b0160011c61298a8185611dde565b0160011c6129988185611dde565b0160011c6129a68185611dde565b0160011c6129b48185611dde565b0160011c6129c28185611dde565b0160011c8093611dde565b808310156128f85750565b60011b612964565b811c9160021b9161295d565b60081c91811b91612953565b60101c9160081b91612948565b60201c9160101b9161293c565b60401c9160201b9161292e565b5050608082901c600160401b61291b565b5f9150565b9180156112d3576084602092670de0b6b3a764000083105f14612ae55782945b6040519687948593639e0a5d5960e01b855260048501528760248501526044840152606483015260018060a01b03165afa5f9281612ab1575b50612a995750505f90565b670de0b6b3a7640000811461146757610e0b91611de8565b9092506020813d602011612add575b81612acd60209383610b95565b810103126101075751915f612a8e565b3d9150612ac0565b670de0b6b3a764000094612a5556fea164736f6c634300081c000a",
	"metadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHookMath_InvalidTickBounds\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBUniswapV4LPSplitHookMath_NoTerminalTokenFound\"},{\"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\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"IJBDirectory\"},{\"internalType\":\"contract IJBSuckerRegistry\",\"name\":\"suckerRegistry\",\"type\":\"IJBSuckerRegistry\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"projectToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"IJBRulesetApprovalHook\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"calculateTickBounds\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}]},{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"IJBDirectory\"},{\"internalType\":\"contract IJBSuckerRegistry\",\"name\":\"suckerRegistry\",\"type\":\"IJBSuckerRegistry\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"projectToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"IJBRulesetApprovalHook\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"computeInitialSqrtPrice\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}]},{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"IJBDirectory\"},{\"internalType\":\"contract IJBSuckerRegistry\",\"name\":\"suckerRegistry\",\"type\":\"IJBSuckerRegistry\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"projectToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalProjectTokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preHeldTerminalTokens\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceInit\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"IJBRulesetApprovalHook\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"computeOptimalCashOutAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cashOutAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"IJBDirectory\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"findHighestValueTerminalTokenOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"highestToken\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"IJBDirectory\"},{\"internalType\":\"contract IJBSuckerRegistry\",\"name\":\"suckerRegistry\",\"type\":\"IJBSuckerRegistry\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"IJBRulesetApprovalHook\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getCashOutRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"terminalTokensPerProjectToken\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"IJBDirectory\"},{\"internalType\":\"contract IJBSuckerRegistry\",\"name\":\"suckerRegistry\",\"type\":\"IJBSuckerRegistry\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"projectToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"IJBRulesetApprovalHook\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getCashOutRateSqrtPriceX96\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}]},{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"IJBDirectory\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"IJBRulesetApprovalHook\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getIssuanceRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectTokensPerTerminalToken\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"IJBDirectory\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"projectToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"IJBRulesetApprovalHook\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getIssuanceRateSqrtPriceX96\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}]},{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"IJBDirectory\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"terminalTokenInAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"IJBRulesetApprovalHook\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getProjectTokensOutForTerminalTokensIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectTokenOutAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"IJBDirectory\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminalToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"projectToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"IJBRulesetApprovalHook\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getSqrtPriceX96ForCurrentJuiceboxPrice\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"calculateTickBounds(IJBDirectory,IJBSuckerRegistry,uint256,address,address,address,JBRuleset)\":{\"params\":{\"controller\":\"The project's controller address (pre-fetched to avoid redundant lookups).\",\"directory\":\"The JBDirectory used to resolve the project's primary terminal.\",\"projectId\":\"The ID of the project.\",\"projectToken\":\"The project token address.\",\"ruleset\":\"The project's current ruleset (pre-fetched to avoid redundant lookups).\",\"suckerRegistry\":\"The sucker registry for cross-chain surplus/supply queries.\",\"terminalToken\":\"The terminal token address.\"},\"returns\":{\"tickLower\":\"The lower tick bound of the LP position.\",\"tickUpper\":\"The upper tick bound of the LP position.\"}},\"computeInitialSqrtPrice(IJBDirectory,IJBSuckerRegistry,uint256,address,address,address,JBRuleset)\":{\"params\":{\"controller\":\"The project's controller address (pre-fetched to avoid redundant lookups).\",\"directory\":\"The JBDirectory used to resolve the project's primary terminal.\",\"projectId\":\"The ID of the project.\",\"projectToken\":\"The project token address.\",\"ruleset\":\"The project's current ruleset (pre-fetched to avoid redundant lookups).\",\"suckerRegistry\":\"The sucker registry for cross-chain surplus/supply queries.\",\"terminalToken\":\"The terminal token address.\"},\"returns\":{\"sqrtPriceX96\":\"The geometric midpoint between cash-out and issuance prices, as sqrtPriceX96.\"}},\"computeOptimalCashOutAmount(IJBDirectory,IJBSuckerRegistry,uint256,address,address,uint256,uint256,uint160,int24,int24,address,JBRuleset)\":{\"params\":{\"controller\":\"The project's controller address (pre-fetched to avoid redundant lookups).\",\"directory\":\"The JBDirectory used to resolve the project's primary terminal.\",\"preHeldTerminalTokens\":\"Terminal tokens already held (e.g. recovered from a re-range burn) that count toward the position's terminal side, so the cash-out is reduced accordingly. Pass 0 when none are held.\",\"projectId\":\"The ID of the project.\",\"projectToken\":\"The project token address.\",\"ruleset\":\"The project's current ruleset (pre-fetched to avoid redundant lookups).\",\"sqrtPriceInit\":\"The initial sqrt price of the pool.\",\"suckerRegistry\":\"The sucker registry for cross-chain surplus/supply queries.\",\"terminalToken\":\"The terminal token address.\",\"tickLower\":\"The lower tick bound of the LP position.\",\"tickUpper\":\"The upper tick bound of the LP position.\",\"totalProjectTokens\":\"Total project tokens available for the LP position.\"},\"returns\":{\"cashOutAmount\":\"The number of project tokens to cash out for optimal terminal-token pairing.\"}},\"findHighestValueTerminalTokenOf(IJBDirectory,uint256,address)\":{\"details\":\"Converts each token's balance to 18-decimal ETH using price feeds. Falls back to token-decimal-normalized balance comparison when no price feed exists.\",\"params\":{\"controller\":\"The project's controller address.\",\"directory\":\"The JBDirectory used to resolve the project's terminals and primary terminals.\",\"projectId\":\"The ID of the project.\"},\"returns\":{\"highestToken\":\"The token address with the highest ETH-denominated balance.\"}},\"getCashOutRate(IJBDirectory,IJBSuckerRegistry,uint256,address,address,JBRuleset)\":{\"details\":\"Uses total on-chain surplus across all terminals (matching JBTerminalStore._computeCashOutFrom). When `scopeCashOutsToLocalBalances` is false, also includes remote cross-chain surplus and supply from the sucker registry for accurate omnichain pricing.\",\"params\":{\"controller\":\"The project's controller address (pre-fetched to avoid redundant lookups).\",\"directory\":\"The JBDirectory used to resolve the project's primary terminal.\",\"projectId\":\"The ID of the project.\",\"ruleset\":\"The project's current ruleset (pre-fetched to avoid redundant lookups).\",\"suckerRegistry\":\"The sucker registry for cross-chain surplus/supply queries.\",\"terminalToken\":\"The terminal token address.\"},\"returns\":{\"terminalTokensPerProjectToken\":\"Terminal tokens returned per project token burned (18-decimal fixed-point).\"}},\"getCashOutRateSqrtPriceX96(IJBDirectory,IJBSuckerRegistry,uint256,address,address,address,JBRuleset)\":{\"params\":{\"controller\":\"The project's controller address (pre-fetched to avoid redundant lookups).\",\"directory\":\"The JBDirectory used to resolve the project's primary terminal.\",\"projectId\":\"The ID of the project.\",\"projectToken\":\"The project token address.\",\"ruleset\":\"The project's current ruleset (pre-fetched to avoid redundant lookups).\",\"suckerRegistry\":\"The sucker registry for cross-chain surplus/supply queries.\",\"terminalToken\":\"The terminal token address.\"},\"returns\":{\"sqrtPriceX96\":\"The cash-out-derived price encoded as a Uniswap V4 sqrtPriceX96.\"}},\"getIssuanceRate(IJBDirectory,uint256,address,address,JBRuleset)\":{\"params\":{\"controller\":\"The project's controller address (pre-fetched to avoid redundant lookups).\",\"directory\":\"The JBDirectory used to resolve the project's primary terminal.\",\"projectId\":\"The ID of the project.\",\"ruleset\":\"The project's current ruleset (pre-fetched to avoid redundant lookups).\",\"terminalToken\":\"The terminal token address.\"},\"returns\":{\"projectTokensPerTerminalToken\":\"Project tokens minted (after reserves) per terminal token (18-decimal).\"}},\"getIssuanceRateSqrtPriceX96(IJBDirectory,uint256,address,address,address,JBRuleset)\":{\"params\":{\"controller\":\"The project's controller address (pre-fetched to avoid redundant lookups).\",\"directory\":\"The JBDirectory used to resolve the project's primary terminal.\",\"projectId\":\"The ID of the project.\",\"projectToken\":\"The project token address.\",\"ruleset\":\"The project's current ruleset (pre-fetched to avoid redundant lookups).\",\"terminalToken\":\"The terminal token address.\"},\"returns\":{\"sqrtPriceX96\":\"The issuance-derived price encoded as a Uniswap V4 sqrtPriceX96.\"}},\"getProjectTokensOutForTerminalTokensIn(IJBDirectory,uint256,address,uint256,address,JBRuleset)\":{\"params\":{\"controller\":\"The project's controller address (pre-fetched to avoid redundant lookups).\",\"directory\":\"The JBDirectory used to resolve the project's primary terminal.\",\"projectId\":\"The ID of the project.\",\"ruleset\":\"The project's current ruleset (pre-fetched to avoid redundant lookups).\",\"terminalToken\":\"The terminal token address.\",\"terminalTokenInAmount\":\"The amount of terminal tokens to convert.\"},\"returns\":{\"projectTokenOutAmount\":\"The equivalent project token amount at the current issuance weight.\"}},\"getSqrtPriceX96ForCurrentJuiceboxPrice(IJBDirectory,uint256,address,address,address,JBRuleset)\":{\"params\":{\"controller\":\"The project's controller address (pre-fetched to avoid redundant lookups).\",\"directory\":\"The JBDirectory used to resolve the project's primary terminal.\",\"projectId\":\"The ID of the project.\",\"projectToken\":\"The project token address.\",\"ruleset\":\"The project's current ruleset (pre-fetched to avoid redundant lookups).\",\"terminalToken\":\"The terminal token address.\"},\"returns\":{\"sqrtPriceX96\":\"The current Juicebox issuance price encoded as a Uniswap V4 sqrtPriceX96.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"calculateTickBounds(IJBDirectory,IJBSuckerRegistry,uint256,address,address,address,JBRuleset)\":{\"notice\":\"Calculate tick bounds for liquidity position based on issuance and cash out rates.\"},\"computeInitialSqrtPrice(IJBDirectory,IJBSuckerRegistry,uint256,address,address,address,JBRuleset)\":{\"notice\":\"Compute the initial sqrtPriceX96 for pool initialization.\"},\"computeOptimalCashOutAmount(IJBDirectory,IJBSuckerRegistry,uint256,address,address,uint256,uint256,uint160,int24,int24,address,JBRuleset)\":{\"notice\":\"Compute optimal cash-out amount based on LP position geometry.\"},\"findHighestValueTerminalTokenOf(IJBDirectory,uint256,address)\":{\"notice\":\"Find the primary terminal token with the highest ETH-denominated value across the project's terminals.\"},\"getCashOutRate(IJBDirectory,IJBSuckerRegistry,uint256,address,address,JBRuleset)\":{\"notice\":\"Calculate the cash out rate (price floor).\"},\"getCashOutRateSqrtPriceX96(IJBDirectory,IJBSuckerRegistry,uint256,address,address,address,JBRuleset)\":{\"notice\":\"Convert cash out rate to sqrtPriceX96 (price floor).\"},\"getIssuanceRate(IJBDirectory,uint256,address,address,JBRuleset)\":{\"notice\":\"Calculate the issuance rate (price ceiling).\"},\"getIssuanceRateSqrtPriceX96(IJBDirectory,uint256,address,address,address,JBRuleset)\":{\"notice\":\"Convert issuance rate to sqrtPriceX96 (price ceiling).\"},\"getProjectTokensOutForTerminalTokensIn(IJBDirectory,uint256,address,uint256,address,JBRuleset)\":{\"notice\":\"For given terminalToken amount, compute equivalent projectToken amount at current JuiceboxV4 price.\"},\"getSqrtPriceX96ForCurrentJuiceboxPrice(IJBDirectory,uint256,address,address,address,JBRuleset)\":{\"notice\":\"Compute Uniswap SqrtPriceX96 for current JuiceboxV4 price.\"}},\"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/libraries/JBUniswapV4LPSplitHookMath.sol\":\"JBUniswapV4LPSplitHookMath\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"viaIR\":true},\"sources\":{\"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/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/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/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/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/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/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/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/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xf78f05f3b8c9f75570e85300d7b4600d7f6f6a198449273f31d44c1641adb46f\",\"urls\":[\"bzz-raw://e28b872613b45e0e801d4995aa4380be2531147bfe2d85c1d6275f1de514fba3\",\"dweb:/ipfs/QmeeFcfShHYaS3BdgVj78nxR28ZaVUwbvr66ud8bT6kzw9\"],\"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/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"],\"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/TickMath.sol\":{\"keccak256\":\"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8\",\"urls\":[\"bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70\",\"dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva\"],\"license\":\"MIT\"},\"node_modules/@uniswap/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"],\"license\":\"MIT\"}},\"version\":1}",
	"gitCommit": "npm:@bananapus/univ4-lp-split-hook-v6@1.3.0",
	"gitDirty": false,
	"history": []
}
