[ { "inputs": [ { "internalType": "address", "name": "addressProvider_", "type": "address" }, { "internalType": "address", "name": "underlyingToken_", "type": "address" }, { "internalType": "address", "name": "interestRateModel_", "type": "address" }, { "internalType": "uint256", "name": "totalDebtLimit_", "type": "uint256" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "CallerNotConfiguratorException", "type": "error" }, { "inputs": [], "name": "CallerNotControllerException", "type": "error" }, { "inputs": [], "name": "CallerNotCreditManagerException", "type": "error" }, { "inputs": [], "name": "CallerNotPausableAdminException", "type": "error" }, { "inputs": [], "name": "CallerNotPoolQuotaKeeperException", "type": "error" }, { "inputs": [], "name": "CallerNotUnpausableAdminException", "type": "error" }, { "inputs": [], "name": "CreditManagerCantBorrowException", "type": "error" }, { "inputs": [], "name": "IncompatibleCreditManagerException", "type": "error" }, { "inputs": [], "name": "IncompatiblePoolQuotaKeeperException", "type": "error" }, { "inputs": [], "name": "IncorrectParameterException", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [], "name": "RegisteredCreditManagerOnlyException", "type": "error" }, { "inputs": [], "name": "SafeTransferFailed", "type": "error" }, { "inputs": [], "name": "SafeTransferFromFailed", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "inputs": [], "name": "ZeroAddressException", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "creditManager", "type": "address" } ], "name": "AddCreditManager", "type": "event" }, { "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": "creditManager", "type": "address" }, { "indexed": true, "internalType": "address", "name": "creditAccount", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Borrow", "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": "creditManager", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "loss", "type": "uint256" } ], "name": "IncurUncoveredLoss", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newController", "type": "address" } ], "name": "NewController", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "onBehalfOf", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "referralCode", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Refer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "creditManager", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "borrowedAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "profit", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "loss", "type": "uint256" } ], "name": "Repay", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "creditManager", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "newLimit", "type": "uint256" } ], "name": "SetCreditManagerDebtLimit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newInterestRateModel", "type": "address" } ], "name": "SetInterestRateModel", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newPoolQuotaKeeper", "type": "address" } ], "name": "SetPoolQuotaKeeper", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "limit", "type": "uint256" } ], "name": "SetTotalDebtLimit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "fee", "type": "uint256" } ], "name": "SetWithdrawFee", "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": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "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": "acl", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "addressProvider", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "availableLiquidity", "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": "baseInterestIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseInterestIndexLU", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseInterestRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractsRegister", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "controller", "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": [ { "internalType": "address", "name": "creditManager", "type": "address" } ], "name": "creditManagerBorrowable", "outputs": [ { "internalType": "uint256", "name": "borrowable", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "creditManager", "type": "address" } ], "name": "creditManagerBorrowed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "creditManager", "type": "address" } ], "name": "creditManagerDebtLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "creditManagers", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "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": "shares", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "referralCode", "type": "uint256" } ], "name": "depositWithReferral", "outputs": [ { "internalType": "uint256", "name": "shares", "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": [], "name": "expectedLiquidity", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "expectedLiquidityLU", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [], "name": "interestRateModel", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastBaseInterestUpdate", "outputs": [ { "internalType": "uint40", "name": "", "type": "uint40" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastQuotaRevenueUpdate", "outputs": [ { "internalType": "uint40", "name": "", "type": "uint40" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "borrowedAmount", "type": "uint256" }, { "internalType": "address", "name": "creditAccount", "type": "address" } ], "name": "lendCreditAccount", "outputs": [], "stateMutability": "nonpayable", "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": "", "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": "assets", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "referralCode", "type": "uint256" } ], "name": "mintWithReferral", "outputs": [ { "internalType": "uint256", "name": "assets", "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": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [], "name": "poolQuotaKeeper", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewDeposit", "outputs": [ { "internalType": "uint256", "name": "shares", "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": "quotaRevenue", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "assets", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "repaidAmount", "type": "uint256" }, { "internalType": "uint256", "name": "profit", "type": "uint256" }, { "internalType": "uint256", "name": "loss", "type": "uint256" } ], "name": "repayCreditAccount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newController", "type": "address" } ], "name": "setController", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "creditManager", "type": "address" }, { "internalType": "uint256", "name": "newLimit", "type": "uint256" } ], "name": "setCreditManagerDebtLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newInterestRateModel", "type": "address" } ], "name": "setInterestRateModel", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newPoolQuotaKeeper", "type": "address" } ], "name": "setPoolQuotaKeeper", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newQuotaRevenue", "type": "uint256" } ], "name": "setQuotaRevenue", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newLimit", "type": "uint256" } ], "name": "setTotalDebtLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newWithdrawFee", "type": "uint256" } ], "name": "setWithdrawFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "supplyRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAssets", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalBorrowed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalDebtLimit", "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": "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": [], "name": "treasury", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "underlyingToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "int256", "name": "quotaRevenueDelta", "type": "int256" } ], "name": "updateQuotaRevenue", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "shares", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" } ]
6102406040526009805461ff0019166101001790553480156200002157600080fd5b506040516200530838038062005308833981810160405260c08110156200004757600080fd5b81516020830151604080850151606086015160808701805193519597949692959194919392820192846401000000008211156200008357600080fd5b9083019060208201858111156200009957600080fd5b8251640100000000811182820188101715620000b457600080fd5b82525081516020918201929091019080838360005b83811015620000e3578181015183820152602001620000c9565b50505050905090810190601f168015620001115780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200013557600080fd5b9083019060208201858111156200014b57600080fd5b82516401000000008111828201881017156200016657600080fd5b82525081516020918201929091019080838360005b83811015620001955781810151838201526020016200017b565b50505050905090810190601f168015620001c35780820380516001836020036101000a031916815260200191505b506040818101905260018152603160f81b602082015289935083925085915081908982878680620001f4816200062a565b604051632bdad0e360e11b8152621050d360ea1b6004820152600060248201526001600160a01b038316906357b5a1c690604401602060405180830381865afa15801562000246573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026c919062000901565b6001600160a01b03166080525060039050620002898382620009d8565b506004620002988282620009d8565b505050600080620002af836200065560201b60201c565b9150915081620002c1576012620002c3565b805b60ff1660c05250506001600160a01b031660a052620002f08260056200073a602090811b6200241d17901c565b610180526200030d8160066200073a602090811b6200241d17901c565b6101a0528151602080840191909120610140528151908201206101605246610100526200039e6101405161016051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60e05250503061012052506009805460ff1916905560805160408051638da5cb5b60e01b815290516001600160a01b0390921691638da5cb5b916004808201926020929091908290030181865afa158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000424919062000901565b600980546001600160a01b0392909216620100000262010000600160b01b031990921691909117905550806200045a816200062a565b604051632bdad0e360e11b81527121a7a72a2920a1aa29afa922a3a4a9aa22a960711b6004820152600060248201526001600160a01b038316906357b5a1c690604401602060405180830381865afa158015620004bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e1919062000901565b6001600160a01b03166101c05250859050620004fd816200062a565b8462000509816200062a565b6001600160a01b038089166101e08190529088166102005260408051632bdad0e360e11b815267545245415355525960c01b60048201526000602482015290516357b5a1c6916044808201926020929091908290030181865afa15801562000575573d6000803e3d6000fd5b505050506040513d60208110156200058c57600080fd5b50516001600160a01b0390811661022052600a8054600c80546001600160801b0316676765c793fa10079d609b1b1790556001600160c81b031916600160a01b4264ffffffffff16026001600160a01b0319161791881691821790556040517f60d671e95013fc5fd0cf35d947791aa49209ad86fccf748e0b126f3f9f0a83ba90600090a26200061c856200078a565b505050505050505062000b5c565b6001600160a01b0381166200065257604051635919af9760e11b815260040160405180910390fd5b50565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b038716916200069e9162000aca565b600060405180830381855afa9150503d8060008114620006db576040519150601f19603f3d011682016040523d82523d6000602084013e620006e0565b606091505b5091509150818015620006f557506020815110155b156200072d5760008180602001905181019062000713919062000ae8565b905060ff81116200072b576001969095509350505050565b505b5060009485945092505050565b60006020835110156200075a5762000752836200080d565b905062000784565b8262000771836200085960201b620014461760201c565b906200077e9082620009d8565b5060ff90505b92915050565b600062000797826200085c565b600e549091506001600160801b03600160801b909104811690821603620007bc575050565b600e80546001600160801b03808416600160801b0291161790556040805183815290517f9154a5b15c38625466fe66233214f14f17fd994f819818caf08017b94d0787ba9181900360200190a15050565b600080829050601f8151111562000844578260405163305a27a960e01b81526004016200083b919062000b02565b60405180910390fd5b8051620008518262000b37565b179392505050565b90565b6000600019821462000884576200087e826200089260201b6200244e1760201c565b62000784565b6001600160801b0392915050565b60006001600160801b03821115620008fd5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016200083b565b5090565b6000602082840312156200091457600080fd5b81516001600160a01b03811681146200092c57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200095e57607f821691505b6020821081036200097f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620009d357600081815260208120601f850160051c81016020861015620009ae5750805b601f850160051c820191505b81811015620009cf57828155600101620009ba565b5050505b505050565b81516001600160401b03811115620009f457620009f462000933565b62000a0c8162000a05845462000949565b8462000985565b602080601f83116001811462000a44576000841562000a2b5750858301515b600019600386901b1c1916600185901b178555620009cf565b600085815260208120601f198616915b8281101562000a755788860151825594840194600190910190840162000a54565b508582101562000a945787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60005b8381101562000ac157818101518382015260200162000aa7565b50506000910152565b6000825162000ade81846020870162000aa4565b9190910192915050565b60006020828403121562000afb57600080fd5b5051919050565b602081526000825180602084015262000b2381604085016020870162000aa4565b601f01601f19169190910160400192915050565b805160208083015191908110156200097f5760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516146b062000c58600039600081816107e301528181611f1401528181611f4e015261341a015260008181610657015281816114a901528181611dfc01528181612e4f015281816133bc01526133f8015260006106b70152600081816108cf0152613d6401526000611719015260006116ee01526000612ce001526000612cb801526000612c1301526000612c3d01526000612c6701526000612be201526000610701015260008181610f2701528181613ace01528181613c090152613e1f01526146b06000f3fe608060405234801561001057600080fd5b50600436106104a85760003560e01c806388ae78421161026b578063c63d75b611610150578063dac54431116100c8578063ef8b30f711610097578063f77c47911161007c578063f77c479114610fa5578063faaba9e214610fbe578063fe14112d14610fc657600080fd5b8063ef8b30f714610f75578063f3fdb15a14610f9257600080fd5b8063dac5443114610e83578063dd62ed3e14610edb578063de28735914610f22578063e941fa7814610f4957600080fd5b8063ce96cb771161011f578063d6458eea11610104578063d6458eea14610e0e578063d7337c2e14610e2b578063d905777e14610e5d57600080fd5b8063ce96cb7714610d97578063d505accf14610dbd57600080fd5b8063c63d75b614610759578063c6e6f59214610d40578063c8c9866214610d5d578063ca9505e414610d6e57600080fd5b8063afd92762116101e3578063b460af94116101b2578063ba08765211610197578063ba08765214610ccd578063be8da14b14610d01578063bf28068b14610d1457600080fd5b8063b460af9414610c7c578063b6ac642a14610cb057600080fd5b8063afd9276214610bf6578063b0df2c6614610c07578063b3d4543314610c2d578063b3d7f6b914610c5f57600080fd5b806395d89b411161023a578063a74d49101161021f578063a74d491014610baa578063a9059cbb14610bc2578063ad2961a314610bee57600080fd5b806395d89b4114610b76578063a457c2d714610b7e57600080fd5b806388ae784214610ae65780638bcd401614610afe57806392eefe9b14610b2457806394bf804d14610b4a57600080fd5b8063402d267d1161039157806370a08231116103095780637a99c017116102d85780638456cb59116102bd5780638456cb591461095357806384b0196e1461095b578063871d726814610ac957600080fd5b80637a99c017146108f15780637ecebe001461092d57600080fd5b806370a0823114610863578063743753591461089657806379e4e3a91461089e5780637a0c7b21146108ca57600080fd5b80635a6952e41161036057806361d027b31161034557806361d027b3146107de5780636b88245b146108055780636e553f651461083757600080fd5b80635a6952e4146107b65780635c975abb146107d357600080fd5b8063402d267d146107595780634c19386c1461077f5780634cdad5061461079057806354fd4d50146107ad57600080fd5b806323b872dd11610424578063313ce567116103f357806338d52e0f116103d857806338d52e0f146106ff57806339509351146107255780633f4ba83a1461075157600080fd5b8063313ce567146106d95780633644e515146106f757600080fd5b806323b872dd1461061c5780632495a59914610652578063275df3ad146106955780632954018c146106b257600080fd5b80630a28a4771161047b57806318160ddd1161046057806318160ddd146105e4578063183ace90146105ec5780631ab7c7d7146105f457600080fd5b80630a28a477146105a1578063136a6833146105be57600080fd5b806301e1d114146104ad57806306fdde03146104c757806307a2d13a14610544578063095ea7b314610561575b600080fd5b6104b5610fce565b60408051918252519081900360200190f35b6104cf610fdd565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105095781810151838201526020016104f1565b50505050905090810190601f1680156105365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104b56004803603602081101561055a57600080fd5b503561106f565b61058d6004803603604081101561057757600080fd5b506001600160a01b038135169060200135611082565b604080519115158252519081900360200190f35b6104b5600480360360208110156105b757600080fd5b503561109a565b6104b5600480360360208110156105d457600080fd5b50356001600160a01b03166110af565b6002546104b5565b6104b561119a565b61061a6004803603602081101561060a57600080fd5b50356001600160a01b03166111b9565b005b61058d6004803603606081101561063257600080fd5b506001600160a01b03813581169160208101359091169060400135611349565b6106797f000000000000000000000000000000000000000000000000000000000000000081565b604080516001600160a01b039092168252519081900360200190f35b61061a600480360360208110156106ab57600080fd5b503561136d565b6106797f000000000000000000000000000000000000000000000000000000000000000081565b6106e16113a7565b6040805160ff9092168252519081900360200190f35b6104b56113b1565b7f0000000000000000000000000000000000000000000000000000000000000000610679565b61058d6004803603604081101561073b57600080fd5b506001600160a01b0381351690602001356113bb565b61061a6113fa565b6104b56004803603602081101561076f57600080fd5b50356001600160a01b031661140c565b600e546001600160801b03166104b5565b6104b5600480360360208110156107a657600080fd5b503561142e565b6104b561012c81565b600b54600160a01b90046bffffffffffffffffffffffff166104b5565b60095460ff1661058d565b6106797f000000000000000000000000000000000000000000000000000000000000000081565b600a5461081d90600160a01b900464ffffffffff1681565b6040805164ffffffffff9092168252519081900360200190f35b6104b56004803603604081101561084d57600080fd5b50803590602001356001600160a01b0316611449565b6104b56004803603602081101561087957600080fd5b50356001600160a01b031660009081526020819052604090205490565b6104b56114a5565b61061a600480360360408110156108b457600080fd5b506001600160a01b038135169060200135611536565b6106797f000000000000000000000000000000000000000000000000000000000000000081565b6104b56004803603602081101561090757600080fd5b50356001600160a01b03166000908152600f60205260409020546001600160801b031690565b6104b56004803603602081101561094357600080fd5b50356001600160a01b03166116b2565b61061a6116d0565b6109636116e0565b60405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020018060200180602001878152602001866001600160a01b031681526020018581526020018060200184810384528a818151815260200191508051906020019080838360005b838110156109eb5781810151838201526020016109d3565b50505050905090810190601f168015610a185780820380516001836020036101000a031916815260200191505b5084810383528951815289516020918201918b019080838360005b83811015610a4b578181015183820152602001610a33565b50505050905090810190601f168015610a785780820380516001836020036101000a031916815260200191505b508481038252855181528551602091820191808801910280838360005b83811015610aad578181015183820152602001610a95565b505050509050019a505050505050505050505060405180910390f35b61061a60048036036020811015610adf57600080fd5b5035611785565b600a5461081d90600160c81b900464ffffffffff1681565b61061a60048036036020811015610b1457600080fd5b50356001600160a01b0316611799565b61061a60048036036020811015610b3a57600080fd5b50356001600160a01b0316611817565b6104b560048036036040811015610b6057600080fd5b50803590602001356001600160a01b03166118a4565b6104cf6118ed565b61058d60048036036040811015610b9457600080fd5b506001600160a01b0381351690602001356118fc565b600c54600160801b90046001600160801b03166104b5565b61058d60048036036040811015610bd857600080fd5b506001600160a01b0381351690602001356119ab565b6104b56119b9565b600c546001600160801b03166104b5565b6104b560048036036020811015610c1d57600080fd5b50356001600160a01b0316611a87565b6104b560048036036060811015610c4357600080fd5b508035906001600160a01b036020820135169060400135611ab9565b6104b560048036036020811015610c7557600080fd5b5035611b10565b6104b560048036036060811015610c9257600080fd5b508035906001600160a01b0360208201358116916040013516611b20565b61061a60048036036020811015610cc657600080fd5b5035611b8d565b6104b560048036036060811015610ce357600080fd5b508035906001600160a01b0360208201358116916040013516611c5c565b600b54610679906001600160a01b031681565b61061a60048036036040811015610d2a57600080fd5b50803590602001356001600160a01b0316611cb4565b6104b560048036036020811015610d5657600080fd5b5035611e7a565b600d546001600160801b03166104b5565b61061a60048036036060811015610d8457600080fd5b5080359060208101359060400135611e87565b6104b560048036036020811015610dad57600080fd5b50356001600160a01b03166120de565b61061a600480360360e0811015610dd357600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561212f565b61061a60048036036020811015610e2457600080fd5b5035612293565b6104b560048036036060811015610e4157600080fd5b508035906001600160a01b0360208201351690604001356122f4565b6104b560048036036020811015610e7357600080fd5b50356001600160a01b031661234b565b610e8b612391565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610ec7578181015183820152602001610eaf565b505050509050019250505060405180910390f35b6104b560048036036040811015610ef157600080fd5b506001600160a01b038135811660009081526001602090815260408083209482013590931682529290925290205490565b6106797f000000000000000000000000000000000000000000000000000000000000000081565b600a54610f5e90600160f01b900461ffff1681565b6040805161ffff9092168252519081900360200190f35b6104b560048036036020811015610f8b57600080fd5b503561239d565b600a54610679906001600160a01b031681565b600954610679906201000090046001600160a01b031681565b6104b56123a8565b6104b56123eb565b6000610fd86123eb565b905090565b606060038054610fec906142fa565b80601f0160208091040260200160405190810160405280929190818152602001828054611018906142fa565b80156110655780601f1061103a57610100808354040283529160200191611065565b820191906000526020600020905b81548152906001019060200180831161104857829003601f168201915b5050505050905090565b600061107c8260006124d1565b92915050565b600033611090818585612508565b5060019392505050565b600061107c6110a883612660565b6001612697565b60006110bb600e6126c9565b9050806000036110cd57506000919050565b6001600160a01b0382166000908152600f602052604090206110f99082906110f4906126c9565b612733565b90508060000361110b57506000919050565b600a546000906001600160a01b03166381ec4ab76111276123eb565b61112f6114a5565b6040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381865afa15801561116f573d6000803e3d6000fd5b505050506040513d602081101561118557600080fd5b505190506111938282612733565b9392505050565b600e54600090610fd890600160801b90046001600160801b0316612749565b6111c1612773565b806111cb816127b2565b306001600160a01b0316826001600160a01b03166316f0115b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611213573d6000803e3d6000fd5b505050506040513d602081101561122957600080fd5b50516001600160a01b03161461126b576040517f83d21be500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155604080517feb9860a300000000000000000000000000000000000000000000000000000000815290516000929163eb9860a39160048083019260209291908290030181865afa1580156112ed573d6000803e3d6000fd5b505050506040513d602081101561130357600080fd5b50519050611310816127f2565b6040516001600160a01b038416907f553438de7e02bc6929ef4f6c3653130beca086dd506f1aa2785b58e6a13c326490600090a2505050565b6000336113578582856128bb565b61136285858561294d565b506001949350505050565b611375612b3a565b6009805461ff00191661020017905561138c612b96565b611395816127f2565b506009805461ff001916610100179055565b6000610fd8612bda565b6000610fd8612c06565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061109090829086906113f5908790614344565b612508565b611402612d31565b61140a612d70565b565b600061141a60095460ff1690565b6114265760001961107c565b600092915050565b600061107c6114466114418460006124d1565b612dc2565b90565b6000611453612def565b61145b612b3a565b6009805461ff00191661020017905581611474816127b2565b83611480816000612697565b925061148e84868386612e42565b50506009805461ff00191661010017905592915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381865afa158015611519573d6000803e3d6000fd5b505050506040513d602081101561152f57600080fd5b5051919050565b61153e612edb565b81611548816127b2565b8261155281612f39565b61155d601085612f78565b61163957836001600160a01b03166316f0115b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561159f573d6000803e3d6000fd5b505050506040513d60208110156115b557600080fd5b50516001600160a01b031630146115f8576040517f2e47790c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611603601085612f9a565b506040516001600160a01b038516907fbca7ba46bb626fab79d5a673d0d8293df21968a25350c4d71433f98600618f5f90600090a25b61164283612faf565b6001600160a01b0385166000818152600f602090815260409182902080546001600160801b03958616600160801b029516949094179093558051868152905191927fce20e043afe93acdab0352023688eb8da23cdfd33d80471cce1e6c9239662bcd92918290030190a250505050565b6001600160a01b03811660009081526007602052604081205461107c565b6116d8612fd1565b61140a613010565b6000606080828080836117147f0000000000000000000000000000000000000000000000000000000000000000600561304d565b61173f7f0000000000000000000000000000000000000000000000000000000000000000600661304d565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b61178d612edb565b611796816130f1565b50565b6117a1612773565b806117ab816127b2565b600a805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790556117df60008080613171565b6040516001600160a01b038316907f60d671e95013fc5fd0cf35d947791aa49209ad86fccf748e0b126f3f9f0a83ba90600090a25050565b61181f612773565b6009546001600160a01b0382811662010000909204161461179657600980547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b038416908102919091179091556040517fe253457d9ad994ca9682fc3bbc38c890dca73a2d5ecee3809e548bac8b00d7c690600090a250565b60006118ae612def565b6118b6612b3a565b6009805461ff001916610200179055816118cf816127b2565b60006118dc8560016124d1565b905080925061148e84848388612e42565b606060048054610fec906142fa565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091908381101561199e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6113628286868403612508565b60003361109081858561294d565b6000806119c46123eb565b905060006119da600c546001600160801b031690565b9050816000036119ea5792915050565b600a54829061271090611a0890600160f01b900461ffff168261436d565b61ffff166b033b2e3c9fd0803ce8000000611a38600b546bffffffffffffffffffffffff600160a01b9091041690565b611a42919061438f565b600e54611a58906001600160801b03168661438f565b611a629190614344565b611a6c919061438f565b611a7691906143bc565b611a8091906143bc565b9250505090565b6001600160a01b0381166000908152600f602052604081205461107c90600160801b90046001600160801b0316612749565b6000611ac58484611449565b905081836001600160a01b03167fd01c12ea61a25b0a57aa9b86b06dacf8f140567dd44ec9db66ef7955f6a956d2866040518082815260200191505060405180910390a39392505050565b600061107c6114468360016124d1565b6000611b2a612def565b611b32612b3a565b6009805461ff00191661020017905582611b4b816127b2565b846000611b5782612660565b9050611b64816001612697565b9350611b748686838a868961335c565b50506009805461ff001916610100179055509392505050565b611b95612edb565b6064811115611bd0576040517f47fbaa9700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a54600160f01b900461ffff16811461179657611bed816134a6565b600a805461ffff92909216600160f01b027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790556040805182815290517f7be0a744e4d6f887e4fd578978ae62cb2568d860f0f2eb0a54fd0de804b164409181900360200190a150565b6000611c66612def565b611c6e612b3a565b6009805461ff00191661020017905582611c87816127b2565b6000611c948660006124d1565b90506000611ca182612dc2565b9050809350611b7486868487858c61335c565b611cbc612def565b611cc4612b3a565b6009805461ff0019166102001790556000611cde8361244e565b336000908152600f60205260408120600e5492935091611d089084906001600160801b03166143de565b8254909150600090611d249085906001600160801b03166143de565b9050851580611d47575082546001600160801b03600160801b9091048116908216115b80611d675750600e546001600160801b03600160801b9091048116908316115b15611d9e576040517f9abfd95000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611dbc6000611dac88613509565b611db5906143fe565b6001613171565b82546001600160801b038083166fffffffffffffffffffffffffffffffff19928316178555600e805491851691909216179055611e236001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686886135a1565b6040805187815290516001600160a01b0387169133917f312a5e5e1079f5dda4e95dbbd0b908b291fd5b992ef22073643ab691572c5b529181900360200190a350506009805461ff00191661010017905550505050565b600061107c826000612697565b611e8f612def565b611e97612b3a565b6009805461ff0019166102001790556000611eb18461244e565b336000908152600f602052604081208054929350916001600160801b031690819003611f09576040517f1f51116700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8415611f4657611f417f0000000000000000000000000000000000000000000000000000000000000000611f3c87611e7a565b613608565b611fe9565b8315611fe9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03811660009081526020819052604081205490611f9087611e7a565b905081811115611fdb57337f33fc1787be707f18e553b02263e12d2fa6d2d40733535382066fd1d77e32c595611fc784840361106f565b60408051918252519081900360200190a250805b611fe583826136c7565b5050505b612010611ff585613509565b611ffe87613509565b6120089190614436565b600080613171565b600e805484919060009061202e9084906001600160801b0316614456565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550828161205e9190614456565b82546001600160801b03919091166fffffffffffffffffffffffffffffffff199091161782556040805187815260208101879052808201869052905133917f2fe77b1c99aca6b022b8efc6e3e8dd1b48b30748709339b65c50ef3263443e09919081900360600190a250506009805461ff00191661010017905550505050565b60006120ec60095460ff1690565b6114265761212a6114466114416121016114a5565b6110f4612123876001600160a01b031660009081526020819052604090205490565b60006124d1565b61107c565b8342111561217f5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401611995565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886121ae8c613830565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061220982613858565b90506000612219828787876138a0565b9050896001600160a01b0316816001600160a01b03161461227c5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401611995565b6122878a8a8a612508565b50505050505050505050565b61229b612b3a565b6009805461ff0019166102001790556122b2612b96565b6113956122ef826122e06122db600b546bffffffffffffffffffffffff600160a01b9091041690565b613509565b6122ea9190614476565b6138c8565b6127f2565b600061230084846118a4565b905081836001600160a01b03167fd01c12ea61a25b0a57aa9b86b06dacf8f140567dd44ec9db66ef7955f6a956d2836040518082815260200191505060405180910390a39392505050565b600061235960095460ff1690565b6114265761212a61237f836001600160a01b031660009081526020819052604090205490565b6110f461238a6114a5565b6000612697565b6060610fd8601061391a565b600061107c8261238a565b600a54600090600160a01b900464ffffffffff16428190036123dc575050600c54600160801b90046001600160801b031690565b6123e581613927565b91505090565b60006123f5613985565b6123fd6139b2565b600d5461241391906001600160801b0316614344565b610fd89190614344565b600060208351101561243957612432836139df565b905061107c565b8161244484826144e4565b5060ff905061107c565b60006001600160801b038211156124cd5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f32382062697473000000000000000000000000000000000000000000000000006064820152608401611995565b5090565b6000806124dd60025490565b905080156124fe576124f96124f0610fce565b85908386613a36565b612500565b835b949350505050565b6001600160a01b0383166125835760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401611995565b6001600160a01b0382166125ff5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401611995565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600a5460009061267d90600160f01b900461ffff1661271061436d565b61ffff1661268d6127108461438f565b61107c91906143bc565b6000806126a360025490565b90508315806126b0575080155b6124fe576124f9816126c0610fce565b86919086613a36565b8054600090600160801b90046001600160801b03167fffffffffffffffffffffffffffffffff00000000000000000000000000000001810161270f575060001992915050565b82546001600160801b031681811061272b575060009392505050565b900392915050565b60008183106127425781611193565b5090919050565b60006001600160801b038281161461276a57816001600160801b031661107c565b60001992915050565b61277c33613a93565b61140a576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611796576040517fb2335f2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a54600160c81b900464ffffffffff1642811461287e5761281b61281682613b3c565b61244e565b600d80546000906128369084906001600160801b03166143de565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555042600a60196101000a81548164ffffffffff021916908364ffffffffff1602179055505b61288782613b61565b600b60146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114612947578181101561293a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401611995565b6129478484848403612508565b50505050565b6001600160a01b0383166129c95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401611995565b6001600160a01b038216612a455760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401611995565b6001600160a01b03831660009081526020819052604090205481811015612ad45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401611995565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3612947565b60095460011961010090910460ff160161140a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611995565b600b546001600160a01b0316331461140a576040517f1534b9a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610fd8817f00000000000000000000000000000000000000000000000000000000000000006145a4565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612c5f57507f000000000000000000000000000000000000000000000000000000000000000046145b15612c8957507f000000000000000000000000000000000000000000000000000000000000000090565b610fd8604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b612d3a33613bce565b61140a576040517f16e29ab700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612d78613c3a565b6009805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600a5460009061271090612de190600160f01b900461ffff168261436d565b61268d9061ffff168461438f565b60095460ff161561140a5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401611995565b612e776001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086613c8c565b612e8361200883613509565b612e8d8482613608565b604080518481526020810183905281516001600160a01b0387169233927fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7929081900390910190a350505050565b6009546201000090046001600160a01b03163314801590612f025750612f0033613a93565b155b1561140a576040517f0129bb9900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612f4281613d29565b611796576040517fbc6a488a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811660009081526001830160205260408120541515611193565b6000611193836001600160a01b038416613d95565b60006000198214612fc35761212a8261244e565b6001600160801b0392915050565b612fda33613de4565b61140a576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613018612def565b6009805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612da53390565b606060ff83146130605761243283613e50565b81805461306c906142fa565b80601f0160208091040260200160405190810160405280929190818152602001828054613098906142fa565b80156130e55780601f106130ba576101008083540402835291602001916130e5565b820191906000526020600020905b8154815290600101906020018083116130c857829003601f168201915b5050505050905061107c565b60006130fc82612faf565b600e549091506001600160801b03600160801b909104811690821603613120575050565b600e80546001600160801b03808416600160801b0291161790556040805183815290517f9154a5b15c38625466fe66233214f14f17fd994f819818caf08017b94d0787ba9181900360200190a15050565b6000613182846122e06122db6123eb565b90506000613195846122e06122db6114a5565b600a54909150600160a01b900464ffffffffff16428114613213576131bc61281682613927565b600c80546001600160801b03928316600160801b029216919091179055600a805464ffffffffff4216600160a01b027fffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff9091161790555b600a54600160c81b900464ffffffffff16421461326257600a80547fffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff16600160c81b4264ffffffffff16021790555b61326b8361244e565b600d80546fffffffffffffffffffffffffffffffff19166001600160801b0392909216919091179055600a54604080517f306ea06700000000000000000000000000000000000000000000000000000000815260048101869052602481018590528615156044820152905161332b926001600160a01b03169163306ea0679160648083019260209291908290030181865afa15801561330e573d6000803e3d6000fd5b505050506040513d602081101561332457600080fd5b505161244e565b600c80546fffffffffffffffffffffffffffffffff19166001600160801b0392909216919091179055505050505050565b336001600160a01b03861614613377576133778533836128bb565b61338185826136c7565b6133af61338d85613509565b613396906143fe565b61339f86613509565b6133a8906143fe565b6000613171565b6133e36001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001687846135a1565b81841115613441576134416001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008487036135a1565b846001600160a01b0316866001600160a01b0316336001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8685604051808381526020018281526020019250505060405180910390a4505050505050565b600061ffff8211156124cd5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201526536206269747360d01b6064820152608401611995565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156124cd5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e743235360000000000000000000000000000000000000000000000006064820152608401611995565b6135cd837fa9059cbb000000000000000000000000000000000000000000000000000000008484613e8f565b613603576040517ffb7f507900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6001600160a01b03821661365e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401611995565b80600260008282546136709190614344565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166137435760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401611995565b6001600160a01b038216600090815260208190526040902054818110156137d25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401611995565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03811660009081526007602052604090208054600181018255905b50919050565b600061107c613865612c06565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006138b187878787613ee2565b915091506138be81613fa6565b5095945050505050565b6000808212156124cd5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401611995565b606060006111938361410b565b60006b033b2e3c9fd0803ce80000006139528361394c600c546001600160801b031690565b90614167565b613968906b033b2e3c9fd0803ce8000000614344565b600c5461268d9190600160801b90046001600160801b031661438f565b600a54600090600160c81b900464ffffffffff16428190036139a957600091505090565b6123e581613b3c565b600a54600090600160a01b900464ffffffffff16428190036139d657600091505090565b6123e58161418c565b600080829050601f81511115613a2357826040517f305a27a900000000000000000000000000000000000000000000000000000000815260040161199591906145bd565b8051613a2e8261460b565b179392505050565b600080613a448686866141c7565b90506001836002811115613a5a57613a5a61462f565b148015613a77575060008480613a7257613a726143a6565b868809115b15613a8a57613a87600182614344565b90505b95945050505050565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690635f259aba906024015b602060405180830381865afa158015613b18573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107c9190614645565b600061107c8261394c600b546bffffffffffffffffffffffff600160a01b9091041690565b60006bffffffffffffffffffffffff8211156124cd5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b6064820152608401611995565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063d4eb5db090602401613afb565b60095460ff1661140a5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401611995565b60006323b872dd60e01b905060006040518281528560048201528460248201528360448201526020600060648360008b5af19150508015613cea573d8015613ce057600160005114601f3d11169150613ce8565b6000873b1191505b505b80613d21576040517ff405907100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6040517f6fbc6f6b0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636fbc6f6b90602401613afb565b6000818152600183016020526040812054613ddc5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561107c565b50600061107c565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690633a41ec6490602401613afb565b60606000613e5d836142b9565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b60006040518481528360048201528260248201526020600060448360008a5af19150508015612500573d8015613ed157600160005114601f3d11169150613ed9565b6000863b1191505b50949350505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613f195750600090506003613f9d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613f6d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613f9657600060019250925050613f9d565b9150600090505b94509492505050565b6000816004811115613fba57613fba61462f565b03613fc25750565b6001816004811115613fd657613fd661462f565b036140235760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401611995565b60028160048111156140375761403761462f565b036140845760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401611995565b60038160048111156140985761409861462f565b036117965760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401611995565b60608160000180548060200260200160405190810160405280929190818152602001828054801561415b57602002820191906000526020600020905b815481526020019060010190808311614147575b50505050509050919050565b60006301e133806141788342614667565b614182908561438f565b61119391906143bc565b60006b033b2e3c9fd0803ce80000006141b18361394c600c546001600160801b031690565b600e5461268d91906001600160801b031661438f565b6000808060001985870985870292508281108382030391505080600003614201578382816141f7576141f76143a6565b0492505050611193565b8084116142505760405162461bcd60e51b815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f7700000000000000000000006044820152606401611995565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b600060ff8216601f81111561107c576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181811c9082168061430e57607f821691505b60208210810361385257634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561107c5761107c61432e565b634e487b7160e01b600052604160045260246000fd5b61ffff8281168282160390808211156143885761438861432e565b5092915050565b808202811582820484141761107c5761107c61432e565b634e487b7160e01b600052601260045260246000fd5b6000826143d957634e487b7160e01b600052601260045260246000fd5b500490565b6001600160801b038181168382160190808211156143885761438861432e565b60007f8000000000000000000000000000000000000000000000000000000000000000820361442f5761442f61432e565b5060000390565b81810360008312801583831316838312821617156143885761438861432e565b6001600160801b038281168282160390808211156143885761438861432e565b80820182811260008312801582168215821617156144965761449661432e565b505092915050565b601f82111561360357600081815260208120601f850160051c810160208610156144c55750805b601f850160051c820191505b81811015613d21578281556001016144d1565b815167ffffffffffffffff8111156144fe576144fe614357565b6145128161450c84546142fa565b8461449e565b602080601f831160018114614547576000841561452f5750858301515b600019600386901b1c1916600185901b178555613d21565b600085815260208120601f198616915b8281101561457657888601518255948401946001909101908401614557565b50858210156145945787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60ff818116838216019081111561107c5761107c61432e565b600060208083528351808285015260005b818110156145ea578581018301518582016040015282016145ce565b506000604082860101526040601f19601f8301168501019250505092915050565b805160208083015191908110156138525760001960209190910360031b1b16919050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561465757600080fd5b8151801515811461119357600080fd5b8181038181111561107c5761107c61432e56fea26469706673582212203ac48f958be136ae2a496a5a3c71bf04b7bce63b6dc6b54d4d8c9f5184656d9064736f6c634300081100330000000000000000000000009ea7b04da02a5373317d745c1571c84aad03321d000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000ff767bdcd76f6e5af75957e15d5b2a8bfc43b4bf00000000000000000000000000000000000000000000000000005af3107a400000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000d547261646520555344432076330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076455534443563300000000000000000000000000000000000000000000000000