[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "contract YieldVaultMintRate", "name": "yieldVault_", "type": "address" }, { "internalType": "contract PrizePool", "name": "_prizePool", "type": "address" }, { "internalType": "address", "name": "_claimer", "type": "address" }, { "internalType": "address", "name": "_yieldFeeRecipient", "type": "address" }, { "internalType": "uint32", "name": "_yieldFeePercentage", "type": "uint32" }, { "internalType": "address", "name": "_owner", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "BurnZeroShares", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "claimer", "type": "address" } ], "name": "CallerNotClaimer", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "liquidationPair", "type": "address" } ], "name": "CallerNotLP", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "yieldFeeRecipient", "type": "address" } ], "name": "CallerNotYieldFeeRecipient", "type": "error" }, { "inputs": [], "name": "ClaimRecipientZeroAddress", "type": "error" }, { "inputs": [], "name": "ClaimerZeroAddress", "type": "error" }, { "inputs": [], "name": "DepositZeroAssets", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "asset", "type": "address" } ], "name": "FailedToGetAssetDecimals", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [], "name": "LPZeroAddress", "type": "error" }, { "inputs": [], "name": "LiquidationAmountOutZero", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "totalToWithdraw", "type": "uint256" }, { "internalType": "uint256", "name": "availableYield", "type": "uint256" } ], "name": "LiquidationExceedsAvailable", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "tokenIn", "type": "address" }, { "internalType": "address", "name": "prizeToken", "type": "address" } ], "name": "LiquidationTokenInNotPrizeToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "tokenOut", "type": "address" } ], "name": "LiquidationTokenOutNotSupported", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "totalAssets", "type": "uint256" }, { "internalType": "uint256", "name": "totalSupply", "type": "uint256" } ], "name": "LossyDeposit", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "uint256", "name": "maxShares", "type": "uint256" } ], "name": "MaxSharesExceeded", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "uint256", "name": "minAssets", "type": "uint256" } ], "name": "MinAssetsNotReached", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "excess", "type": "uint256" } ], "name": "MintLimitExceeded", "type": "error" }, { "inputs": [], "name": "MintZeroShares", "type": "error" }, { "inputs": [], "name": "OwnerZeroAddress", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "PermitCallerNotOwner", "type": "error" }, { "inputs": [], "name": "PrizePoolZeroAddress", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "uint256", "name": "yieldFeeBalance", "type": "uint256" } ], "name": "SharesExceedsYieldFeeBalance", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "inputs": [], "name": "TwabControllerZeroAddress", "type": "error" }, { "inputs": [], "name": "WithdrawZeroAssets", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "yieldFeePercentage", "type": "uint256" }, { "internalType": "uint256", "name": "maxYieldFeePercentage", "type": "uint256" } ], "name": "YieldFeePercentageExceedsMax", "type": "error" }, { "inputs": [], "name": "YieldVaultZeroAddress", "type": "error" }, { "inputs": [], "name": "ZeroTotalAssets", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "ClaimYieldFeeShares", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "claimer", "type": "address" } ], "name": "ClaimerSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "tokenOut", "type": "address" }, { "indexed": true, "internalType": "address", "name": "liquidationPair", "type": "address" } ], "name": "LiquidationPairSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipOffered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "components": [ { "internalType": "bool", "name": "useBeforeClaimPrize", "type": "bool" }, { "internalType": "bool", "name": "useAfterClaimPrize", "type": "bool" }, { "internalType": "contract IPrizeHooks", "name": "implementation", "type": "address" } ], "indexed": false, "internalType": "struct PrizeHooks", "name": "hooks", "type": "tuple" } ], "name": "SetHooks", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Sponsor", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "liquidationPair", "type": "address" }, { "indexed": true, "internalType": "address", "name": "tokenOut", "type": "address" }, { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountOut", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "yieldFee", "type": "uint256" } ], "name": "TransferYieldOut", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "yieldFeePercentage", "type": "uint256" } ], "name": "YieldFeePercentageSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "yieldFeeRecipient", "type": "address" } ], "name": "YieldFeeRecipientSet", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEE_PRECISION", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "HOOK_GAS", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_YIELD_FEE", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "asset", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "availableYieldBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "claimOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_winner", "type": "address" }, { "internalType": "uint8", "name": "_tier", "type": "uint8" }, { "internalType": "uint32", "name": "_prizeIndex", "type": "uint32" }, { "internalType": "uint96", "name": "_reward", "type": "uint96" }, { "internalType": "address", "name": "_rewardRecipient", "type": "address" } ], "name": "claimPrize", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" } ], "name": "claimYieldFeeShares", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claimer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" } ], "name": "convertToAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_assets", "type": "uint256" } ], "name": "convertToShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentYieldBuffer", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_assets", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_assets", "type": "uint256" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256", "name": "_deadline", "type": "uint256" }, { "internalType": "uint8", "name": "_v", "type": "uint8" }, { "internalType": "bytes32", "name": "_r", "type": "bytes32" }, { "internalType": "bytes32", "name": "_s", "type": "bytes32" } ], "name": "depositWithPermit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getHooks", "outputs": [ { "components": [ { "internalType": "bool", "name": "useBeforeClaimPrize", "type": "bool" }, { "internalType": "bool", "name": "useAfterClaimPrize", "type": "bool" }, { "internalType": "contract IPrizeHooks", "name": "implementation", "type": "address" } ], "internalType": "struct PrizeHooks", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenOut", "type": "address" }, { "internalType": "address", "name": "_liquidationPair", "type": "address" } ], "name": "isLiquidationPair", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenOut", "type": "address" } ], "name": "liquidatableBalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "liquidationPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "maxMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "maxRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "maxWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_assets", "type": "uint256" } ], "name": "previewDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" } ], "name": "previewMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" } ], "name": "previewRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_assets", "type": "uint256" } ], "name": "previewWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "prizePool", "outputs": [ { "internalType": "contract PrizePool", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256", "name": "_minAssets", "type": "uint256" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_claimer", "type": "address" } ], "name": "setClaimer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bool", "name": "useBeforeClaimPrize", "type": "bool" }, { "internalType": "bool", "name": "useAfterClaimPrize", "type": "bool" }, { "internalType": "contract IPrizeHooks", "name": "implementation", "type": "address" } ], "internalType": "struct PrizeHooks", "name": "hooks", "type": "tuple" } ], "name": "setHooks", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_liquidationPair", "type": "address" } ], "name": "setLiquidationPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_yieldFeePercentage", "type": "uint32" } ], "name": "setYieldFeePercentage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_yieldFeeRecipient", "type": "address" } ], "name": "setYieldFeeRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_assets", "type": "uint256" } ], "name": "sponsor", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "targetOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalDebt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalPreciseAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalYieldBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "address", "name": "_tokenOut", "type": "address" }, { "internalType": "uint256", "name": "_amountOut", "type": "uint256" } ], "name": "transferTokensOut", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "twabController", "outputs": [ { "internalType": "contract TwabController", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenIn", "type": "address" }, { "internalType": "uint256", "name": "_amountIn", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "verifyTokensIn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_assets", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256", "name": "_maxShares", "type": "uint256" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_assets", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "yieldBuffer", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "yieldFeeBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "yieldFeePercentage", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "yieldFeeRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "yieldVault", "outputs": [ { "internalType": "contract IERC4626", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
6102406040523480156200001257600080fd5b50604051620055023803806200550283398101604081905262000035916200079f565b87878787878787620186a0888086868b8b8a6001600160a01b031663b0812d7b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000085573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ab919062000884565b6040805180820190915260018152603160f81b60208201528390819081856003620000d783826200093c565b506004620000e682826200093c565b50620000f8915083905060056200038a565b61012052620001098160066200038a565b61014052815160208084019190912060e052815190820120610100524660a0526200019760e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b038116600003620001cc576040516319b9815760e11b815260040160405180910390fd5b6001600160a01b039081166101605284169150620001ff9050576040516305d872f360e21b815260040160405180910390fd5b6001600160a01b038216610180526200021881620003c3565b506200022690508162000435565b506001600160a01b0387166200024f576040516307877e8560e01b815260040160405180910390fd5b6001600160a01b0381166200027757604051630962257960e11b815260040160405180910390fd5b6000876001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002de919062000884565b9050600080620002ee8362000487565b915091508115620003075760ff81166102005262000330565b60405163f500876960e01b81526001600160a01b03841660048201526024015b60405180910390fd5b6001600160a01b038084166101e0528a166101c0526101a085905262000356876200056c565b6200036186620005b6565b5050506001600160a01b03909e16610220525062000a9a9e505050505050505050505050505050565b6000602083511015620003aa57620003a2836200064f565b9050620003bd565b81620003b784826200093c565b5060ff90505b92915050565b6001600160a01b038116620003eb57604051634d9808e160e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fa04eca05f1c4f5674beaad80f345070124aa2192abced410b9b227c0c04e755a90600090a250565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b03871691620004d09162000a08565b600060405180830381855afa9150503d80600081146200050d576040519150601f19603f3d011682016040523d82523d6000602084013e62000512565b606091505b50915091508180156200052757506020815110155b156200055f5760008180602001905181019062000545919062000a26565b905060ff81116200055d576001969095509350505050565b505b5060009485945092505050565b600d80546001600160a01b0319166001600160a01b0383169081179091556040517f5d55a9f17ebec95846f4d400ad862a51f9564a7973f6622d3c99a34feb6a0aec90600090a250565b6335a4e90063ffffffff82161115620005f557604051637bcc613b60e01b815263ffffffff821660048201526335a4e900602482015260440162000327565b600c805463ffffffff60a01b1916600160a01b63ffffffff8416908102919091179091556040519081527fefb99600b8c2baadc10ee4fe77c625b379acb4c29fbb0b90a5f17652d7de03419060200160405180910390a150565b600080829050601f815111156200067d578260405163305a27a960e01b815260040162000327919062000a40565b80516200068a8262000a75565b179392505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620006c5578181015183820152602001620006ab565b50506000910152565b600082601f830112620006e057600080fd5b81516001600160401b0380821115620006fd57620006fd62000692565b604051601f8301601f19908116603f0116810190828211818310171562000728576200072862000692565b816040528381528660208588010111156200074257600080fd5b62000755846020830160208901620006a8565b9695505050505050565b6001600160a01b03811681146200077557600080fd5b50565b805162000785816200075f565b919050565b805163ffffffff811681146200078557600080fd5b600080600080600080600080610100898b031215620007bd57600080fd5b88516001600160401b0380821115620007d557600080fd5b620007e38c838d01620006ce565b995060208b0151915080821115620007fa57600080fd5b50620008098b828c01620006ce565b97505060408901516200081c816200075f565b60608a01519096506200082f816200075f565b60808a015190955062000842816200075f565b60a08a015190945062000855816200075f565b92506200086560c08a016200078a565b91506200087560e08a0162000778565b90509295985092959890939650565b6000602082840312156200089757600080fd5b8151620008a4816200075f565b9392505050565b600181811c90821680620008c057607f821691505b602082108103620008e157634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000937576000816000526020600020601f850160051c81016020861015620009125750805b601f850160051c820191505b8181101562000933578281556001016200091e565b5050505b505050565b81516001600160401b0381111562000958576200095862000692565b6200097081620009698454620008ab565b84620008e7565b602080601f831160018114620009a857600084156200098f5750858301515b600019600386901b1c1916600185901b17855562000933565b600085815260208120601f198616915b82811015620009d957888601518255948401946001909101908401620009b8565b5085821015620009f85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000825162000a1c818460208701620006a8565b9190910192915050565b60006020828403121562000a3957600080fd5b5051919050565b602081526000825180602084015262000a61816040850160208701620006a8565b601f01601f19169190910160400192915050565b80516020808301519190811015620008e15760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516148b662000c4c6000396000612a0d0152600061054401526000818161058b01528181610a3701528181610d68015281816113400152818161149b0152818161163901528181611700015281816119cd01528181611cdc01528181611d2801528181612253015281816124a901528181612ccd01528181612d0d01528181612d8f0152818161305b015261322d01526000818161078c01528181610abf015281816113d60152818161152301528181612db101528181612def01528181612e81015281816130e40152818161319801526133f801526000818161049d01528181610deb0152612844015260008181610687015281816106c9015281816110a001528181612088015261215c0152600081816107c601528181610cf1015281816117e301528181611e6101528181611f0e01528181612914015281816137fb0152613a4a01526000611b2f01526000611b0401526000612b5401526000612b2c01526000612a8701526000612ab101526000612adb01526148b66000f3fe608060405234801561001057600080fd5b50600436106104125760003560e01c80638da5cb5b11610220578063c78c72c111610130578063de03f408116100b8578063e63a391f11610087578063e63a391f146109e6578063edb8eb80146109f1578063ef8b30f7146107fb578063f2fde38b14610a04578063fc7b9c1814610a1757600080fd5b8063de03f4081461090b578063e16777c1146109ab578063e30c3978146109c2578063e4e243ac146109d357600080fd5b8063d379be23116100ff578063d379be23146108b7578063d4122abf146108ca578063d505accf146108d2578063d905777e146108e5578063dd62ed3e146108f857600080fd5b8063c78c72c11461086b578063c8576e611461087e578063cdfb583214610891578063ce96cb77146108a457600080fd5b8063a9059cbb116101b3578063b460af9411610182578063b460af941461080c578063b6cce5e21461081f578063ba08765214610832578063c63d75b614610845578063c6e6f5921461085857600080fd5b8063a9059cbb146107ae578063b0812d7b146107c1578063b0fcf626146107e8578063b3d7f6b9146107fb57600080fd5b80639f40a7b3116101ef5780639f40a7b31461074e578063a318c1a414610761578063a457c2d714610774578063a7f8a5e21461078757600080fd5b80638da5cb5b1461072c57806394bf804d1461066357806395d89b411461073d5780639a1adf9a1461074557600080fd5b806338d52e0f11610326578063649f2394116102ae578063715018a61161027d578063715018a6146106bc578063719ce73e146106c45780637cc99d3f146106eb5780637ecebe00146106fe57806384b0196e1461071157600080fd5b8063649f2394146106505780636e553f6514610663578063700f04ef1461067657806370a08231146106a957600080fd5b80634244aa9b116102f55780634244aa9b146106075780634cdad5061461060f5780634e71e0c81461062257806350921b231461062a57806363003b161461063d57600080fd5b806338d52e0f1461058957806339509351146105c35780634006522b146105d6578063402d267d146105f457600080fd5b80631b571924116103a957806325fa66e01161037857806325fa66e0146105155780632895cace1461052a578063313ce5671461053d578063353d5a181461056e5780633644e5151461058157600080fd5b80631b571924146104c75780631caa73cb146104da578063237fd108146104fa57806323b872dd1461050257600080fd5b80630a28a477116103e55780630a28a4771461047d5780630d1e52551461049057806313dc6c5d1461049857806318160ddd146104bf57600080fd5b806301e1d1141461041757806306fdde031461043257806307a2d13a14610447578063095ea7b31461045a575b600080fd5b61041f610a1f565b6040519081526020015b60405180910390f35b61043a610ba9565b6040516104299190614037565b61041f61045536600461404a565b610c3b565b61046d610468366004614078565b610c5e565b6040519015158152602001610429565b61041f61048b36600461404a565b610c76565b61041f610cbf565b61041f7f000000000000000000000000000000000000000000000000000000000000000081565b61041f610cd9565b61046d6104d53660046140a4565b610d64565b6104e56335a4e90081565b60405163ffffffff9091168152602001610429565b61041f610dcc565b61046d6105103660046140dd565b610e1d565b61052861052336600461411e565b610e41565b005b61041f610538366004614160565b610ef6565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610429565b61052861057c36600461404a565b6111db565b61041f6112c4565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610429565b61046d6105d1366004614078565b6112ce565b6105e0620249f081565b60405162ffffff9091168152602001610429565b61041f61060236600461411e565b6112f0565b61041f611483565b61041f61061d36600461404a565b611562565b610528611570565b61041f6106383660046141d9565b6115f1565b61052861064b36600461411e565b611775565b600f546105ab906001600160a01b031681565b61041f610671366004614233565b6117ba565b6105ab61068436600461411e565b507f000000000000000000000000000000000000000000000000000000000000000090565b61041f6106b736600461411e565b6117c9565b61052861185b565b6105ab7f000000000000000000000000000000000000000000000000000000000000000081565b61043a6106f9366004614258565b6118a0565b61041f61070c36600461411e565b611ad8565b610719611af6565b60405161042997969594939291906142a9565b600b546001600160a01b03166105ab565b61043a611b7f565b61041f600e5481565b61041f61075c366004614342565b611b8e565b61041f61076f366004614342565b611bdc565b61046d610782366004614078565b611c22565b6105ab7f000000000000000000000000000000000000000000000000000000000000000081565b61046d6107bc366004614078565b611c9d565b6105ab7f000000000000000000000000000000000000000000000000000000000000000081565b61041f6107f636600461411e565b611cab565b61041f61080936600461404a565b90565b61041f61081a36600461436a565b611e24565b61041f61082d36600461404a565b611e3f565b61041f61084036600461436a565b611fb6565b61041f61085336600461411e565b611fd1565b61041f61086636600461404a565b611fdc565b6105286108793660046143ac565b611ff9565b61052861088c3660046143be565b612048565b61052861089f36600461411e565b6121d9565b61041f6108b236600461411e565b61221b565b600a546105ab906001600160a01b031681565b61041f612300565b6105286108e0366004614447565b61230d565b61041f6108f336600461411e565b612471565b61041f6109063660046140a4565b61256e565b61097c61091936600461411e565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260098352839020835191820184525460ff80821615158352610100820416151592820192909252620100009091049092169082015290565b60408051825115158152602080840151151590820152918101516001600160a01b031690820152606001610429565b600c546104e590600160a01b900463ffffffff1681565b600c546001600160a01b03166105ab565b6105286109e13660046144b5565b612599565b6104e5633b9aca0081565b600d546105ab906001600160a01b031681565b610528610a1236600461411e565b6125db565b61041f6126c2565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa91906144d0565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a9082906370a08231906024015b602060405180830381865afa158015610b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3b91906144d0565b6040518263ffffffff1660e01b8152600401610b5991815260200190565b602060405180830381865afa158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a91906144d0565b610ba491906144ff565b905090565b606060038054610bb890614512565b80601f0160208091040260200160405190810160405280929190818152602001828054610be490614512565b8015610c315780601f10610c0657610100808354040283529160200191610c31565b820191906000526020600020905b815481529060010190602001808311610c1457829003601f168201915b5050505050905090565b6000610c5882610c49610a1f565b610c516126c2565b60006126cf565b92915050565b600033610c6c8185856126f2565b5060019392505050565b600080610c81611483565b905080600003610ca45760405163f0bd6f1b60e01b815260040160405180910390fd5b610cb88382610cb16126c2565b6001612817565b9392505050565b6000610ba4610ccc611483565b610cd46126c2565b612833565b6040516339370aa960e21b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e4dc2aa490602401602060405180830381865afa158015610d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba491906144d0565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161480610dae57506001600160a01b03831630145b8015610cb8575050600f546001600160a01b03908116911614919050565b600080610de7610dda611483565b610de26126c2565b61287e565b90507f0000000000000000000000000000000000000000000000000000000000000000808210610e175792915050565b50919050565b600033610e2b858285612898565b610e36858585612912565b506001949350505050565b33610e54600b546001600160a01b031690565b6001600160a01b031614610e835760405162461bcd60e51b8152600401610e7a90614546565b60405180910390fd5b6001600160a01b038116610eaa57604051630ac5b1f760e11b815260040160405180910390fd5b600f80546001600160a01b0319166001600160a01b03831690811790915560405130907fb540015bf51edcbfd9e43df5316486615bf954f7b4c6cc0304eb3757f1601f9590600090a350565b600a546000906001600160a01b03163314610f3557600a54604051637f4b239760e11b8152610e7a9133916001600160a01b039091169060040161457d565b6001600160a01b03861660009081526009602052604081205460609060ff161561101f576001600160a01b038881166000818152600960205260409081902054905163b4db727f60e01b8152600481019290925260ff8a16602483015263ffffffff891660448301526001600160601b038816606483015286831660848301526201000090049091169063b4db727f90620249f09060a40160006040518083038160008887f1158015610fec573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261101591908101906145ad565b9092509050611023565b8791505b6001600160a01b03821661104a5760405163e1c2596f60e01b815260040160405180910390fd5b6040516311e7375f60e21b81526001600160a01b03898116600483015260ff8916602483015263ffffffff8816604483015283811660648301526001600160601b038716608483015285811660a48301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063479cdd7c9060c4016020604051808303816000875af11580156110eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110f91906144d0565b6001600160a01b038a16600090815260096020526040902054909150610100900460ff16156111cf576001600160a01b03808a166000908152600960205260409020546201000090041663d44c6da3620249f08b8b8b6111786001600160601b038d1688614670565b89896040518863ffffffff1660e01b815260040161119b96959493929190614683565b600060405180830381600088803b1580156111b557600080fd5b5087f11580156111c9573d6000803e3d6000fd5b50505050505b98975050505050505050565b600d546001600160a01b0316331461121757600d54604051630e69d0db60e11b8152610e7a9133916001600160a01b039091169060040161457d565b806000036112385760405163b31accb760e01b815260040160405180910390fd5b600e5481111561126957600e546040516304ed794960e21b8152610e7a918391600401918252602082015260400190565b80600e600082825461127b9190614670565b9091555061128b90503382612a01565b60405181815233907f9b51aebdd88b3f321397bdf9848415ce15dedd1783c775b93b8036c6b0af0f56906020015b60405180910390a250565b6000610ba4612a7a565b600033610c6c8185856112e1838361256e565b6112eb91906144ff565b6126f2565b6000806112fb6126c2565b9050600080611308612ba5565b9150915081158061131857508281105b1561132857506000949350505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561138f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b391906144d0565b60405163402d267d60e01b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063402d267d90602401602060405180830381865afa15801561141d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144191906144d0565b9050808210611457575060009695505050505050565b600061146286612c19565b90508282038082106114745780611476565b815b9998505050505050505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e91906144d0565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634cdad5069082906370a0823190602401610afa565b6000610c5882610c49611483565b600c546001600160a01b031633146115ca5760405162461bcd60e51b815260206004820152601f60248201527f4f776e61626c652f63616c6c65722d6e6f742d70656e64696e674f776e6572006044820152606401610e7a565b600c546115df906001600160a01b0316612c2c565b600c80546001600160a01b0319169055565b60006001600160a01b03861633146116205733866040516358fe888560e01b8152600401610e7a92919061457d565b604051636eb1769f60e11b815287906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dd62ed3e90611670908a90309060040161457d565b602060405180830381865afa15801561168d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b191906144d0565b1461175d5760405163d505accf60e01b81526001600160a01b038781166004830152306024830152604482018990526064820187905260ff8616608483015260a4820185905260c482018490527f0000000000000000000000000000000000000000000000000000000000000000169063d505accf9060e401600060405180830381600087803b15801561174457600080fd5b505af1158015611758573d6000803e3d6000fd5b505050505b8661176a87808380612c7e565b979650505050505050565b33611788600b546001600160a01b031690565b6001600160a01b0316146117ae5760405162461bcd60e51b8152600401610e7a90614546565b6117b781612fc2565b50565b600082610cb833848380612c7e565b604051633de222bb60e21b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f7888aec9061181a903090869060040161457d565b602060405180830381865afa158015611837573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5891906144d0565b3361186e600b546001600160a01b031690565b6001600160a01b0316146118945760405162461bcd60e51b8152600401610e7a90614546565b61189e6000612c2c565b565b600f546060906001600160a01b031633146118df57600f546040516317140eff60e11b8152610e7a9133916001600160a01b039091169060040161457d565b8160000361190057604051634750846560e11b815260040160405180910390fd5b600061190a6126c2565b9050600061191f611919611483565b83612833565b600c54909150600160a01b900463ffffffff1660008115611974578561194983633b9aca006146cb565b63ffffffff1661195d633b9aca00896146ef565b611967919061471c565b6119719190614670565b90505b8261197f82886144ff565b11156119b35761198f81876144ff565b6040516374281bbb60e11b8152600481019190915260248101849052604401610e7a565b80156119cb5780600e546119c791906144ff565b600e555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031603611a1d57611a0e848261300c565b611a188887613043565b611a6e565b306001600160a01b03881603611a4a57611a4084611a3b83896144ff565b61300c565b611a188887612a01565b6040516304bc290f60e51b81526001600160a01b0388166004820152602401610e7a565b60408051878152602081018390526001600160a01b03808b1692908a169133917f64d8a6bd56c2c610cd5d2ed87ba4bde3659df2650c7ad8aabde397decf94e07d910160405180910390a4604051806020016040528060008152509450505050505b949350505050565b6001600160a01b038116600090815260076020526040812054610c58565b600060608082808083611b2a7f00000000000000000000000000000000000000000000000000000000000000006005613254565b611b557f00000000000000000000000000000000000000000000000000000000000000006006613254565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b606060048054610bb890614512565b600080611b9a86611562565b905082811015611bc657604051629af28160e41b81526004810182905260248101849052604401610e7a565b611bd333868689856132ff565b95945050505050565b600080611be886610c76565b905082811115611c155760405163654df34d60e01b81526004810182905260248101849052604401610e7a565b611bd3338686848a6132ff565b60003381611c30828661256e565b905083811015611c905760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610e7a565b610e3682868684036126f2565b600033610c6c818585612912565b600080611cb66126c2565b90506000306001600160a01b03851603611cda57611cd382612c19565b9050611db7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603611dad576040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9b91906144d0565b611da36133e0565b611cd391906144ff565b5060009392505050565b6000611dca611dc4611483565b84612833565b9050600082821015611ddc5781611dde565b825b600c54909150611e1a90611e0390600160a01b900463ffffffff16633b9aca006146cb565b829063ffffffff90811690633b9aca00906134d916565b9695505050505050565b600080611e3085610c76565b9050611ad033858584896132ff565b60003382611e4f82808380612c7e565b6040516316bef07560e31b81526001907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b5f783a890611ea0903090879060040161457d565b602060405180830381865afa158015611ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee1919061473e565b6001600160a01b031614611f6b5760405163766c4f3760e01b81526001600160a01b0383811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063766c4f3790602401600060405180830381600087803b158015611f5257600080fd5b505af1158015611f66573d6000803e3d6000fd5b505050505b60408051858152602081018390526001600160a01b038416917f64939930c3fd0a1fe9e7fb9810272db7730a0f02b900972787bcb79fb6fd3d2d910160405180910390a29392505050565b600080611fc285611562565b9050611ad033858588856132ff565b6000610c58826112f0565b6000610c5882611fea610a1f565b611ff26126c2565b6000612817565b33600090815260096020526040902081906120148282614769565b505060405133907f5eaf51436f308830fc57b00bb6843675b383bce9b2c669e1b9ce60de8bbb9e8e906112b99084906147e3565b600f546001600160a01b0316331461208457600f546040516317140eff60e11b8152610e7a9133916001600160a01b039091169060040161457d565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0ef024a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612108919061473e565b9050806001600160a01b0316856001600160a01b031614612140578481604051630c0760c160e21b8152600401610e7a92919061457d565b604051630eedfb4560e41b8152306004820152602481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063eedfb450906044016020604051808303816000875af11580156121ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d191906144d0565b505050505050565b336121ec600b546001600160a01b031690565b6001600160a01b0316146122125760405162461bcd60e51b8152600401610e7a90614546565b6117b7816135c3565b6000806000612228612ba5565b915091508161223b575060009392505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156122a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c691906144d0565b6122ce6133e0565b6122d891906144ff565b905060006122f16122e8876117c9565b84610c516126c2565b9050818110611bd35781611e1a565b6000610ba4610dda611483565b8342111561235d5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610e7a565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861238c8c613634565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006123e78261365a565b905060006123f782878787613687565b9050896001600160a01b0316816001600160a01b03161461245a5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610e7a565b6124658a8a8a6126f2565b50505050505050505050565b600080600061247e612ba5565b9150915081612491575060009392505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156124f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251c91906144d0565b6125246133e0565b61252e91906144ff565b9050600061253b866117c9565b905081811115611bd35760006125548385610cb16126c2565b905081811015612564578061176a565b5095945050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b336125ac600b546001600160a01b031690565b6001600160a01b0316146125d25760405162461bcd60e51b8152600401610e7a90614546565b6117b7816136a5565b336125ee600b546001600160a01b031690565b6001600160a01b0316146126145760405162461bcd60e51b8152600401610e7a90614546565b6001600160a01b0381166126785760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c652f70656e64696e674f776e65722d6e6f742d7a65726f2d6164604482015264647265737360d81b6064820152608401610e7a565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517f239a2ddded15777fa246aed5f7e1a9bc69a39d4eb4a397034d1d85766cca7d4c90600090a250565b6000600e54610b9a610cd9565b60008284106126df575083611ad0565b6126eb8585858561373c565b9050611ad0565b6001600160a01b0383166127545760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610e7a565b6001600160a01b0382166127b55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e7a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000828410612827575083611ad0565b6126eb8584868561373c565b600080612840848461287e565b90507f00000000000000000000000000000000000000000000000000000000000000008082106128735790039050610c58565b600092505050610c58565b600082821061288f57506000610c58565b50808203610c58565b60006128a4848461256e565b9050600019811461290c57818110156128ff5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610e7a565b61290c84848484036126f2565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c661667d848461294c8561378d565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526001600160601b03166044820152606401600060405180830381600087803b1580156129a457600080fd5b505af11580156129b8573d6000803e3d6000fd5b50505050816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161280a91815260200190565b612a0b82826137f9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ca0dcf166040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612a6657600080fd5b505af11580156121d1573d6000803e3d6000fd5b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612ad357507f000000000000000000000000000000000000000000000000000000000000000046145b15612afd57507f000000000000000000000000000000000000000000000000000000000000000090565b610ba4604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600080306001600160a01b0316634244aa9b6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612c02575060408051601f3d908101601f19168201909252612bff918101906144d0565b60015b612c0f5750600090508091565b6001925090509091565b6000610c58826001600160601b03614670565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80600003612c9f5760405163b31accb760e01b815260040160405180910390fd5b81600003612cc05760405163f0f4d07b60e01b815260040160405180910390fd5b612cf56001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168530856138df565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d8091906144d0565b9050612dd66001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008361394a565b60405163ef8b30f760e01b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ef8b30f790602401602060405180830381865afa158015612e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6291906144d0565b6040516394bf804d60e01b8152600481018290523060248201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906394bf804d906044016020604051808303816000875af1158015612ed2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef691906144d0565b506000612f016126c2565b9050612f0d818561300c565b612f1784826144ff565b612f1f611483565b1015612f5957612f2d611483565b612f3785836144ff565b6040516315c5982d60e11b815260048101929092526024820152604401610e7a565b612f638685612a01565b856001600160a01b0316876001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78787604051612fb1929190918252602082015260400190565b60405180910390a350505050505050565b600d80546001600160a01b0319166001600160a01b0383169081179091556040517f5d55a9f17ebec95846f4d400ad862a51f9564a7973f6622d3c99a34feb6a0aec90600090a250565b600061301783612c19565b90508082111561303e57604051637e0311c360e11b81528183036004820152602401610e7a565b505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156130aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ce91906144d0565b9050808211156132105760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630a28a4776131138486614670565b6040518263ffffffff1660e01b815260040161313191815260200190565b602060405180830381865afa15801561314e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317291906144d0565b604051635d043b2960e11b815260048101829052306024820181905260448201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ba087652906064016020604051808303816000875af11580156131e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061320d91906144d0565b50505b6001600160a01b038316301461303e5761303e6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684846139d9565b606060ff831461326e5761326783613a09565b9050610c58565b81805461327a90614512565b80601f01602080910402602001604051908101604052809291908181526020018280546132a690614512565b80156132f35780601f106132c8576101008083540402835291602001916132f3565b820191906000526020600020905b8154815290600101906020018083116132d657829003601f168201915b50505050509050610c58565b806000036133205760405163f3c41a2b60e01b815260040160405180910390fd5b8160000361334157604051632f73c6c360e11b815260040160405180910390fd5b826001600160a01b0316856001600160a01b03161461336557613365838684612898565b61336f8383613a48565b6133798482613043565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db84866040516133d1929190918252602082015260400190565b60405180910390a45050505050565b604051636c82bbbf60e11b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634cdad50690829063d905777e90602401602060405180830381865afa15801561344f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061347391906144d0565b6040518263ffffffff1660e01b815260040161349191815260200190565b602060405180830381865afa9250505080156134ca575060408051601f3d908101601f191682019092526134c7918101906144d0565b60015b6134d45750600090565b919050565b60008080600019858709858702925082811083820303915050806000036135135783828161350957613509614706565b0492505050610cb8565b80841161355a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610e7a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b0381166135ea57604051634d9808e160e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fa04eca05f1c4f5674beaad80f345070124aa2192abced410b9b227c0c04e755a90600090a250565b6001600160a01b0381166000908152600760205260409020805460018101825590610e17565b6000610c58613667612a7a565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600061369887878787613b26565b9150915061256481613bea565b6335a4e90063ffffffff821611156136e257604051637bcc613b60e01b815263ffffffff821660048201526335a4e9006024820152604401610e7a565b600c805463ffffffff60a01b1916600160a01b63ffffffff8416908102919091179091556040519081527fefb99600b8c2baadc10ee4fe77c625b379acb4c29fbb0b90a5f17652d7de03419060200160405180910390a150565b60008061374a8686866134d9565b9050600183600281111561376057613760614831565b14801561377d57506000848061377857613778614706565b868809115b15611bd357611e1a6001826144ff565b60006001600160601b038211156137f55760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b6064820152608401610e7a565b5090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631b025a40836138328461378d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160601b03166024820152604401600060405180830381600087803b15801561388157600080fd5b505af1158015613895573d6000803e3d6000fd5b50506040518381526001600160a01b0385169250600091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6040516001600160a01b038085166024830152831660448201526064810182905261290c9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613d34565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261399b8482613e09565b61290c576040516001600160a01b0384166024820152600060448201526139cf90859063095ea7b360e01b90606401613913565b61290c8482613d34565b6040516001600160a01b03831660248201526044810182905261303e90849063a9059cbb60e01b90606401613913565b60606000613a1683613eac565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638df2c8e683613a818461378d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160601b03166024820152604401600060405180830381600087803b158015613ad057600080fd5b505af1158015613ae4573d6000803e3d6000fd5b5050604051838152600092506001600160a01b03851691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016138d3565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613b5d5750600090506003613be1565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613bb1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613bda57600060019250925050613be1565b9150600090505b94509492505050565b6000816004811115613bfe57613bfe614831565b03613c065750565b6001816004811115613c1a57613c1a614831565b03613c675760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610e7a565b6002816004811115613c7b57613c7b614831565b03613cc85760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610e7a565b6003816004811115613cdc57613cdc614831565b036117b75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610e7a565b6000613d89826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613ed49092919063ffffffff16565b9050805160001480613daa575080806020019051810190613daa9190614847565b61303e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610e7a565b6000806000846001600160a01b031684604051613e269190614864565b6000604051808303816000865af19150503d8060008114613e63576040519150601f19603f3d011682016040523d82523d6000602084013e613e68565b606091505b5091509150818015613e92575080511580613e92575080806020019051810190613e929190614847565b8015611bd35750505050506001600160a01b03163b151590565b600060ff8216601f811115610c5857604051632cd44ac360e21b815260040160405180910390fd5b6060611ad0848460008585600080866001600160a01b03168587604051613efb9190614864565b60006040518083038185875af1925050503d8060008114613f38576040519150601f19603f3d011682016040523d82523d6000602084013e613f3d565b606091505b509150915061176a8783838760608315613fb8578251600003613fb1576001600160a01b0385163b613fb15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e7a565b5081611ad0565b611ad08383815115613fcd5781518083602001fd5b8060405162461bcd60e51b8152600401610e7a9190614037565b60005b83811015614002578181015183820152602001613fea565b50506000910152565b60008151808452614023816020860160208601613fe7565b601f01601f19169290920160200192915050565b602081526000610cb8602083018461400b565b60006020828403121561405c57600080fd5b5035919050565b6001600160a01b03811681146117b757600080fd5b6000806040838503121561408b57600080fd5b823561409681614063565b946020939093013593505050565b600080604083850312156140b757600080fd5b82356140c281614063565b915060208301356140d281614063565b809150509250929050565b6000806000606084860312156140f257600080fd5b83356140fd81614063565b9250602084013561410d81614063565b929592945050506040919091013590565b60006020828403121561413057600080fd5b8135610cb881614063565b803560ff811681146134d457600080fd5b803563ffffffff811681146134d457600080fd5b600080600080600060a0868803121561417857600080fd5b853561418381614063565b94506141916020870161413b565b935061419f6040870161414c565b925060608601356001600160601b03811681146141bb57600080fd5b915060808601356141cb81614063565b809150509295509295909350565b60008060008060008060c087890312156141f257600080fd5b86359550602087013561420481614063565b9450604087013593506142196060880161413b565b92506080870135915060a087013590509295509295509295565b6000806040838503121561424657600080fd5b8235915060208301356140d281614063565b6000806000806080858703121561426e57600080fd5b843561427981614063565b9350602085013561428981614063565b9250604085013561429981614063565b9396929550929360600135925050565b60ff60f81b881681526000602060e060208401526142ca60e084018a61400b565b83810360408501526142dc818a61400b565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b8181101561433057835183529284019291840191600101614314565b50909c9b505050505050505050505050565b6000806000806080858703121561435857600080fd5b84359350602085013561428981614063565b60008060006060848603121561437f57600080fd5b83359250602084013561439181614063565b915060408401356143a181614063565b809150509250925092565b600060608284031215610e1757600080fd5b600080600080606085870312156143d457600080fd5b84356143df81614063565b935060208501359250604085013567ffffffffffffffff8082111561440357600080fd5b818701915087601f83011261441757600080fd5b81358181111561442657600080fd5b88602082850101111561443857600080fd5b95989497505060200194505050565b600080600080600080600060e0888a03121561446257600080fd5b873561446d81614063565b9650602088013561447d81614063565b955060408801359450606088013593506144996080890161413b565b925060a0880135915060c0880135905092959891949750929550565b6000602082840312156144c757600080fd5b610cb88261414c565b6000602082840312156144e257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c5857610c586144e9565b600181811c9082168061452657607f821691505b602082108103610e1757634e487b7160e01b600052602260045260246000fd5b60208082526018908201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e65720000000000000000604082015260600190565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156145c057600080fd5b82516145cb81614063565b602084015190925067ffffffffffffffff808211156145e957600080fd5b818501915085601f8301126145fd57600080fd5b81518181111561460f5761460f614597565b604051601f8201601f19908116603f0116810190838211818310171561463757614637614597565b8160405282815288602084870101111561465057600080fd5b614661836020830160208801613fe7565b80955050505050509250929050565b81810381811115610c5857610c586144e9565b6001600160a01b03878116825260ff8716602083015263ffffffff86166040830152606082018590528316608082015260c060a082018190526000906111cf9083018461400b565b63ffffffff8281168282160390808211156146e8576146e86144e9565b5092915050565b8082028115828204841417610c5857610c586144e9565b634e487b7160e01b600052601260045260246000fd5b60008261473957634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561475057600080fd5b8151610cb881614063565b80151581146117b757600080fd5b81356147748161475b565b815460ff19811691151560ff16918217835560208401356147948161475b565b61ff0090151560081b1661ffff19821683178117845560408501356147b881614063565b6001600160b01b0319929092169092179190911760109190911b62010000600160b01b031617905550565b6060810182356147f28161475b565b1515825260208301356148048161475b565b15156020830152604083013561481981614063565b6001600160a01b031660409290920191909152919050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561485957600080fd5b8151610cb88161475b565b60008251614876818460208701613fe7565b919091019291505056fea2646970667358221220b80960e15ad0c788ab1c4e4d906ab79701eb415981bdbafffefba7d05d6cb10564736f6c6343000818003300000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000af9ad81ab225fe2d24dd2067a38a4ce69ec07784000000000000000000000000122feca66c2b1ba8fa9c39e88152592a5496bc99000000000000000000000000ac2be4d9c0d8841c1f0af43a564bdf2ef3df3954000000000000000000000000c516fe1fee5122d66e9427721a63d6c27e1201ca0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c516fe1fee5122d66e9427721a63d6c27e1201ca000000000000000000000000000000000000000000000000000000000000000a5072697a6520574554480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057057455448000000000000000000000000000000000000000000000000000000