[ { "inputs": [ { "internalType": "contract IStETH", "name": "stETH", "type": "address" }, { "internalType": "contract IWETH", "name": "weth", "type": "address" }, { "internalType": "contract ILidoWithdrawalQueue", "name": "lidoWithdrawalQueue", "type": "address" }, { "internalType": "contract IStrategy", "name": "stETHStrategy", "type": "address" }, { "internalType": "contract IEigenLayer", "name": "eigenStrategyManager", "type": "address" }, { "internalType": "contract IPufferOracle", "name": "oracle", "type": "address" }, { "internalType": "contract IDelegationManager", "name": "delegationManager", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "authority", "type": "address" } ], "name": "AccessManagedInvalidAuthority", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "uint32", "name": "delay", "type": "uint32" } ], "name": "AccessManagedRequiredDelay", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" } ], "name": "AccessManagedUnauthorized", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [], "name": "DepositAndWithdrawalForbidden", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" } ], "name": "ERC1967InvalidImplementation", "type": "error" }, { "inputs": [], "name": "ERC1967NonPayable", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "uint256", "name": "max", "type": "uint256" } ], "name": "ERC4626ExceededMaxDeposit", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "uint256", "name": "max", "type": "uint256" } ], "name": "ERC4626ExceededMaxMint", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "uint256", "name": "max", "type": "uint256" } ], "name": "ERC4626ExceededMaxRedeem", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "uint256", "name": "max", "type": "uint256" } ], "name": "ERC4626ExceededMaxWithdraw", "type": "error" }, { "inputs": [], "name": "ETHTransferFailed", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "key", "type": "bytes32" } ], "name": "EnumerableMapNonexistentKey", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidExitFeeBasisPoints", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "InvalidWithdrawal", "type": "error" }, { "inputs": [], "name": "MathOverflowedMulDiv", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "inputs": [], "name": "UUPSUnauthorizedCallContext", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "slot", "type": "bytes32" } ], "name": "UUPSUnsupportedProxiableUUID", "type": "error" }, { "inputs": [], "name": "WithdrawalsAreDisabled", "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": false, "internalType": "uint256", "name": "withdrawalAmount", "type": "uint256" } ], "name": "AssetsWithdrawnToday", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "authority", "type": "address" } ], "name": "AuthorityUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "requestIds", "type": "uint256[]" } ], "name": "ClaimedWithdrawals", "type": "event" }, { "anonymous": false, "inputs": [], "name": "DailyWithdrawalLimitReset", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint96", "name": "oldLimit", "type": "uint96" }, { "indexed": false, "internalType": "uint96", "name": "newLimit", "type": "uint96" } ], "name": "DailyWithdrawalLimitSet", "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": false, "internalType": "uint256", "name": "previousFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newFee", "type": "uint256" } ], "name": "ExitFeeBasisPointsSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "expectedWithdrawal", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "actualWithdrawal", "type": "uint256" } ], "name": "LidoWithdrawal", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "requestIds", "type": "uint256[]" } ], "name": "RequestedWithdrawals", "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": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TransferredETH", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "previousTotalRewardsAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newTotalRewardsAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "depositedETHAmount", "type": "uint256" } ], "name": "UpdatedTotalRewardsAmount", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "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" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PUFFER_ORACLE", "outputs": [ { "internalType": "contract IPufferOracle", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPGRADE_INTERFACE_VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "value", "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": "authority", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "contract IStrategy[]", "name": "strategies", "type": "address[]" }, { "internalType": "uint256[]", "name": "shares", "type": "uint256[]" }, { "internalType": "address", "name": "depositor", "type": "address" }, { "components": [ { "internalType": "address", "name": "withdrawer", "type": "address" }, { "internalType": "uint96", "name": "nonce", "type": "uint96" } ], "internalType": "struct IEigenLayer.WithdrawerAndNonce", "name": "withdrawerAndNonce", "type": "tuple" }, { "internalType": "uint32", "name": "withdrawalStartBlock", "type": "uint32" }, { "internalType": "address", "name": "delegatedAddress", "type": "address" } ], "internalType": "struct IEigenLayer.QueuedWithdrawal", "name": "queuedWithdrawal", "type": "tuple" }, { "internalType": "contract IERC20[]", "name": "tokens", "type": "address[]" }, { "internalType": "uint256", "name": "middlewareTimesIndex", "type": "uint256" } ], "name": "claimWithdrawalFromEigenLayer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "contract IStrategy[]", "name": "strategies", "type": "address[]" }, { "internalType": "uint256[]", "name": "shares", "type": "uint256[]" }, { "internalType": "address", "name": "depositor", "type": "address" }, { "components": [ { "internalType": "address", "name": "withdrawer", "type": "address" }, { "internalType": "uint96", "name": "nonce", "type": "uint96" } ], "internalType": "struct IEigenLayer.WithdrawerAndNonce", "name": "withdrawerAndNonce", "type": "tuple" }, { "internalType": "uint32", "name": "withdrawalStartBlock", "type": "uint32" }, { "internalType": "address", "name": "delegatedAddress", "type": "address" } ], "internalType": "struct IEigenLayer.QueuedWithdrawal", "name": "queuedWithdrawal", "type": "tuple" }, { "internalType": "contract IERC20[]", "name": "tokens", "type": "address[]" }, { "internalType": "uint256", "name": "middlewareTimesIndex", "type": "uint256" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" } ], "name": "claimWithdrawalFromEigenLayerM2", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "requestIds", "type": "uint256[]" } ], "name": "claimWithdrawalsFromLido", "outputs": [], "stateMutability": "nonpayable", "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": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "convertToSharesUp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "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": "address", "name": "receiver", "type": "address" } ], "name": "depositETH", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "depositRewards", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "stETHSharesAmount", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "depositStETH", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "depositToEigenLayer", "outputs": [], "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": [], "name": "getELBackingEthAmount", "outputs": [ { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getExitFeeBasisPoints", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPendingLidoETHAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRemainingAssetsDailyWithdrawalLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTotalRewardDepositAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTotalRewardMintAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "accessManager", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "initiateETHWithdrawalsFromLido", "outputs": [ { "internalType": "uint256[]", "name": "requestIds", "type": "uint256[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "sharesToWithdraw", "type": "uint256" } ], "name": "initiateStETHWithdrawalFromEigenLayer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isConsumingScheduledOp", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "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": "", "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": "maxShares", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxWithdraw", "outputs": [ { "internalType": "uint256", "name": "maxAssets", "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": [ { "internalType": "uint256", "name": "rewardsAmount", "type": "uint256" } ], "name": "mintRewards", "outputs": [ { "internalType": "uint256", "name": "ethToPufETHRate", "type": "uint256" }, { "internalType": "uint256", "name": "pufETHAmount", "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": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC721Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "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": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "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": [ { "internalType": "uint256", "name": "pufETHAmount", "type": "uint256" }, { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "revertMintRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newAuthority", "type": "address" } ], "name": "setAuthority", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint96", "name": "newLimit", "type": "uint96" } ], "name": "setDailyWithdrawalLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newExitFeeBasisPoints", "type": "uint256" } ], "name": "setExitFeeBasisPoints", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "transferETH", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "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" }, { "stateMutability": "payable", "type": "receive" } ]
61018060405230608052348015610014575f5ffd5b5060405161590e38038061590e8339810160408190526100339161042d565b6001600160a01b0380881660e0528086166101005280851660a052831660c052868686868686868685858561006661010a565b505050506001600160a01b0386811661012081905283821661014052908216610160527f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e0080546001600160a01b03191690911781556100cd68056bc75e2d631000006101bc565b6100d65f610254565b6100e06064610328565b6100e861010a565b50505050505050506100fe61010a60201b60201c565b50505050505050610514565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161561015a5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101b95780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b7f611ea165ca9257827fc43d2954fdae7d825e82c825d9037db9337fa1bfa9310a54604080516001600160601b039283168152918316602083015280515f5160206158ee5f395f51905f52927f8d5f7487ce1fd25059bd15204a55ea2c293160362b849a6f9244aec7d5a3700b92908290030190a1600a0180546001600160601b0319166001600160601b0392909216919091179055565b5f5160206158ee5f395f51905f5261026f62015180426104c4565b600a820154600160c01b90046001600160401b031610156102925761029261039c565b8181600a01600c8282829054906101000a90046001600160601b03166102b891906104e3565b82546101009290920a6001600160601b03818102199093169183160217909155600a8301546040516c0100000000000000000000000090910490911681527f139f9ee0762f3b0c92a4b8c7b8fe8be6b12aaece4b9b22de6bf1ba1094dcd998915060200160405180910390a15050565b5f5160206158ee5f395f51905f5260c882111561035857604051634af6f05f60e11b815260040160405180910390fd5b600b81015460408051918252602082018490527fb10a745484e9798f0014ea028d76169706f92e7eea5d5bb66001c1400769785d910160405180910390a1600b0155565b5f5160206158ee5f395f51905f526103b762015180426104c4565b600a820180546001600160601b0316600160c01b6001600160401b039390931692909202600160601b600160c01b0319169190911790556040517f190567136e3dd93d29bef98a7c7c87cff34ee88e71d634b52f5fb3b531085f40905f90a150565b6001600160a01b03811681146101b9575f5ffd5b5f5f5f5f5f5f5f60e0888a031215610443575f5ffd5b875161044e81610419565b602089015190975061045f81610419565b604089015190965061047081610419565b606089015190955061048181610419565b608089015190945061049281610419565b60a08901519093506104a381610419565b60c08901519092506104b481610419565b8091505092959891949750929550565b5f826104de57634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160601b03818116838216019081111561050e57634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c05160e0516101005161012051610140516101605161530b6105e35f395f8181610ec201528181610fb901526111c601525f81816103cf01526126d501525f81816118b701528181611aa001528181612772015281816131cd015261325201525f8181611478015281816114b4015261167a01525f8181611457015281816120840152818161254101528181612602015261280f01525f50505f81816110dc015281816123ef015261245d01525f8181612bc201528181612beb0152612d2d015261530b5ff3fe608060405260043610610394575f3560e01c80637a9e5e4b116101de578063b460af9411610108578063d905777e1161009d578063ef8b30f71161006d578063ef8b30f7146109e7578063f6dbd16f14610ab5578063f7fe1bd114610ad4578063fdcffbac14610af4575f5ffd5b8063d905777e14610a44578063dd62ed3e14610a63578063e7fc6f7314610a82578063ed344a2214610aa1575f5ffd5b8063c63d75b6116100d8578063c63d75b6146105f0578063c6e6f592146109e7578063ce96cb7714610a06578063d505accf14610a25575f5ffd5b8063b460af9414610976578063ba08765214610995578063bf7e214f146109b4578063c4d66de8146109c8575f5ffd5b806394bf804d1161017e578063a9059cbb1161014e578063a9059cbb146108f4578063ad3cb1cc14610913578063af24278c14610943578063b3d7f6b914610957575f5ffd5b806394bf804d1461086f57806395d89b411461088e5780639d0d951e146108a25780639e9406dc146108d5575f5ffd5b80638129fc1c116101b95780638129fc1c146107ed57806384b0196e146108015780638fb36037146108285780638fd356ff1461083c575f5ffd5b80637a9e5e4b146107905780637b1a4909146107af5780637ecebe00146107ce575f5ffd5b806338d52e0f116102bf57806352d1902d1161025f578063677a11e91161022f578063677a11e914610714578063699beb59146107335780636e553f651461075257806370a0823114610771575f5ffd5b806352d1902d146106955780635612ba22146106a9578063593961de146106c95780635b63b05c146106f5575f5ffd5b806342966c681161029a57806342966c68146106105780634828ced91461062f5780634cdad506146106635780634f1ef28614610682575f5ffd5b806338d52e0f146105bd578063402064a7146105d1578063402d267d146105f0575f5ffd5b8063150b7a02116103355780632d2da806116103055780632d2da8061461055c578063313ce5671461056f57806334201a641461058a5780633644e515146105a9575f5ffd5b8063150b7a02146104be578063152111f71461050257806318160ddd1461050a57806323b872dd1461053d575f5ffd5b806306fdde031161037057806306fdde031461043057806307a2d13a14610451578063095ea7b3146104705780630a28a4771461049f575f5ffd5b80628e05901461039f5780630195c505146103be57806301e1d1141461040e575f5ffd5b3661039b57005b5f5ffd5b3480156103aa575f5ffd5b506103bc6103b936600461441e565b50565b005b3480156103c9575f5ffd5b506103f17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610419575f5ffd5b50610422610b14565b604051908152602001610405565b34801561043b575f5ffd5b50610444610b6d565b6040516104059190614463565b34801561045c575f5ffd5b5061042261046b36600461441e565b610c12565b34801561047b575f5ffd5b5061048f61048a366004614489565b610c23565b6040519015158152602001610405565b3480156104aa575f5ffd5b506104226104b936600461441e565b610c3a565b3480156104c9575f5ffd5b506104e96104d83660046144b3565b630a85bd0160e11b95945050505050565b6040516001600160e01b03199091168152602001610405565b6103bc610c83565b348015610515575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610422565b348015610548575f5ffd5b5061048f61055736600461454a565b610d1a565b61042261056a366004614588565b610d3d565b34801561057a575f5ffd5b5060405160128152602001610405565b348015610595575f5ffd5b506103bc6105a4366004614600565b610dcd565b3480156105b4575f5ffd5b5061042261102f565b3480156105c8575f5ffd5b506103f1611038565b3480156105dc575f5ffd5b506103bc6105eb36600461441e565b611059565b3480156105fb575f5ffd5b5061042261060a366004614588565b505f1990565b34801561061b575f5ffd5b506103bc61062a36600461441e565b61128c565b34801561063a575f5ffd5b5061064e61064936600461441e565b61129f565b60408051928352602083019190915201610405565b34801561066e575f5ffd5b5061042261067d36600461441e565b611359565b6103bc6106903660046146bc565b6113a1565b3480156106a0575f5ffd5b506104226113c0565b3480156106b4575f5ffd5b505f5160206151d65f395f51905f5254610422565b3480156106d4575f5ffd5b506106e86106e3366004614761565b6113db565b60405161040591906147d9565b348015610700575f5ffd5b506103bc61070f36600461441e565b6115ce565b34801561071f575f5ffd5b506103bc61072e366004614761565b6115e0565b34801561073e575f5ffd5b5061042261074d36600461441e565b6117b8565b34801561075d575f5ffd5b5061042261076c3660046147eb565b6117c4565b34801561077c575f5ffd5b5061042261078b366004614588565b6117e9565b34801561079b575f5ffd5b506103bc6107aa366004614588565b611819565b3480156107ba575f5ffd5b506103bc6107c9366004614489565b61189b565b3480156107d9575f5ffd5b506104226107e8366004614588565b6119eb565b3480156107f8575f5ffd5b506103bc6119f5565b34801561080c575f5ffd5b50610815611c5b565b6040516104059796959493929190614819565b348015610833575f5ffd5b506104e9611d04565b348015610847575f5ffd5b507f611ea165ca9257827fc43d2954fdae7d825e82c825d9037db9337fa1bfa9310b54610422565b34801561087a575f5ffd5b506104226108893660046147eb565b611d3a565b348015610899575f5ffd5b50610444611d5f565b3480156108ad575f5ffd5b507f611ea165ca9257827fc43d2954fdae7d825e82c825d9037db9337fa1bfa9310c54610422565b3480156108e0575f5ffd5b506103bc6108ef366004614888565b611d9d565b3480156108ff575f5ffd5b5061048f61090e366004614489565b611db7565b34801561091e575f5ffd5b50610444604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561094e575f5ffd5b50610422611dc4565b348015610962575f5ffd5b5061042261097136600461441e565b611e5e565b348015610981575f5ffd5b506104226109903660046148ae565b611e6a565b3480156109a0575f5ffd5b506104226109af3660046148ae565b611efc565b3480156109bf575f5ffd5b506103f1611f85565b3480156109d3575f5ffd5b506103bc6109e2366004614588565b611f9a565b3480156109f2575f5ffd5b50610422610a0136600461441e565b61213c565b348015610a11575f5ffd5b50610422610a20366004614588565b612147565b348015610a30575f5ffd5b506103bc610a3f3660046148ed565b612179565b348015610a4f575f5ffd5b50610422610a5e366004614588565b6122ce565b348015610a6e575f5ffd5b50610422610a7d36600461495e565b6122e7565b348015610a8d575f5ffd5b506103bc610a9c36600461498a565b612330565b348015610aac575f5ffd5b506104226123bd565b348015610ac0575f5ffd5b50610422610acf3660046147eb565b612500565b348015610adf575f5ffd5b505f5160206152365f395f51905f5254610422565b348015610aff575f5ffd5b506103bc610b0e3660046149aa565b50505050565b5f610b3d7f611ea165ca9257827fc43d2954fdae7d825e82c825d9037db9337fa1bfa9310c5490565b5f5160206151d65f395f51905f5254610b546126ce565b610b5e9190614a2c565b610b689190614a3f565b905090565b60605f5f5160206152565f395f51905f525b9050806003018054610b9090614a52565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbc90614a52565b8015610c075780601f10610bde57610100808354040283529160200191610c07565b820191905f5260205f20905b815481529060010190602001808311610bea57829003601f168201915b505050505091505090565b5f610c1d825f6128b2565b92915050565b5f33610c30818585612909565b5060019392505050565b5f5f610c6d83610c687f611ea165ca9257827fc43d2954fdae7d825e82c825d9037db9337fa1bfa9310b5490565b61291b565b9050610c7c61074d8285614a2c565b9392505050565b610c8f335b5f3661292b565b7f611ea165ca9257827fc43d2954fdae7d825e82c825d9037db9337fa1bfa9310c545f5160206152365f395f51905f52905f610ccb3483614a2c565b600c84018190556040805184815260208101839052348183015290519192507f3a278b4e83c8793751d35f41b90435c742acf0dfdd54a8cbe09aa59720db93a5919081900360600190a1505050565b5f33610d27858285612a21565b610d32858585612a6b565b506001949350505050565b5f60015f5160206152165f395f51905f525d610d5833610c88565b5f19610d68565b60405180910390fd5b5f610d723461213c565b9050610d7e8482612ac8565b60408051348152602081018390526001600160a01b0386169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7910160405180910390a39150505b919050565b610dd633610c88565b6040805160e081018252308082525f6020830181905292820152606081018390525f5160206152365f395f51905f52919060808101610e1b60c08a0160a08b01614ab6565b63ffffffff168152602001610e308980614ad1565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250505090825250602090810190610e75908a018a614ad1565b808060200260200160405190810160405280939291908181526020018383602002808284375f920182905250939094525050604051632cbd9b6d60e11b8152929350916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915063597b36da90610ef8908590600401614bcd565b602060405180830381865afa158015610f13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f379190614bdf565b90505f610f476005850183612afc565b905080610f675760405163c945242d60e01b815260040160405180910390fd5b610f7460208a018a614ad1565b5f818110610f8457610f84614bf6565b90506020020135846001015f828254610f9d9190614a3f565b90915550506040516360d7faed60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906360d7faed90610ff79086908c908c908c90600190600401614c0a565b5f604051808303815f87803b15801561100e575f5ffd5b505af1158015611020573d5f5f3e3d5ffd5b50505050505050505050505050565b5f610b68612b07565b5f805f5160206152b65f395f51905f525b546001600160a01b031692915050565b61106233610c88565b6040805160018082528183019092525f5160206152365f395f51905f52915f9190602082015b604080516060808201835280825260208201525f918101919091528152602001906001900390816110885750506040805160018082528183019092529192505f9190602080830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000815f8151811061110d5761110d614bf6565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f9181602001602082028036833701905050905084815f8151811061115c5761115c614bf6565b60200260200101818152505084846001015f82825461117b9190614a2c565b925050819055506040518060600160405280838152602001828152602001306001600160a01b0316815250835f815181106111b8576111b8614bf6565b60200260200101819052505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630dd8dd02856040518263ffffffff1660e01b81526004016112109190614c7b565b5f604051808303815f875af115801561122b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112529190810190614d3b565b5f8151811061126357611263614bf6565b602002602001015190506112838186600501612b1090919063ffffffff16565b50505050505050565b61129533610c88565b6103b93382612b1b565b5f806112aa33610c88565b6112bb670de0b6b3a764000061213c565b91506112d18284670de0b6b3a76400005f612b4f565b5f5160206151d65f395f51905f52549091505f5160206152365f395f51905f52905f6112fd8683614a2c565b600d840181905560408051848152602081018390525f8183015290519192507f3a278b4e83c8793751d35f41b90435c742acf0dfdd54a8cbe09aa59720db93a5919081900360600190a16113513385612ac8565b505050915091565b5f5f61136483610c12565b9050611397816113927f611ea165ca9257827fc43d2954fdae7d825e82c825d9037db9337fa1bfa9310b5490565b612b9c565b610c7c9082614a3f565b6113a9612bb7565b6113b282612c5d565b6113bc8282612c66565b5050565b5f6113c9612d22565b505f5160206152965f395f51905f5290565b60606113e633610c88565b5f8290036113f2575f5ffd5b5f5160206152365f395f51905f525f805b848110156114395785858281811061141d5761141d614bf6565b905060200201358261142f9190614a2c565b9150600101611403565b5080825f015f82825461144c9190614a2c565b9091555061149d90507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000083612d6b565b604051636b34082160e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d6681042906114ed90889088903090600401614df6565b5f604051808303815f875af1158015611508573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261152f9190810190614d3b565b92505f5b835181101561158e5761158584828151811061155157611551614bf6565b602002602001015187878481811061156b5761156b614bf6565b9050602002013585600701612df29092919063ffffffff16565b50600101611533565b507f7dac5a8ab4fe1710dfba58441ca15750a9c71877b358e90aac49fc80b293e617836040516115be91906147d9565b60405180910390a1505092915050565b6115d733610c88565b6103b981612dfe565b6115e933610c88565b5f8190036115f5575f5ffd5b5f5160206152365f395f51905f52475f805b848110156117165761163d86868381811061162457611624614bf6565b9050602002013585600701612e7290919063ffffffff16565b6116479083614a2c565b915061167786868381811061165e5761165e614bf6565b9050602002013585600701612e7d90919063ffffffff16565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f84444368787848181106116b9576116b9614bf6565b905060200201356040518263ffffffff1660e01b81526004016116de91815260200190565b5f604051808303815f87803b1580156116f5575f5ffd5b505af1158015611707573d5f5f3e3d5ffd5b50505050806001019050611607565b50475f6117238483614a3f565b905082855f015f8282546117379190614a3f565b90915550506040517ffe1f3a60946e634f858dc1f2f911c04cba9dc419a19abcb1bb1ce905ed79e3259061176e9089908990614e21565b60405180910390a160408051848152602081018390527fb5cd6ba4df0e50a9991fc91db91ea56e2f134e498a70fc7224ad61d123e5bbb0910160405180910390a150505050505050565b5f610c1d826001612e88565b5f60015f5160206152165f395f51905f525d6117df33610c88565b610c7c8383612ed6565b5f805f5160206152565f395f51905f525b6001600160a01b039093165f9081526020939093525050604090205490565b33611822611f85565b6001600160a01b0316816001600160a01b03161461185d5760405162d1953b60e31b81526001600160a01b0382166004820152602401610d5f565b816001600160a01b03163b5f03611892576040516361798f2f60e11b81526001600160a01b0383166004820152602401610d5f565b6113bc82612eea565b6118a433610c88565b4781811015611932576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016632e1a7d4d6118e68385614a3f565b6040518263ffffffff1660e01b815260040161190491815260200190565b5f604051808303815f87803b15801561191b575f5ffd5b505af115801561192d573d5f5f3e3d5ffd5b505050505b5f836001600160a01b0316836040515f6040518083038185875af1925050503d805f811461197b576040519150601f19603f3d011682016040523d82523d5f602084013e611980565b606091505b50509050806119a25760405163b12d13eb60e01b815260040160405180910390fd5b836001600160a01b03167fba7bb5aa419c34d8776b86cc0e9d41e72d74a893a511f361a11af6c05e920c3d846040516119dd91815260200190565b60405180910390a250505050565b5f610c1d82612f43565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611a3e575080546001600160401b03808416911610155b15611a5c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781555f611a925f5160206152b65f395f51905f5290565b80546001600160a01b0319167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161781559050611adf68056bc75e2d63100000612f6b565b611ae85f613008565b611af26064612dfe565b6810357563d481cc0000611b05306117e9565b1115611c0e5760405163a9059cbb60e01b815273e6957d9b493b2f2634c8898ac09dc14cb24be222600482015268104173f45e755c127a6024820152309063a9059cbb906044016020604051808303815f875af1158015611b68573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8c9190614e43565b5060405163a9059cbb60e01b81527334c912c13de7953530dbe4c32f597d1baf77889b6004820152665a54ea63ce573a6024820152309063a9059cbb906044016020604051808303815f875af1158015611be8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c0c9190614e43565b505b50805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050565b5f60608082808083815f5160206152765f395f51905f528054909150158015611c8657506001810154155b611cca5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610d5f565b611cd26130cc565b611cda61310a565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b5f5160206151f65f395f51905f5280545f9190600160a01b900460ff16611d2b575f611d34565b638fb3603760e01b5b91505090565b5f60015f5160206152165f395f51905f525d611d5533610c88565b610c7c8383613120565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f5160206152565f395f51905f5291610b9090614a52565b611da633610c88565b611daf81612f6b565b6103b9613134565b5f33610c30818585612a6b565b7f611ea165ca9257827fc43d2954fdae7d825e82c825d9037db9337fa1bfa9310a545f905f5160206152365f395f51905f52906001600160601b0380821691600160601b900416611e186201518042614e70565b600a840154600160c01b90046001600160401b03161015611e4357506001600160601b031692915050565b611e4d8183614e83565b6001600160601b0316935050505090565b5f610c1d8260016128b2565b5f5f5160206152165f395f51905f525c15611e8c576339b79d115f526004601cfd5b611e9533610c88565b5f611e9f83612147565b905080851115611ec857828582604051633fa733bb60e21b8152600401610d5f93929190614a84565b611ed185613008565b611eda856131b6565b5f611ee486610c3a565b9050611ef333868689856132bc565b95945050505050565b5f5f5160206152165f395f51905f525c15611f1e576339b79d115f526004601cfd5b611f2733610c88565b5f611f31836122ce565b905080851115611f5a57828582604051632e52afbb60e21b8152600401610d5f93929190614a84565b5f611f6486611359565b9050611f6f81613008565b611f78816131b6565b611ef3338686848a6132bc565b5f805f5160206151f65f395f51905f52611049565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015611fde5750825b90505f826001600160401b03166001148015611ff95750303b155b905081158015612007575080155b156120255760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561204f57845460ff60401b1916600160401b1785555b61205886613370565b61207f604051806040016040528060068152602001650e0eacc8aa8960d31b815250613381565b6120a87f00000000000000000000000000000000000000000000000000000000000000006133ac565b6120ee604051806040016040528060068152602001650e0eacc8aa8960d31b815250604051806040016040528060068152602001650e0eacc8aa8960d31b8152506133bd565b831561213457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f610c1d825f612e88565b5f5f612151611dc4565b90505f61216061067d856117e9565b905080821061216f5780612171565b815b949350505050565b8342111561219d5760405163313c898160e11b815260048101859052602401610d5f565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886122078c6001600160a01b03165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f612261826133cf565b90505f612270828787876133fb565b9050896001600160a01b0316816001600160a01b0316146122b7576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610d5f565b6122c28a8a8a612909565b50505050505050505050565b5f5f6122db6104b9611dc4565b90505f612160846117e9565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b61233933610c88565b5f5160206151d65f395f51905f52545f5160206152365f395f51905f52905f6123628483614a3f565b600d840181905560408051848152602081018390525f8183015290519192507f3a278b4e83c8793751d35f41b90435c742acf0dfdd54a8cbe09aa59720db93a5919081900360600190a16123b63386612b1b565b5050505050565b5f805f5160206152365f395f51905f52604051630aa794bf60e31b81523060048201529091505f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063553ca5f890602401602060405180830381865afa158015612434573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124589190614bdf565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637a8b263784600101546040518263ffffffff1660e01b81526004016124ad91815260200190565b602060405180830381865afa1580156124c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ec9190614bdf565b90506124f88183614a2c565b935050505090565b5f60015f5160206152165f395f51905f525d61251b33610c88565b5f5f19604051630f451f7160e31b8152600481018690529091505f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637a28fb8890602401602060405180830381865afa158015612586573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125aa9190614bdf565b9050818111156125d357838183604051633c8097d960e11b8152600401610d5f93929190614a84565b5f6125dd8261213c565b604051636d78045960e01b8152336004820152306024820152604481018890529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636d780459906064016020604051808303815f875af1158015612650573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126749190614bdf565b5061267f8582612ac8565b60408051838152602081018390526001600160a01b0387169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7910160405180910390a395945050505050565b5f5f3490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166313673ccd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127539190614bdf565b61275d8247614a3f565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156127bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127e39190614bdf565b6127eb6123bd565b5f5160206152365f395f51905f52546040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561285c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128809190614bdf565b61288a9190614a2c565b6128949190614a2c565b61289e9190614a2c565b6128a89190614a2c565b611d349190614a2c565b5f610c7c6128be610b14565b6128c9906001614a2c565b6128d45f600a614f85565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546129009190614a2c565b85919085612b4f565b6129168383836001613427565b505050565b5f610c7c83836127106001612b4f565b5f5160206151f65f395f51905f525f80612963612946611f85565b873061295560045f8a8c614f93565b61295e91614fba565b61350a565b91509150816121345763ffffffff8116156129fe57825460ff60a01b1916600160a01b178355612991611f85565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016129c093929190614ff0565b5f604051808303815f87803b1580156129d7575f5ffd5b505af11580156129e9573d5f5f3e3d5ffd5b5050845460ff60a01b19168555506121349050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610d5f565b5f612a2c84846122e7565b90505f198114610b0e5781811015612a5d57828183604051637dc7a0d960e11b8152600401610d5f93929190614a84565b610b0e84848484035f613427565b6001600160a01b038316612a9457604051634b637e8f60e11b81525f6004820152602401610d5f565b6001600160a01b038216612abd5760405163ec442f0560e01b81525f6004820152602401610d5f565b612916838383613612565b6001600160a01b038216612af15760405163ec442f0560e01b81525f6004820152602401610d5f565b6113bc5f8383613612565b5f610c7c8383613738565b5f610b68613822565b5f610c7c8383613895565b6001600160a01b038216612b4457604051634b637e8f60e11b81525f6004820152602401610d5f565b6113bc825f83613612565b5f5f612b5c8686866138e1565b9050612b67836139a0565b8015612b8257505f8480612b7d57612b7d614e5c565b868809115b15611ef357612b92600182614a2c565b9695505050505050565b5f610c7c82612bad61271082614a2c565b8591906001612b4f565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612c3d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c315f5160206152965f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15612c5b5760405163703e46dd60e11b815260040160405180910390fd5b565b6103b933610c88565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612cc0575060408051601f3d908101601f19168201909252612cbd91810190614bdf565b60015b612ce857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d5f565b5f5160206152965f395f51905f528114612d1857604051632a87526960e21b815260048101829052602401610d5f565b61291683836139cc565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612c5b5760405163703e46dd60e11b815260040160405180910390fd5b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015612db8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ddc9190614bdf565b9050610b0e8484612ded8585614a2c565b613a21565b5f612171848484613ade565b5f5160206152365f395f51905f5260c8821115612e2e57604051634af6f05f60e11b815260040160405180910390fd5b600b81015460408051918252602082018490527fb10a745484e9798f0014ea028d76169706f92e7eea5d5bb66001c1400769785d910160405180910390a1600b0155565b5f610c7c8383613afa565b5f610c7c8383613b40565b5f610c7c612e9782600a614f85565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254612ec39190614a2c565b612ecb610b14565b612900906001614a2c565b5f612ee033610c88565b610c7c8383613b5c565b5f5160206151f65f395f51905f5280546001600160a01b0319166001600160a01b03831690811782556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad90602001611c4f565b5f807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006117fa565b7f611ea165ca9257827fc43d2954fdae7d825e82c825d9037db9337fa1bfa9310a54604080516001600160601b039283168152918316602083015280515f5160206152365f395f51905f52927f8d5f7487ce1fd25059bd15204a55ea2c293160362b849a6f9244aec7d5a3700b92908290030190a1600a0180546bffffffffffffffffffffffff19166001600160601b0392909216919091179055565b5f5160206152365f395f51905f526130236201518042614e70565b600a820154600160c01b90046001600160401b0316101561304657613046613134565b8181600a01600c8282829054906101000a90046001600160601b031661306c919061502f565b82546101009290920a6001600160601b03818102199093169183160217909155600a830154604051600160601b90910490911681527f139f9ee0762f3b0c92a4b8c7b8fe8be6b12aaece4b9b22de6bf1ba1094dcd9989150602001611c4f565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f5160206152765f395f51905f5291610b9090614a52565b60605f5f5160206152765f395f51905f52610b7f565b5f61312a33610c88565b610c7c8383613b77565b5f5160206152365f395f51905f5261314f6201518042614e70565b600a820180546001600160601b0316600160c01b6001600160401b0393909316929092026bffffffffffffffffffffffff60601b19169190911790556040517f190567136e3dd93d29bef98a7c7c87cff34ee88e71d634b52f5fb3b531085f40905f90a150565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561321a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061323e9190614bdf565b9050818110156113bc576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663d0e30db06132818385614a3f565b6040518263ffffffff1660e01b81526004015f604051808303818588803b1580156132aa575f5ffd5b505af1158015611283573d5f5f3e3d5ffd5b5f5160206152b65f395f51905f526001600160a01b03868116908516146132e8576132e8848784612a21565b6132f28483612b1b565b8054613308906001600160a01b03168685613b92565b836001600160a01b0316856001600160a01b0316876001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8686604051613360929190918252602082015260400190565b60405180910390a4505050505050565b613378613bc3565b6103b981613c0c565b613389613bc3565b6103b981604051806040016040528060018152602001603160f81b815250613c1d565b6133b4613bc3565b6103b981613c7c565b6133c5613bc3565b6113bc8282613cec565b5f610c1d6133db612b07565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f5f61340b88888888613d3c565b92509250925061341b8282613e04565b50909695505050505050565b5f5160206152565f395f51905f526001600160a01b03851661345e5760405163e602df0560e01b81525f6004820152602401610d5f565b6001600160a01b03841661348757604051634a1406b160e11b81525f6004820152602401610d5f565b6001600160a01b038086165f908152600183016020908152604080832093881683529290522083905581156123b657836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516134fb91815260200190565b60405180910390a35050505050565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251613578919061504e565b5f60405180830381855afa9150503d805f81146135b0576040519150601f19603f3d011682016040523d82523d5f602084013e6135b5565b606091505b509150915081156136075760408151106135e757808060200190518101906135dd9190615064565b9094509250613607565b602081511061360757808060200190518101906136049190614e43565b93505b505094509492505050565b5f5160206152565f395f51905f526001600160a01b03841661364c5781816002015f8282546136419190614a2c565b909155506136a99050565b6001600160a01b0384165f908152602082905260409020548281101561368b5784818460405163391434e360e21b8152600401610d5f93929190614a84565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166136c75760028101805483900390556136e5565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161372a91815260200190565b60405180910390a350505050565b5f8181526001830160205260408120548015613812575f61375a600183614a3f565b85549091505f9061376d90600190614a3f565b90508082146137cc575f865f01828154811061378b5761378b614bf6565b905f5260205f200154905080875f0184815481106137ab576137ab614bf6565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806137dd576137dd61508e565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610c1d565b5f915050610c1d565b5092915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61384c613ebc565b613854613f24565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f8181526001830160205260408120546138da57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610c1d565b505f610c1d565b5f838302815f1985870982811083820303915050805f036139155783828161390b5761390b614e5c565b0492505050610c7c565b8084116139355760405163227bc15360e01b815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f60028260038111156139b5576139b56150a2565b6139bf91906150b6565b60ff166001149050919050565b6139d582613f66565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115613a19576129168282613fc9565b6113bc614032565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052613a728482614051565b610b0e576040516001600160a01b0384811660248301525f6044830152613ad491869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506140ee565b610b0e84826140ee565b5f82815260028401602052604081208290556121718484612b10565b5f81815260028301602052604081205480158015613b1f5750613b1d848461414f565b155b15610c7c5760405163015ab34360e11b815260048101849052602401610d5f565b5f8181526002830160205260408120819055610c7c8383612afc565b5f5f195f613b698561213c565b90506121713385878461415a565b5f5f195f613b8485611e5e565b90506121713385838861415a565b6040516001600160a01b0383811660248301526044820183905261291691859182169063a9059cbb90606401613aa2565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16612c5b57604051631afcd79f60e31b815260040160405180910390fd5b613c14613bc3565b6103b981612eea565b613c25613bc3565b5f5160206152765f395f51905f527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102613c5e848261511b565b5060038101613c6d838261511b565b505f8082556001909101555050565b613c84613bc3565b5f5160206152b65f395f51905f525f80613c9d846141d7565b9150915081613cad576012613caf565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b613cf4613bc3565b5f5160206152565f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03613d2d848261511b565b5060048101610b0e838261511b565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115613d7557505f91506003905082613dfa565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015613dc6573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116613df157505f925060019150829050613dfa565b92505f91508190505b9450945094915050565b5f826003811115613e1757613e176150a2565b03613e20575050565b6001826003811115613e3457613e346150a2565b03613e525760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115613e6657613e666150a2565b03613e875760405163fce698f760e01b815260048101829052602401610d5f565b6003826003811115613e9b57613e9b6150a2565b036113bc576040516335e2f38360e21b815260048101829052602401610d5f565b5f5f5160206152765f395f51905f5281613ed46130cc565b805190915015613eec57805160209091012092915050565b81548015613efb579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b5f5f5160206152765f395f51905f5281613f3c61310a565b805190915015613f5457805160209091012092915050565b60018201548015613efb579392505050565b806001600160a01b03163b5f03613f9b57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d5f565b5f5160206152965f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051613fe5919061504e565b5f60405180830381855af49150503d805f811461401d576040519150601f19603f3d011682016040523d82523d5f602084013e614022565b606091505b5091509150611ef38583836142ad565b3415612c5b5760405163b398979f60e01b815260040160405180910390fd5b5f5f5f846001600160a01b03168460405161406c919061504e565b5f604051808303815f865af19150503d805f81146140a5576040519150601f19603f3d011682016040523d82523d5f602084013e6140aa565b606091505b50915091508180156140d45750805115806140d45750808060200190518101906140d49190614e43565b8015611ef35750505050506001600160a01b03163b151590565b5f6141026001600160a01b03841683614309565b905080515f141580156141265750808060200190518101906141249190614e43565b155b1561291657604051635274afe760e01b81526001600160a01b0384166004820152602401610d5f565b5f610c7c8383614316565b5f5160206152b65f395f51905f52805461417f906001600160a01b031686308661432d565b6141898483612ac8565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d785856040516134fb929190918252602082015260400190565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b0387169161421d9161504e565b5f60405180830381855afa9150503d805f8114614255576040519150601f19603f3d011682016040523d82523d5f602084013e61425a565b606091505b509150915081801561426e57506020815110155b156142a1575f818060200190518101906142889190614bdf565b905060ff811161429f576001969095509350505050565b505b505f9485945092505050565b6060826142c2576142bd82614366565b610c7c565b81511580156142d957506001600160a01b0384163b155b1561430257604051639996b31560e01b81526001600160a01b0385166004820152602401610d5f565b5080610c7c565b6060610c7c83835f61438f565b5f8181526001830160205260408120541515610c7c565b6040516001600160a01b038481166024830152838116604483015260648201839052610b0e9186918216906323b872dd90608401613aa2565b8051156143765780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6060814710156143b45760405163cd78605960e01b8152306004820152602401610d5f565b5f5f856001600160a01b031684866040516143cf919061504e565b5f6040518083038185875af1925050503d805f8114614409576040519150601f19603f3d011682016040523d82523d5f602084013e61440e565b606091505b5091509150612b928683836142ad565b5f6020828403121561442e575f5ffd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610c7c6020830184614435565b6001600160a01b03811681146103b9575f5ffd5b5f5f6040838503121561449a575f5ffd5b82356144a581614475565b946020939093013593505050565b5f5f5f5f5f608086880312156144c7575f5ffd5b85356144d281614475565b945060208601356144e281614475565b93506040860135925060608601356001600160401b03811115614503575f5ffd5b8601601f81018813614513575f5ffd5b80356001600160401b03811115614528575f5ffd5b886020828401011115614539575f5ffd5b959894975092955050506020019190565b5f5f5f6060848603121561455c575f5ffd5b833561456781614475565b9250602084013561457781614475565b929592945050506040919091013590565b5f60208284031215614598575f5ffd5b8135610c7c81614475565b5f60e082840312156145b3575f5ffd5b50919050565b5f5f83601f8401126145c9575f5ffd5b5081356001600160401b038111156145df575f5ffd5b6020830191508360208260051b85010111156145f9575f5ffd5b9250929050565b5f5f5f5f5f60808688031215614614575f5ffd5b85356001600160401b03811115614629575f5ffd5b614635888289016145a3565b95505060208601356001600160401b03811115614650575f5ffd5b61465c888289016145b9565b9699909850959660408101359660609091013595509350505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156146b4576146b4614678565b604052919050565b5f5f604083850312156146cd575f5ffd5b82356146d881614475565b915060208301356001600160401b038111156146f2575f5ffd5b8301601f81018513614702575f5ffd5b80356001600160401b0381111561471b5761471b614678565b61472e601f8201601f191660200161468c565b818152866020838501011115614742575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f60208385031215614772575f5ffd5b82356001600160401b03811115614787575f5ffd5b614793858286016145b9565b90969095509350505050565b5f8151808452602084019350602083015f5b828110156147cf5781518652602095860195909101906001016147b1565b5093949350505050565b602081525f610c7c602083018461479f565b5f5f604083850312156147fc575f5ffd5b82359150602083013561480e81614475565b809150509250929050565b60ff60f81b8816815260e060208201525f61483760e0830189614435565b82810360408401526148498189614435565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152905061487a818561479f565b9a9950505050505050505050565b5f60208284031215614898575f5ffd5b81356001600160601b0381168114610c7c575f5ffd5b5f5f5f606084860312156148c0575f5ffd5b8335925060208401356148d281614475565b915060408401356148e281614475565b809150509250925092565b5f5f5f5f5f5f5f60e0888a031215614903575f5ffd5b873561490e81614475565b9650602088013561491e81614475565b95506040880135945060608801359350608088013560ff81168114614941575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f6040838503121561496f575f5ffd5b823561497a81614475565b9150602083013561480e81614475565b5f5f6040838503121561499b575f5ffd5b50508035926020909101359150565b5f5f5f5f606085870312156149bd575f5ffd5b84356001600160401b038111156149d2575f5ffd5b6149de878288016145a3565b94505060208501356001600160401b038111156149f9575f5ffd5b614a05878288016145b9565b9598909750949560400135949350505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c1d57610c1d614a18565b81810381811115610c1d57610c1d614a18565b600181811c90821680614a6657607f821691505b6020821081036145b357634e487b7160e01b5f52602260045260245ffd5b6001600160a01b039390931683526020830191909152604082015260600190565b63ffffffff811681146103b9575f5ffd5b5f60208284031215614ac6575f5ffd5b8135610c7c81614aa5565b5f5f8335601e19843603018112614ae6575f5ffd5b8301803591506001600160401b03821115614aff575f5ffd5b6020019150600581901b36038213156145f9575f5ffd5b5f8151808452602084019350602083015f5b828110156147cf5781516001600160a01b0316865260209586019590910190600101614b28565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f91614b9a9085018263ffffffff169052565b5060a082015160e060a0850152614bb460e0850182614b16565b905060c083015184820360c0860152611ef3828261479f565b602081525f610c7c6020830184614b4f565b5f60208284031215614bef575f5ffd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b608081525f614c1c6080830188614b4f565b8281036020808501919091528682528791015f5b87811015614c60578235614c4381614475565b6001600160a01b0316825260209283019290910190600101614c30565b50604084019590955250509015156060909101529392505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614d0d57603f198786030184528151805160608752614cc76060880182614b16565b905060208201518782036020890152614ce0828261479f565b6040938401516001600160a01b031698909301979097525094506020938401939190910190600101614ca1565b50929695505050505050565b5f6001600160401b03821115614d3157614d31614678565b5060051b60200190565b5f60208284031215614d4b575f5ffd5b81516001600160401b03811115614d60575f5ffd5b8201601f81018413614d70575f5ffd5b8051614d83614d7e82614d19565b61468c565b8082825260208201915060208360051b850101925086831115614da4575f5ffd5b6020840193505b82841015612b92578351825260209384019390910190614dab565b8183525f6001600160fb1b03831115614ddd575f5ffd5b8260051b80836020870137939093016020019392505050565b604081525f614e09604083018587614dc6565b905060018060a01b0383166020830152949350505050565b602081525f612171602083018486614dc6565b80518015158114610dc8575f5ffd5b5f60208284031215614e53575f5ffd5b610c7c82614e34565b634e487b7160e01b5f52601260045260245ffd5b5f82614e7e57614e7e614e5c565b500490565b6001600160601b038281168282160390811115610c1d57610c1d614a18565b6001815b6001841115614edd57808504811115614ec157614ec1614a18565b6001841615614ecf57908102905b60019390931c928002614ea6565b935093915050565b5f82614ef357506001610c1d565b81614eff57505f610c1d565b8160018114614f155760028114614f1f57614f3b565b6001915050610c1d565b60ff841115614f3057614f30614a18565b50506001821b610c1d565b5060208310610133831016604e8410600b8410161715614f5e575081810a610c1d565b614f6a5f198484614ea2565b805f1904821115614f7d57614f7d614a18565b029392505050565b5f610c7c60ff841683614ee5565b5f5f85851115614fa1575f5ffd5b83861115614fad575f5ffd5b5050820193919092039150565b80356001600160e01b0319811690600484101561381b576001600160e01b031960049490940360031b84901b1690921692915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b6001600160601b038181168382160190811115610c1d57610c1d614a18565b5f82518060208501845e5f920191825250919050565b5f5f60408385031215615075575f5ffd5b61507e83614e34565b9150602083015161480e81614aa5565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b5f60ff8316806150c8576150c8614e5c565b8060ff84160691505092915050565b601f82111561291657805f5260205f20601f840160051c810160208510156150fc5750805b601f840160051c820191505b818110156123b6575f8155600101615108565b81516001600160401b0381111561513457615134614678565b615148816151428454614a52565b846150d7565b6020601f82116001811461517a575f83156151635750848201515b5f19600385901b1c1916600184901b1784556123b6565b5f84815260208120601f198516915b828110156151a95787850151825560209485019460019092019101615189565b50848210156151c657868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe611ea165ca9257827fc43d2954fdae7d825e82c825d9037db9337fa1bfa9310df3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a0078b7b410d94d33094d5b8a71f1c003e2cbb9e212054d2df1984e3dabc3b25e00611ea165ca9257827fc43d2954fdae7d825e82c825d9037db9337fa1bfa9310052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00a264697066735822122061561478c486b5ddecd1da5d5f2d04db3d96e7d7d6557a59f917d5106321581864736f6c634300081b0033611ea165ca9257827fc43d2954fdae7d825e82c825d9037db9337fa1bfa931000000000000000000000000003f1c547b21f65e10480de3ad8e19faac46c950340000000000000000000000001d181cbd1825e9ebc6ad966878d555a7215ff4f0000000000000000000000000c7cc160b58f8bb0bac94b80847e2cf2800565c500000000000000000000000007d704507b76571a51d9cae8addabbfd0ba0e63d3000000000000000000000000dfb5f6ce42aaa7830e94ecfccad411bef4d4d5b60000000000000000000000008e043ed3f06720615685d4978770cd5c8fe90fe3000000000000000000000000a44151489861fe9e3055d95adc98fbd462b948e7