[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "investor", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "depToken", "type": "address" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "afiContract", "type": "address" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "afiContract", "type": "address" } ], "name": "InitializedToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "afiContract", "type": "address" } ], "name": "SetInitialValues", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "afiContract", "type": "address" }, { "indexed": false, "internalType": "address", "name": "tok", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "SupplyAave", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "afiContract", "type": "address" }, { "indexed": false, "internalType": "address", "name": "tok", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "SupplyCompV3", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "afiContract", "type": "address" }, { "indexed": false, "internalType": "address", "name": "tok", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "SupplyCompound", "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": "afiContract", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "UpdatePoolData", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "lock", "type": "bool" } ], "name": "UpdateShares", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "investor", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "withdrawnToken", "type": "address" } ], "name": "Withdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "afiContract", "type": "address" }, { "indexed": false, "internalType": "address", "name": "tok", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "WithdrawAave", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "afiContract", "type": "address" }, { "indexed": false, "internalType": "address", "name": "tok", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "WithdrawCompound", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "afiContract", "type": "address" }, { "indexed": false, "internalType": "address", "name": "tok", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "WithdrawCompoundV3", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "tok", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "_supplyAave", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tok", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "_supplyCompV3", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tok", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "_supplyCompound", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tok", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "_withdrawAave", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tok", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "_withdrawCompound", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tok", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "_withdrawCompoundV3", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tok", "type": "address" } ], "name": "addToWhitelist", "outputs": [], "stateMutability": "nonpayable", "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": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_updateTVL", "type": "bool" } ], "name": "checkTVL", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "compoundV3Comet", "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": "amount", "type": "uint256" }, { "internalType": "address", "name": "iToken", "type": "address" }, { "internalType": "bool", "name": "_updateTVL", "type": "bool" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "depositUserNav", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tok", "type": "address" }, { "internalType": "address", "name": "wallet", "type": "address" } ], "name": "emergencyWithdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getDelayModule", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getInputToken", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" }, { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPreSwapDepositLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getProportions", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRebalanceController", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTVLandRebalContractandType", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getUTokens", "outputs": [ { "internalType": "address[]", "name": "uTokensArray", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getcSwapCounter", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getplatformWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" }, { "internalType": "string", "name": "tokenName", "type": "string" }, { "internalType": "string", "name": "tokenSymbol", "type": "string" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "bool", "name": "_isActiveRebalanced", "type": "bool" }, { "internalType": "contract IAFiStorage", "name": "_aFiStorage", "type": "address" }, { "internalType": "address[]", "name": "_nonOverlappingITokens", "type": "address[]" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "iToken", "type": "address[]" }, { "internalType": "address[]", "name": "_teamWallets", "type": "address[]" }, { "internalType": "contract IPassiveRebal", "name": "_rebalContract", "type": "address" }, { "internalType": "address", "name": "_aFiManager", "type": "address" } ], "name": "initializeToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isAfiTransferrable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "oToken", "type": "address" } ], "name": "isOTokenWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isPaused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" }, { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isPausedForWithdrawals", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastTVLupdate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "nonWithdrawableShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "pauseUnpauseDeposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "pauseWithdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "reinitializeHappened", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tok", "type": "address" }, { "internalType": "address", "name": "swapTok", "type": "address" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint256", "name": "amountOut", "type": "uint256" } ], "name": "removeFromWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "wallet", "type": "address" }, { "internalType": "uint256", "name": "profitShare", "type": "uint256" }, { "internalType": "address", "name": "oToken", "type": "address" } ], "name": "sendProfitOrFeeToManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_afiTransferrable", "type": "bool" } ], "name": "setAfiTransferability", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_delayModule", "type": "address" } ], "name": "setDelayModule", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_pauseDepositController", "type": "address" } ], "name": "setRebalanceController", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "totalQueuedShares", "type": "uint256" } ], "name": "setUnstakeData", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" }, { "internalType": "address[]", "name": "", "type": "address[]" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "_platformWallet", "type": "address" } ], "name": "setplatformWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bool", "name": "lock", "type": "bool" } ], "name": "stakeShares", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "inputToken", "type": "address" }, { "internalType": "address", "name": "uTok", "type": "address" }, { "internalType": "uint256", "name": "amountAsPerProportion", "type": "uint256" }, { "internalType": "uint256", "name": "_deadline", "type": "uint256" }, { "internalType": "address", "name": "middleToken", "type": "address" }, { "internalType": "uint256", "name": "minimumReturnAmount", "type": "uint256" } ], "name": "swap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "address", "name": "midTok", "type": "address" }, { "internalType": "uint256", "name": "minimumReturnAmount", "type": "uint256" } ], "name": "swapViaStorageOrManager", "outputs": [ { "internalType": "uint256", "name": "_amountOut", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tLContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tok", "type": "address" }, { "internalType": "bool", "name": "_pause", "type": "bool" } ], "name": "togglePauseDepositTokenForWithdrawals", "outputs": [], "stateMutability": "nonpayable", "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": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "tvlUpdatePeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tvlUpdated", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_depositTokens", "type": "address[]" } ], "name": "underlyingTokensStaking", "outputs": [ { "internalType": "uint256", "name": "_totalProp", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_defaultProportion", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "_uTokensProportion", "type": "uint256[]" } ], "name": "updateDp", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_nonOverlappingITokens", "type": "address[]" } ], "name": "updateInputTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bool", "name": "lock", "type": "bool" }, { "internalType": "bool", "name": "queue", "type": "bool" }, { "internalType": "bool", "name": "unqueue", "type": "bool" }, { "internalType": "uint256", "name": "newNAV", "type": "uint256" } ], "name": "updateLockedTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_pool", "type": "uint256" } ], "name": "updatePool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "updatePoolData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_preSwapDepositLimit", "type": "uint256" } ], "name": "updatePreSwapDepositLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tvlUpdatePeriod", "type": "uint256" } ], "name": "updateTVLUpdatePeriod", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newTL", "type": "address" } ], "name": "updateTimeLockContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_uTokens", "type": "address[]" } ], "name": "updateuTokAndProp", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "userLockedAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "address", "name": "oToken", "type": "address" }, { "internalType": "uint256", "name": "_shares", "type": "uint256" } ], "name": "validateWithdraw", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "vaultReInitialized", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_shares", "type": "uint256" }, { "internalType": "address", "name": "oToken", "type": "address" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint256[]", "name": "minimumReturnAmount", "type": "uint256[]" }, { "internalType": "bool", "name": "_updateTVL", "type": "bool" }, { "internalType": "uint256", "name": "swapMethod", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6080604052600e80546001600160a01b03191673b60c61dbb7456f024f9338c739b02be68e3f545c179055348015610035575f80fd5b50604051616039380380616039833981016040819052610054916101a3565b81816003610062838261028c565b50600461006f828261028c565b505060016005555061008033610099565b5050600880546001600160a01b03191633179055610346565b600780546001600160a01b03191690556100b2816100b5565b50565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610129575f80fd5b81516001600160401b0381111561014257610142610106565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017057610170610106565b604052818152838201602001851015610187575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f80604083850312156101b4575f80fd5b82516001600160401b038111156101c9575f80fd5b6101d58582860161011a565b602085015190935090506001600160401b038111156101f2575f80fd5b6101fe8582860161011a565b9150509250929050565b600181811c9082168061021c57607f821691505b60208210810361023a57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561028757805f5260205f20601f840160051c810160208510156102655750805b601f840160051c820191505b81811015610284575f8155600101610271565b50505b505050565b81516001600160401b038111156102a5576102a5610106565b6102b9816102b38454610208565b84610240565b6020601f8211600181146102eb575f83156102d45750848201515b5f19600385901b1c1916600184901b178455610284565b5f84815260208120601f198516915b8281101561031a57878501518255602094850194600190920191016102fa565b508482101561033757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b615ce6806103535f395ff3fe608060405234801561000f575f80fd5b5060043610610443575f3560e01c80638da5cb5b11610237578063cdc7fcc211610135578063e30c3978116100bf578063ebd462cb11610084578063ebd462cb14610a13578063ee67644a14610a26578063eefad74714610a39578063f2fde38b14610a4c578063ff98c66914610a5f575f80fd5b8063e30c3978146109b3578063e353d303146109c4578063e43252d7146109d7578063e52e43da146109ea578063eb4e545414610a00575f80fd5b8063d61daa6111610105578063d61daa6114610962578063d7f587031461096a578063db31c5fb1461097b578063dc0dcc1d1461098d578063dd62ed3e146109a0575f80fd5b8063cdc7fcc214610913578063cf30f36914610929578063d291168b1461093c578063d381b77e1461094f575f80fd5b8063a457c2d7116101c1578063b503b4a311610186578063b503b4a3146108bc578063b5504a11146108cf578063badd069b146108e0578063c1a0e61f146108f3578063c4aa09d314610900575f80fd5b8063a457c2d71461082a578063a5db4dde1461083d578063a9059cbb14610850578063acc8860714610863578063b187bd261461088e575f80fd5b806393683ee71161020757806393683ee7146107bf57806395d89b41146107e95780639908fc8b146107f15780639b0cad32146108045780639b608d2914610817575f80fd5b80638da5cb5b1461077f5780639153db211461079057806391ae51d114610799578063929a51da146107ac575f80fd5b80635e2b48f711610344578063715018a6116102ce57806383acdd421161029357806383acdd42146106fc57806383df67471461070f5780638400e67a1461072257806386a0da73146107445780638d43c9cf14610757575f80fd5b8063715018a61461069a57806379ba5097146106a25780637a2d4e05146106aa5780637b59ae67146106bd5780637b77ba2f146106e9575f80fd5b806369ede3531161031457806369ede353146106265780636acf1e67146106395780636addbb581461064c5780636ecc45f51461065f57806370a0823114610672575f80fd5b80635e2b48f7146105e457806362b173d0146105ed5780636378f8f1146106005780636382d9ad14610613575f80fd5b806339509351116103d05780634b496281116103955780634b496281146105855780635012c3911461059857806351eb05a6146105ab5780635265a489146105be5780635a8dca1f146105d1575f80fd5b8063395093511461051e5780633ee0bb70146105315780633f67f10d14610544578063458b0bc41461054c578063496614b514610571575f80fd5b8063221941c411610416578063221941c4146104af57806323b872dd146104c257806329225288146104d55780632bfc9467146104ea578063313ce56714610509575f80fd5b8063017131c21461044757806306fdde031461045c578063095ea7b31461047a57806318160ddd1461049d575b5f80fd5b61045a6104553660046147e2565b610a82565b005b610464610a8f565b6040516104719190614827565b60405180910390f35b61048d610488366004614858565b610b1f565b6040519015158152602001610471565b6002545b604051908152602001610471565b61045a6104bd3660046149c0565b610b38565b61048d6104d0366004614a23565b610b6c565b6104dd610ba3565b6040516104719190614aa4565b6104a16104f8366004614ab6565b60236020525f908152604090205481565b60125b60405160ff9091168152602001610471565b61048d61052c366004614858565b610c02565b61045a61053f366004614ae9565b610c23565b601b546104a1565b600e546001600160a01b03165b6040516001600160a01b039091168152602001610471565b60165461048d90600160a01b900460ff1681565b61045a610593366004614b04565b610c5d565b61045a6105a6366004614bd4565b610e39565b61045a6105b93660046147e2565b610e76565b61045a6105cc366004614c05565b610f06565b61045a6105df366004614c44565b610f19565b6104a1601f5481565b61045a6105fb366004614858565b610fc4565b61045a61060e366004614ab6565b6110cc565b61045a610621366004614c78565b611100565b61045a610634366004614858565b611210565b61045a610647366004614caf565b6112d8565b61045a61065a366004614d14565b6115f2565b61045a61066d366004614bd4565b61182c565b6104a1610680366004614ab6565b6001600160a01b03165f9081526020819052604090205490565b61045a611847565b61045a61185a565b61045a6106b8366004614ae9565b6118d4565b600954601354601754604080519384526001600160a01b03909216602084015290820152606001610471565b61045a6106f7366004614ae9565b6118f6565b61045a61070a366004614858565b6119df565b61045a61071d366004614d57565b611af8565b61048d610730366004614ab6565b60246020525f908152604090205460ff1681565b61045a610752366004614ae9565b611dda565b610559610765366004614ab6565b60216020525f90815260409020546001600160a01b031681565b6006546001600160a01b0316610559565b6104a160205481565b61045a6107a73660046147e2565b611e14565b61045a6107ba366004614e00565b611e21565b6104a16107cd366004614858565b601c60209081525f928352604080842090915290825290205481565b610464611e85565b6104a16107ff366004614e31565b611e94565b61045a610812366004614e7f565b611f80565b61045a610825366004614858565b61223d565b61048d610838366004614858565b612301565b61045a61084b366004614ab6565b61237b565b61048d61085e366004614858565b6123af565b61048d610871366004614ab6565b6001600160a01b03165f908152600f602052604090205460ff1690565b60155460ff600160a01b8204811691600160a81b900416604080519215158352901515602083015201610471565b61045a6108ca366004614858565b6123d8565b6016546001600160a01b0316610559565b61045a6108ee366004614a23565b6124ae565b601e5461050c9060ff1681565b61045a61090e366004614ab6565b612513565b61091b612579565b604051610471929190614f94565b61045a610937366004614fc1565b612628565b61045a61094a366004614fed565b6126af565b6104a161095d366004614e31565b612872565b601a546104a1565b6008546001600160a01b0316610559565b60185461048d90610100900460ff1681565b61045a61099b366004614858565b612894565b6104a16109ae366004614c78565b612944565b6007546001600160a01b0316610559565b6104a16109d2366004614bd4565b61296e565b61045a6109e5366004614ab6565b612c11565b6109f2612e14565b604051610471929190615074565b6104a1610a0e366004614ab6565b612ed6565b61045a610a21366004614ae9565b612f1b565b602254610559906001600160a01b031681565b61045a610a47366004614ab6565b612f41565b61045a610a5a366004614ab6565b612f75565b610a72610a6d3660046147e2565b612fe6565b6040516104719493929190615098565b610a8a6130df565b602055565b606060038054610a9e906150d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610aca906150d0565b8015610b155780601f10610aec57610100808354040283529160200191610b15565b820191905f5260205f20905b815481529060010190602001808311610af857829003601f168201915b5050505050905090565b5f33610b2c8185856130f6565b60019150505b92915050565b610b40613219565b8051610b539060119060208401906146f6565b508151610b679060129060208501906146f6565b505050565b5f610b78848484613230565b33610b84858285613380565b610b8f8585856133f2565b610b9885613581565b506001949350505050565b60606010805480602002602001604051908101604052809291908181526020018280548015610b1557602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610bdb575050505050905090565b5f33610b2c818585610c148383612944565b610c1e919061511c565b6130f6565b601554601954610c3f916001600160a01b0390811691166135b8565b60168054911515600160a01b0260ff60a01b19909216919091179055565b602254601954610c79916001600160a01b0390811691166135b8565b6022546001600160a01b03163303610d0d578315610cd1576001600160a01b0386165f90815260236020526040902054610cb490869061511c565b6001600160a01b0387165f90815260236020526040902055610d0d565b6001600160a01b0386165f90815260236020526040902054610cf490869061512f565b6001600160a01b0387165f908152602360205260409020555b8215610dc5576001600160a01b0386165f9081526020819052604081208054879290610d3a90849061512f565b90915550506001600160a01b0386165f90815260208190526040902054158015610d7957506001600160a01b0386165f90815260236020526040902054155b15610d97576001600160a01b0386165f908152600d60205260408120555b6040518581525f906001600160a01b038816905f80516020615c918339815191529060200160405180910390a35b8115610e31576001600160a01b0386165f908152600d602090815260408083208490559082905281208054879290610dfe90849061511c565b90915550506040518581526001600160a01b038716905f905f80516020615c918339815191529060200160405180910390a35b505050505050565b610e5f610e4e6006546001600160a01b031690565b6015546001600160a01b03166135b8565b8051610e7290601d90602084019061473f565b5050565b60195460405163fd6046d760e01b81523060048201525f916001600160a01b03169063fd6046d7906024016040805180830381865afa158015610ebb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610edf919061514d565b509050610eec338261360c565b610e7282600955601e805460ff1916600117905542601f55565b610f0e613656565b610b67818484613672565b602254610f309084906001600160a01b0316613686565b8015610f4557610f4083836136d0565b610f67565b6001600160a01b0383165f90815260236020526040902054610f67908361372f565b610f758383835f805f610c5d565b604080516001600160a01b0385168152602081018490528215158183015290517ffa456901ceda483c4dee8fd279b380e7b9487fc8614bbb2401c665e9d9b456cf9181900360600190a1505050565b610fcc613768565b6001600160a01b038281165f908152600b60205260409081902054905163852a12e360e01b81526004810184905291169063852a12e3906024016020604051808303815f875af1158015611022573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611046919061517a565b156110855760405162461bcd60e51b815260040161107c906020808252600490820152630414232360e41b604082015260600190565b60405180910390fd5b306001600160a01b03167f9f37b07742c284c91df0990b2a4c30361e5e7834eecc27f429d720b2df19d8ed83836040516110c0929190615191565b60405180910390a25050565b6110d461377f565b6110de815f613686565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6111086130df565b5f61117483601080548060200260200160405190810160405280929190818152602001828054801561116157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611143575b50505050506137d990919063ffffffff16565b9150505f6111e184600a80548060200260200160405190810160405280929190818152602001828054801561116157602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116111435750505050506137d990919063ffffffff16565b9150506111ed82613841565b6111f681613841565b61120a84846112058730613878565b613672565b50505050565b611218613768565b61122a826112246138eb565b83613965565b6112326138eb565b60405163e8eda9df60e01b81526001600160a01b038481166004830152602482018490523060448301525f6064830152919091169063e8eda9df906084015f604051808303815f87803b158015611287575f80fd5b505af1158015611299573d5f803e3d5ffd5b50505050306001600160a01b03167fa57b46a8af6e9ef648f5819029a5df08c3692a733b31ed1ccd70178565e70dbc83836040516110c0929190615191565b6112e06139ff565b60145460405163b2a1d07960e01b81526001600160a01b039091169063b2a1d079906113129030908590600401615191565b602060405180830381865afa15801561132d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135191906151aa565b156113865760405162461bcd60e51b8152602060048201526005602482015264414230313160d81b604482015260640161107c565b60155461139c90600160a81b900460ff16613841565b6113a73386886124ae565b6113b0826118f6565b5f600254876009546113c291906151c5565b6113cc91906151dc565b90505f604051806101600160405280306001600160a01b03168152602001838152602001886001600160a01b03168152602001601a548152602001601080548060200260200160405190810160405280929190818152602001828054801561145b57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161143d575b50505050508152602001600a8054806020026020016040519081016040528092919081815260200182805480156114b957602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161149b575b50505091835250506020808201899052604080830189905260095460608401526002546080840152335f908152600d9092528082205460a0909301929092526014549151635afb9ea760e01b8152929350916001600160a01b0390911690635afb9ea79061152f9085908d9089906004016151fb565b6020604051808303815f875af115801561154b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156f919061517a565b905061157b338a613a58565b61158e6115888930613878565b8261372f565b61159733613581565b6115a2883383613672565b604080518a81526001600160a01b038a16602082015233917f56c54ba9bd38d8fd62012e42c7ee564519b09763c426d331b3661b537ead19b2910160405180910390a2505050610e316001600555565b6115fa61377f565b6001600160a01b0384165f908152600f602052604090205461161f9060ff1615613841565b6001600160a01b0383165f908152600f60205260409020546116449060ff1615613841565b6001600160a01b0384165f908152600f60205260408120805460ff19169055601a54611671908690613acd565b11156116fc576116818484613686565b601454601a5460405163a1a4194360e01b81526001600160a01b03878116600483015260248201929092528582166044820152606481018590526084810184905291169063a1a419439060a4015f604051808303815f87803b1580156116e5575f80fd5b505af11580156116f7573d5f803e3d5ffd5b505050505b601354604051631043ce5360e11b81526001600160a01b03909116906320879ca69061172f90600a90889060040161531d565b5f60405180830381865afa158015611749573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261177091908101906153aa565b805161178491600a9160209091019061473f565b5060195461179d9085906001600160a01b03165f613b0c565b601354604051631043ce5360e11b81526001600160a01b03909116906320879ca6906117d090601d90889060040161531d565b5f60405180830381865afa1580156117ea573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261181191908101906153aa565b805161182591601d9160209091019061473f565b5050505050565b611834613219565b8051610e7290601090602084019061473f565b61184f61377f565b6118585f613b20565b565b60075433906001600160a01b031681146118c85760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161107c565b6118d181613b20565b50565b6118dc61377f565b601880549115156101000261ff0019909216919091179055565b601e5460ff1615806119155750602054601f54611913904261512f565b115b156119d25780156119a257601454604051634aaad50560e11b81523060048201526118d1916001600160a01b031690639555aa0a90602401602060405180830381865afa158015611968573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061198c919061517a565b600955601e805460ff1916600117905542601f55565b60405162461bcd60e51b8152602060048201526005602482015264414231313160d81b604482015260640161107c565b601e805460ff1916905550565b6119e7613768565b6001600160a01b038083165f908152600b6020526040902054611a0d9184911683613965565b6001600160a01b038281165f908152600b60205260409081902054905163140e25ad60e31b81526004810184905291169063a0712d68906024016020604051808303815f875af1158015611a63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a87919061517a565b15611abd5760405162461bcd60e51b815260040161107c906020808252600490820152630828462760e31b604082015260600190565b306001600160a01b03167f6800e136a45d69a7dfd8d33a1e2a18f0eba70d7f4f64f276f37a8c28e464f35683836040516110c0929190615191565b611b006139ff565b611b7f826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6391906153db565b611b6e90600a6154de565b611b7890856151dc565b606461372f565b611b88816118f6565b6009546001600160a01b0383165f908152600f6020526040902054611bb09060ff1615613841565b601554611bc690600160a01b900460ff16613841565b611bdb6001600160a01b038416333087613b39565b5f6064611be98660016151c5565b611bf391906151dc565b600e54909150611c0e9085906001600160a01b031683613672565b611c18818661512f565b601454601a54604051634b7aabc160e11b81526004810191909152602481018390526001600160a01b0387811660448301529297509116906396f55782906064015f604051808303815f87803b158015611c70575f80fd5b505af1158015611c82573d5f803e3d5ffd5b5050601454600254335f908152600d60209081526040808320549183905280832054905162206a9160e61b8152306004820152602481018d9052604481018a905260648101949094526001600160a01b038b8116608486015260a485019290925260c48401529094508493509091169063081aa4409060e4016040805180830381865afa158015611d15573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d3991906154ec565b335f818152600d602052604090208290559193509150611d599083613ba4565b335f908152601c60209081526040808320601a54845290915281208054849290611d8490849061511c565b9091555050604080518881526001600160a01b038816602082015233917fe31c7b8d08ee7db0afa68782e1028ef92305caeea8626633ad44d413e30f6b2f910160405180910390a250505050610b676001600555565b601654601954611df6916001600160a01b0390811691166135b8565b60158054911515600160a01b0260ff60a01b19909216919091179055565b611e1c61377f565b601b55565b611e296139ff565b611e31613219565b611e3a81613c4e565b306001600160a01b03167f3310a121cec0d1d7668d3b1b153c93764411ec4298781afab5e18639a2c586d582604051611e739190614827565b60405180910390a26118d16001600555565b606060048054610a9e906150d0565b5f611e9d613f0c565b856001600160a01b0316876001600160a01b031614158015611ec657506001600160a01b038316155b15611f4f576019546040516309e8d37160e41b81526001600160a01b038089166004830152611f48928a928a928a928a92911690639e8d371090602401602060405180830381865afa158015611f1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f42919061550e565b87613f23565b9050611f76565b856001600160a01b0316876001600160a01b031614611f7657611f48878787878787613f23565b9695505050505050565b611f886139ff565b601854611f979060ff16613841565b611fa1875f613686565b6003611fad878261556d565b506004611fba868261556d565b50611fc487613b20565b600880546001600160a01b03808a166001600160a01b03199283161790925560148054928516929091168217905560408051630c10fd1960e11b81529051631821fa32916004808201926020929091908290030181865afa15801561202b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061204f919061550e565b601980546001600160a01b0319166001600160a01b0392909216919091179055805161208290601d90602084019061473f565b505f8480602001905181019061209891906156cf565b61010081015160175568056bc75e2d63100000601b556018805462010000600160b01b03191633620100000217905590506120d285613c4e565b601180546120e291601291614792565b506040516340749cdd60e11b8152306004820152600160248201526001600160a01b038416906380e939ba906044015f604051808303815f87803b158015612128575f80fd5b505af115801561213a573d5f803e3d5ffd5b505060405163d607fb6d60e01b815230600482015286151560248201526001600160a01b038616925063d607fb6d91506044015f604051808303815f87803b158015612184575f80fd5b505af1158015612196573d5f803e3d5ffd5b505060185460405163b9d0a27f60e01b8152620100009091046001600160a01b0316925063b9d0a27f91506121d2903090600190600401615191565b5f604051808303815f87803b1580156121e9575f80fd5b505af11580156121fb573d5f803e3d5ffd5b50506040513092507f908408e307fc569b417f6cbec5d5a06f44a0a505ac0479b47d421a4b2fd6a1e691505f90a2506122346001600555565b50505050505050565b612245613768565b61224d6138eb565b604051631a4ca37b60e21b81526001600160a01b0384811660048301526024820184905230604483015291909116906369328dec906064016020604051808303815f875af11580156122a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122c5919061517a565b50306001600160a01b03167f783bda7b5d193062246299e40499ba924fdc69ecc31b95934e2f7daaa73e709a83836040516110c0929190615191565b5f338161230e8286612944565b90508381101561236e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161107c565b610b9882868684036130f6565b61238361377f565b61238d815f613686565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b5f6123bb338484613230565b6123c63384846133f2565b6123cf33613581565b50600192915050565b6123e0613768565b6001600160a01b038083165f908152602160205260409020546124069184911683613965565b6001600160a01b038083165f9081526021602052604090819020549051631e573fb760e31b815291169063f2b9fdb8906124469085908590600401615191565b5f604051808303815f87803b15801561245d575f80fd5b505af115801561246f573d5f803e3d5ffd5b50505050306001600160a01b03167f1fd4ff696062a0436d0dca882680ced46d27fb162e3c54d07f4fb53fee61777a83836040516110c0929190615191565b6001600160a01b0382165f908152600f60205260409020546124d39060ff1615613841565b6001600160a01b0382165f908152602460205260409020546124f79060ff16613841565b61250183826136d0565b610b678167016345785d8a000061372f565b61251b6141fd565b6001600160a01b0381166125575760405162461bcd60e51b815260206004820152600360248201526227a22d60e91b604482015260640161107c565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b60608060116012818054806020026020016040519081016040528092919081815260200182805480156125c957602002820191905f5260205f20905b8154815260200190600101908083116125b5575b505050505091508080548060200260200160405190810160405280929190818152602001828054801561261957602002820191905f5260205f20905b815481526020019060010190808311612605575b50505050509050915091509091565b61263061377f565b8015612660576001600160a01b0382165f908152600f602052604090205461265b9060ff1615613841565b612685565b6001600160a01b0382165f908152602460205260409020546126859060ff1615613841565b6001600160a01b03919091165f908152602460205260409020805460ff1916911515919091179055565b6126b76139ff565b6018546126c69060ff16613841565b6018805460ff19166001179055601580546001600160a01b038084166001600160a01b031992831617909255601380548584169216919091179055601454604051635c1a4a2f60e01b8152911690635c1a4a2f9061272a903090879060040161586d565b5f604051808303815f87803b158015612741575f80fd5b505af1158015612753573d5f803e3d5ffd5b5050855191505f90505b818110156127d75761278786828151811061277a5761277a615890565b602002602001015161423c565b6001600f5f88848151811061279e5761279e615890565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905560010161275d565b5060185460405163b9d0a27f60e01b8152620100009091046001600160a01b03169063b9d0a27f90612810903090600290600401615191565b5f604051808303815f87803b158015612827575f80fd5b505af1158015612839573d5f803e3d5ffd5b50506040513092507f3b0ad68ac55f1f4914e7c734e21011eedf8fd122a183cf5334cdf88cffb55c8c91505f90a25061120a6001600555565b5f61287b613656565b612889878787878787613f23565b979650505050505050565b61289c613768565b6001600160a01b038083165f908152602160205260409081902054905163f3fef3a360e01b815291169063f3fef3a3906128dc9085908590600401615191565b5f604051808303815f87803b1580156128f3575f80fd5b505af1158015612905573d5f803e3d5ffd5b50505050306001600160a01b03167fbd6a469384672cb2b2d6cc48f157c321dd75aa3d8e019a74df6b09a59b1be5e483836040516110c0929190615191565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b5f612977613f0c565b5f805b8351811015612a5e5760145484516001600160a01b039091169063970183ca908690849081106129ac576129ac615890565b60200260200101516129d98785815181106129c9576129c9615890565b6020026020010151601a54613acd565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201525f6044820152606401602060405180830381865afa158015612a26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a4a919061517a565b612a54908361511c565b915060010161297a565b50612a6b81601b5461372f565b601354604051630bf6f34d60e01b81523060048201525f916001600160a01b031690630bf6f34d906024016020604051808303815f875af1158015612ab2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ad6919061517a565b9050806001148015612ae957505f601a54115b8015612aff5750601654600160a01b900460ff16155b15612ba75760135460155460145460405163385e4d1f60e21b81526001600160a01b039384169363e179347c93612b4593309391831692169060109088906004016158a4565b5f604051808303815f875af1158015612b60573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612b8791908101906158e9565b81519094508490612b9f9060119060208501906146f6565b505050612bcb565b601a541580612bbf5750601654600160a01b900460ff165b15612bcb576298968092505b601654600160a01b900460ff1615612beb576016805460ff60a01b191690555b601a8054905f612bfa8361592c565b9091555050601e805460ff19169055509092915050565b612c1961377f565b6001600160a01b0381165f908152600f6020526040902054612c3d9060ff16613841565b5f612ca782600a80548060200260200160405190810160405280929190818152602001828054801561116157602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116111435750505050506137d990919063ffffffff16565b9150505f612d1483601080548060200260200160405190810160405280929190818152602001828054801561116157602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116111435750505050506137d990919063ffffffff16565b91505081612d2557612d258361423c565b5f612d8f84601d80548060200260200160405190810160405280929190818152602001828054801561116157602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116111435750505050506137d990919063ffffffff16565b91505081158015612d9e575080155b15612dee57601d80546001810182555f919091527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0180546001600160a01b0319166001600160a01b0386161790555b5050506001600160a01b03165f908152600f60205260409020805460ff19166001179055565b606080600a601d81805480602002602001604051908101604052809291908181526020018280548015612e6e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311612e50575b505050505091508080548060200260200160405190810160405280929190818152602001828054801561261957602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311612eaa5750505050509050915091509091565b6001600160a01b0381165f908152602081905260408120548103612efb57505f919050565b506001600160a01b03165f908152600d602052604090205490565b919050565b612f236130df565b60158054911515600160a81b0260ff60a81b19909216919091179055565b612f4961377f565b612f53815f613686565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b612f7d6141fd565b600780546001600160a01b0383166001600160a01b03199091168117909155612fae6006546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6060805f80612ff3613f0c565b6002548515613013578560025f82825461300d919061512f565b90915550505b600a6010600954838380548060200260200160405190810160405280929190818152602001828054801561306e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613050575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156130c857602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116130aa575b505050505092509450945094509450509193509193565b6008546118589033906001600160a01b031661360c565b6001600160a01b0383166131585760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161107c565b6001600160a01b0382166131b95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161107c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6015546118589033906001600160a01b031661360c565b60185461324590610100900460ff1615613841565b6001600160a01b0383165f818152601c60209081526040808320601a548452825280832054938352602390915290205484916132809161511c565b6001600160a01b0382165f908152602081905260409020546132a2919061512f565b8211156132d95760405162461bcd60e51b8152602060048201526005602482015264414233333360d81b604482015260640161107c565b6001600160a01b0383165f908152602081905260409020546132fc90839061511c565b6001600160a01b0382165f908152600d602052604090205461331f9084906151c5565b6001600160a01b0385165f9081526020818152604080832054600d9092529091205461334b91906151c5565b613355919061511c565b61335f91906151dc565b6001600160a01b039093165f908152600d6020526040902092909255505050565b5f61338b8484612944565b90505f19811461120a57818110156133e55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161107c565b61120a84848484036130f6565b6001600160a01b0383166134565760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161107c565b6001600160a01b0382166134b85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161107c565b6001600160a01b0383165f908152602081905260409020548181101561352f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161107c565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290925f80516020615c91833981519152910160405180910390a361120a565b6001600160a01b0381165f9081526020819052604081205490036118d1576001600160a01b03165f908152600d6020526040812055565b336001600160a01b03831614806135d75750336001600160a01b038216145b610e725760405162461bcd60e51b815260040161107c9060208082526004908201526320a1199960e11b604082015260600190565b806001600160a01b0316826001600160a01b031614610e725760405162461bcd60e51b815260040161107c906020808252600490820152630414233360e41b604082015260600190565b601554601454611858916001600160a01b0390811691166135b8565b610b676001600160a01b038416838361429c565b806001600160a01b0316826001600160a01b031603610e725760405162461bcd60e51b815260040161107c906020808252600490820152634142303560e01b604082015260600190565b6001600160a01b0382165f818152601c60209081526040808320601a5484528252808320549383526023909152902054610e729161370d9161511c565b6001600160a01b0384165f90815260208190526040902054611588919061512f565b80821015610e725760405162461bcd60e51b815260040161107c9060208082526004908201526310508c8d60e21b604082015260600190565b6014546118589033906001600160a01b031661360c565b6006546001600160a01b031633146118585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161107c565b81515f908190815b8181101561383057846001600160a01b031686828151811061380557613805615890565b60200260200101516001600160a01b0316036138285792506001915061383a9050565b6001016137e1565b505f195f92509250505b9250929050565b80156118d15760405162461bcd60e51b815260040161107c906020808252600490820152634142303360e01b604082015260600190565b6040516370a0823160e01b81526001600160a01b0382811660048301525f91908416906370a08231906024015b602060405180830381865afa1580156138c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138e4919061517a565b9392505050565b5f732f39d218133afab8f2b819b1066c7e434ad94e9e6001600160a01b031663026b1d5f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561393c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613960919061550e565b905090565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156139b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139d6919061517a565b90508181101561120a5761120a836139ee838561512f565b6001600160a01b03871691906142bb565b600260055403613a515760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161107c565b6002600555565b6001600160a01b0382165f9081526020819052604081208054839290613a7f90849061512f565b925050819055508060025f828254613a97919061512f565b90915550506040518181525f906001600160a01b038416905f80516020615c918339815191529060200160405180910390a35050565b6014546040516327f746d760e01b8152306004820152602481018390526001600160a01b0384811660448301525f9216906327f746d7906064016138a5565b610b676001600160a01b0384168383614358565b600780546001600160a01b03191690556118d18161445a565b6040516001600160a01b038085166024830152831660448201526064810182905261120a9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526144ab565b6001600160a01b038216613bfa5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161107c565b8060025f828254613c0b919061511c565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481525f80516020615c91833981519152910160405180910390a35050565b5f81806020019051810190613c6391906156cf565b90505f8160400151806020019051810190613c7e9190615944565b8051519091505f90815b81811015613eda578351805182908110613ca457613ca4615890565b602002602001015192506010845f01518281518110613cc557613cc5615890565b60209081029190910181015182546001810184555f938452919092200180546001600160a01b0319166001600160a01b0390921691909117905560c085015180516011919083908110613d1a57613d1a615890565b60209081029190910181015182546001810184555f9384529190922001556080850151805182908110613d4f57613d4f615890565b6020026020010151600c5f856001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555084606001518181518110613db357613db3615890565b6020026020010151600b5f856001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508460e001518181518110613e1757613e17615890565b6020908102919091018101516001600160a01b038581165f81815260218552604080822080546001600160a01b0319169585169586179055601454600c875281832054600b90975291819020549051637c9c197f60e01b815230600482015260248101939093529483166044830152606482019390935292811660848401521690637c9c197f9060a4015f604051808303815f87803b158015613eb8575f80fd5b505af1158015613eca573d5f803e3d5ffd5b505060019092019150613c889050565b5060405130907f28f9434cab5d5a4ce805684fdf8b0dfe1b0c703a58b0cf79af7bd1ee8b369edd905f90a25050505050565b6019546118589033906001600160a01b031661360c565b5f613f438773e592427a0aece92de3edee1f18e0157c0586156487613965565b6001600160a01b03871673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21480613f8a57506001600160a01b03861673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2145b80613fa65750826001600160a01b0316876001600160a01b0316145b80613fc25750826001600160a01b0316866001600160a01b0316145b156140df5760135460405163d4794a9f60e01b81525f916001600160a01b03169063d4794a9f906140039030908c908c908c908c908c908c906004016159f5565b5f604051808303815f875af115801561401e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526140459190810190615a35565b90505f8180602001905181019061405c9190615a78565b60405163414bf38960e01b815290915073e592427a0aece92de3edee1f18e0157c058615649063414bf38990614096908490600401615b09565b6020604051808303815f875af11580156140b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140d6919061517a565b925050506141f3565b60135460405163d4794a9f60e01b81525f916001600160a01b03169063d4794a9f9061411b9030908c908c908c908c908c908c906004016159f5565b5f604051808303815f875af1158015614136573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261415d9190810190615a35565b90505f818060200190518101906141749190615b86565b60405163c04b8d5960e01b815290915073e592427a0aece92de3edee1f18e0157c058615649063c04b8d59906141ae908490600401615c23565b6020604051808303815f875af11580156141ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141ee919061517a565b925050505b611f76818361372f565b6008546001600160a01b031633146118585760405162461bcd60e51b81526020600482015260026024820152614e4160f01b604482015260640161107c565b600a80546001810182555f919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b03838116919091179091556019546118d1918391165f19613b0c565b610b678363a9059cbb60e01b8484604051602401613b6d929190615191565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f91839186169063dd62ed3e90604401602060405180830381865afa158015614309573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061432d919061517a565b614337919061511c565b905061120a8463095ea7b360e01b8584604051602401613b6d929190615191565b8015806143d05750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156143aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143ce919061517a565b155b61443b5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606482015260840161107c565b610b678363095ea7b360e01b8484604051602401613b6d929190615191565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6144ff826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661457c9092919063ffffffff16565b805190915015610b67578080602001905181019061451d91906151aa565b610b675760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161107c565b606061458a84845f85614592565b949350505050565b6060824710156145f35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161107c565b5f80866001600160a01b0316858760405161460e9190615c7a565b5f6040518083038185875af1925050503d805f8114614648576040519150601f19603f3d011682016040523d82523d5f602084013e61464d565b606091505b509150915061288987838387606083156146c75782515f036146c0576001600160a01b0385163b6146c05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161107c565b508161458a565b61458a83838151156146dc5781518083602001fd5b8060405162461bcd60e51b815260040161107c9190614827565b828054828255905f5260205f2090810192821561472f579160200282015b8281111561472f578251825591602001919060010190614714565b5061473b9291506147ce565b5090565b828054828255905f5260205f2090810192821561472f579160200282015b8281111561472f57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061475d565b828054828255905f5260205f2090810192821561472f575f5260205f209182015b8281111561472f5782548255916001019190600101906147b3565b5b8082111561473b575f81556001016147cf565b5f602082840312156147f2575f80fd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6138e460208301846147f9565b6001600160a01b03811681146118d1575f80fd5b8035612f1681614839565b5f8060408385031215614869575f80fd5b823561487481614839565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b03811182821017156148b9576148b9614882565b60405290565b60405161010081016001600160401b03811182821017156148b9576148b9614882565b60405160a081016001600160401b03811182821017156148b9576148b9614882565b604051601f8201601f191681016001600160401b038111828210171561492c5761492c614882565b604052919050565b5f6001600160401b0382111561494c5761494c614882565b5060051b60200190565b5f82601f830112614965575f80fd5b813561497861497382614934565b614904565b8082825260208201915060208360051b860101925085831115614999575f80fd5b602085015b838110156149b657803583526020928301920161499e565b5095945050505050565b5f80604083850312156149d1575f80fd5b82356001600160401b038111156149e6575f80fd5b6149f285828601614956565b92505060208301356001600160401b03811115614a0d575f80fd5b614a1985828601614956565b9150509250929050565b5f805f60608486031215614a35575f80fd5b8335614a4081614839565b92506020840135614a5081614839565b929592945050506040919091013590565b5f8151808452602084019350602083015f5b82811015614a9a5781516001600160a01b0316865260209586019590910190600101614a73565b5093949350505050565b602081525f6138e46020830184614a61565b5f60208284031215614ac6575f80fd5b81356138e481614839565b80151581146118d1575f80fd5b8035612f1681614ad1565b5f60208284031215614af9575f80fd5b81356138e481614ad1565b5f805f805f8060c08789031215614b19575f80fd5b8635614b2481614839565b9550602087013594506040870135614b3b81614ad1565b93506060870135614b4b81614ad1565b92506080870135614b5b81614ad1565b9598949750929591949360a090920135925050565b5f82601f830112614b7f575f80fd5b8135614b8d61497382614934565b8082825260208201915060208360051b860101925085831115614bae575f80fd5b602085015b838110156149b6578035614bc681614839565b835260209283019201614bb3565b5f60208284031215614be4575f80fd5b81356001600160401b03811115614bf9575f80fd5b61458a84828501614b70565b5f805f60608486031215614c17575f80fd5b8335614c2281614839565b9250602084013591506040840135614c3981614839565b809150509250925092565b5f805f60608486031215614c56575f80fd5b8335614c6181614839565b9250602084013591506040840135614c3981614ad1565b5f8060408385031215614c89575f80fd5b8235614c9481614839565b91506020830135614ca481614839565b809150509250929050565b5f805f805f8060c08789031215614cc4575f80fd5b863595506020870135614cd681614839565b94506040870135935060608701356001600160401b03811115614cf7575f80fd5b614d0389828a01614956565b9350506080870135614b5b81614ad1565b5f805f8060808587031215614d27575f80fd5b8435614d3281614839565b93506020850135614d4281614839565b93969395505050506040820135916060013590565b5f805f60608486031215614d69575f80fd5b833592506020840135614d7b81614839565b91506040840135614c3981614ad1565b5f6001600160401b03821115614da357614da3614882565b50601f01601f191660200190565b5f82601f830112614dc0575f80fd5b8135602083015f614dd361497384614d8b565b9050828152858383011115614de6575f80fd5b828260208301375f92810160200192909252509392505050565b5f60208284031215614e10575f80fd5b81356001600160401b03811115614e25575f80fd5b61458a84828501614db1565b5f805f805f8060c08789031215614e46575f80fd5b8635614e5181614839565b95506020870135614e6181614839565b945060408701359350606087013592506080870135614b5b81614839565b5f805f805f805f60e0888a031215614e95575f80fd5b614e9e8861484d565b965060208801356001600160401b03811115614eb8575f80fd5b614ec48a828b01614db1565b96505060408801356001600160401b03811115614edf575f80fd5b614eeb8a828b01614db1565b95505060608801356001600160401b03811115614f06575f80fd5b614f128a828b01614db1565b945050614f2160808901614ade565b9250614f2f60a0890161484d565b915060c08801356001600160401b03811115614f49575f80fd5b614f558a828b01614b70565b91505092959891949750929550565b5f8151808452602084019350602083015f5b82811015614a9a578151865260209586019590910190600101614f76565b604081525f614fa66040830185614f64565b8281036020840152614fb88185614f64565b95945050505050565b5f8060408385031215614fd2575f80fd5b8235614fdd81614839565b91506020830135614ca481614ad1565b5f805f8060808587031215615000575f80fd5b84356001600160401b03811115615015575f80fd5b61502187828801614b70565b94505060208501356001600160401b0381111561503c575f80fd5b61504887828801614b70565b935050604085013561505981614839565b9150606085013561506981614839565b939692955090935050565b604081525f6150866040830185614a61565b8281036020840152614fb88185614a61565b608081525f6150aa6080830187614a61565b82810360208401526150bc8187614a61565b604084019590955250506060015292915050565b600181811c908216806150e457607f821691505b60208210810361510257634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b3257610b32615108565b81810381811115610b3257610b32615108565b8051612f1681614839565b5f806040838503121561515e575f80fd5b825161516981614839565b6020840151909250614ca481614839565b5f6020828403121561518a575f80fd5b5051919050565b6001600160a01b03929092168252602082015260400190565b5f602082840312156151ba575f80fd5b81516138e481614ad1565b8082028115828204841417610b3257610b32615108565b5f826151f657634e487b7160e01b5f52601260045260245ffd5b500490565b606081526152156060820185516001600160a01b03169052565b602084015160808201525f604085015161523a60a08401826001600160a01b03169052565b50606085015160c0830152608085015161016060e08401526152606101c0840182614a61565b905060a0860151605f198483030161010085015261527e8282614a61565b91505060c086015161012084015260e0860151605f19848303016101408501526152a88282614f64565b610100880151610160860152610120880151610180860152610140909701516101a0850152505050602081019290925260409091015290565b5f8154808452602084019350825f5260205f205f5b82811015614a9a5781546001600160a01b03168652602090950194600191820191016152f6565b604081525f61532f60408301856152e1565b905060018060a01b03831660208301529392505050565b5f82601f830112615355575f80fd5b815161536361497382614934565b8082825260208201915060208360051b860101925085831115615384575f80fd5b602085015b838110156149b657805161539c81614839565b835260209283019201615389565b5f602082840312156153ba575f80fd5b81516001600160401b038111156153cf575f80fd5b61458a84828501615346565b5f602082840312156153eb575f80fd5b815160ff811681146138e4575f80fd5b6001815b60018411156154365780850481111561541a5761541a615108565b600184161561542857908102905b60019390931c9280026153ff565b935093915050565b5f8261544c57506001610b32565b8161545857505f610b32565b816001811461546e576002811461547857615494565b6001915050610b32565b60ff84111561548957615489615108565b50506001821b610b32565b5060208310610133831016604e8410600b84101617156154b7575081810a610b32565b6154c35f1984846153fb565b805f19048211156154d6576154d6615108565b029392505050565b5f6138e460ff84168361543e565b5f80604083850312156154fd575f80fd5b505080516020909101519092909150565b5f6020828403121561551e575f80fd5b81516138e481614839565b601f821115610b6757805f5260205f20601f840160051c8101602085101561554e5750805b601f840160051c820191505b81811015611825575f815560010161555a565b81516001600160401b0381111561558657615586614882565b61559a8161559484546150d0565b84615529565b6020601f8211600181146155cc575f83156155b55750848201515b5f19600385901b1c1916600184901b178455611825565b5f84815260208120601f198516915b828110156155fb57878501518255602094850194600190920191016155db565b508482101561561857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82601f830112615636575f80fd5b815161564461497382614d8b565b818152846020838601011115615658575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f82601f830112615683575f80fd5b815161569161497382614934565b8082825260208201915060208360051b8601019250858311156156b2575f80fd5b602085015b838110156149b65780518352602092830192016156b7565b5f602082840312156156df575f80fd5b81516001600160401b038111156156f4575f80fd5b82016101208185031215615706575f80fd5b61570e614896565b81516001600160401b03811115615723575f80fd5b61572f86828501615346565b82525060208201516001600160401b0381111561574a575f80fd5b61575686828501615346565b60208301525060408201516001600160401b03811115615774575f80fd5b61578086828501615627565b60408301525060608201516001600160401b0381111561579e575f80fd5b6157aa86828501615346565b60608301525060808201516001600160401b038111156157c8575f80fd5b6157d486828501615346565b60808301525060a08201516001600160401b038111156157f2575f80fd5b6157fe86828501615346565b60a08301525060c08201516001600160401b0381111561581c575f80fd5b61582886828501615674565b60c08301525060e08201516001600160401b03811115615846575f80fd5b61585286828501615346565b60e08301525061010091820151918101919091529392505050565b6001600160a01b03831681526040602082018190525f9061458a90830184614a61565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b03868116825285811660208301528416604082015260a0606082018190525f906158d7908301856152e1565b90508260808301529695505050505050565b5f80604083850312156158fa575f80fd5b82516001600160401b0381111561590f575f80fd5b61591b85828601615674565b602094909401519395939450505050565b5f6001820161593d5761593d615108565b5060010190565b5f60208284031215615954575f80fd5b81516001600160401b03811115615969575f80fd5b82016040818503121561597a575f80fd5b604080519081016001600160401b038111828210171561599c5761599c614882565b60405281516001600160401b038111156159b4575f80fd5b6159c086828501615346565b82525060208201516001600160401b038111156159db575f80fd5b6159e786828501615346565b602083015250949350505050565b6001600160a01b039788168152958716602087015293861660408601526060850192909252608084015290921660a082015260c081019190915260e00190565b5f60208284031215615a45575f80fd5b81516001600160401b03811115615a5a575f80fd5b61458a84828501615627565b805162ffffff81168114612f16575f80fd5b5f610100828403128015615a8a575f80fd5b50615a936148bf565b8251615a9e81614839565b8152615aac60208401615142565b6020820152615abd60408401615a66565b6040820152615ace60608401615142565b60608201526080838101519082015260a0808401519082015260c08084015190820152615afd60e08401615142565b60e08201529392505050565b81516001600160a01b03908116825260208084015182169083015260408084015162ffffff169083015260608084015191821690830152610100820190506080830151608083015260a083015160a083015260c083015160c083015260e0830151615b7f60e08401826001600160a01b03169052565b5092915050565b5f60208284031215615b96575f80fd5b81516001600160401b03811115615bab575f80fd5b820160a08185031215615bbc575f80fd5b615bc46148e2565b81516001600160401b03811115615bd9575f80fd5b615be586828501615627565b8252506020820151615bf681614839565b60208201526040828101519082015260608083015190820152608091820151918101919091529392505050565b602081525f825160a06020840152615c3e60c08401826147f9565b905060018060a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b5f82518060208501845e5f92019182525091905056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122018d42993555855094ce56ab2734887ac3c6255497067685ca13f6ea99520160564736f6c634300081a003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000e6161726e6120616669206261736500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086166692062617365000000000000000000000000000000000000000000000000
0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000e6161726e6120616669206261736500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086166692062617365000000000000000000000000000000000000000000000000
----Decoded View------------Arg [0] : _name (string): aarna afi baseArg [1] : _symbol (string): afi base
----Encoded View------------Arg [0] : 0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000e6161726e61206166692062617365000000000000000000000000000000000000Arg [1] : 0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000086166692062617365000000000000000000000000000000000000000000000000