0 txs
33 calls
constructor
constructor((uint64 marginRatioMax, uint64 liquidationSpreadMax, uint64 earningsRateMax, uint64 marginPremiumMax, uint64 liquidationSpreadPremiumMax, uint96 interestRateMax, uint128 minBorrowedValueMax) riskLimits, (uint256 value) marginRatio, (uint256 value) liquidationSpread, (uint256 value) earningsRate, (uint256 value) minBorrowedValue, uint256 accountMaxNumberOfMarketsWithBalances, address oracleSentinel, uint256 callbackGasLimit)
functions
getAccountBalances
viewfunction getAccountBalances(tuple account) view returns (uint256[], address[], tuple[], tuple[])
getAccountMarketsWithBalances
viewfunction getAccountMarketsWithBalances(tuple account) view returns (uint256[])
getAccountMarketWithBalanceAtIndex
viewfunction getAccountMarketWithBalanceAtIndex(tuple account, uint256 index) view returns (uint256)
getAccountMaxNumberOfMarketsWithBalances
viewfunction getAccountMaxNumberOfMarketsWithBalances() view returns (uint256)
getAccountNumberOfMarketsWithBalances
viewfunction getAccountNumberOfMarketsWithBalances(tuple account) view returns (uint256)
getAccountNumberOfMarketsWithDebt
viewfunction getAccountNumberOfMarketsWithDebt(tuple account) view returns (uint256)
getAccountPar
viewfunction getAccountPar(tuple account, uint256 marketId) view returns (tuple)
getAccountRiskOverrideByAccount
viewfunction getAccountRiskOverrideByAccount(tuple account) view returns (tuple marginRatioOverride, tuple liquidationSpreadOverride)
getAccountRiskOverrideSetterByAccountOwner
viewfunction getAccountRiskOverrideSetterByAccountOwner(address accountOwner) view returns (address)
getAccountStatus
viewfunction getAccountStatus(tuple account) view returns (uint8)
getAccountValues
viewfunction getAccountValues(tuple account) view returns (tuple, tuple)
getAccountWei
viewfunction getAccountWei(tuple account, uint256 marketId) view returns (tuple)
getAdjustedAccountValues
viewfunction getAdjustedAccountValues(tuple account) view returns (tuple, tuple)
getCallbackGasLimit
viewfunction getCallbackGasLimit() view returns (uint256)
getDefaultAccountRiskOverrideSetter
viewfunction getDefaultAccountRiskOverrideSetter() view returns (address)
getEarningsRate
viewfunction getEarningsRate() view returns (tuple)
getIsAutoTraderSpecial
viewfunction getIsAutoTraderSpecial(address autoTrader) view returns (bool)
getIsBorrowAllowed
viewfunction getIsBorrowAllowed() view returns (bool)
getIsGlobalOperator
viewfunction getIsGlobalOperator(address operator) view returns (bool)
getIsLiquidationAllowed
viewfunction getIsLiquidationAllowed() view returns (bool)
getIsLocalOperator
viewfunction getIsLocalOperator(address owner, address operator) view returns (bool)
getLiquidationSpread
viewfunction getLiquidationSpread() view returns (tuple)
getLiquidationSpreadForAccountAndPair
viewfunction getLiquidationSpreadForAccountAndPair(tuple account, uint256 heldMarketId, uint256 owedMarketId) view returns (tuple)
getLiquidationSpreadForPair
viewfunction getLiquidationSpreadForPair(uint256 heldMarketId, uint256 owedMarketId) view returns (tuple)
getLiquidationSpreadOverrideByAccount
viewfunction getLiquidationSpreadOverrideByAccount(tuple account) view returns (tuple)
getMarginRatio
viewfunction getMarginRatio() view returns (tuple)
getMarginRatioForAccount
viewfunction getMarginRatioForAccount(tuple account) view returns (tuple)
getMarginRatioOverrideByAccount
viewfunction getMarginRatioOverrideByAccount(tuple account) view returns (tuple)
getMarket
viewfunction getMarket(uint256 marketId) view returns (tuple)
getMarketBorrowInterestRateApr
viewfunction getMarketBorrowInterestRateApr(uint256 marketId) view returns (tuple)
getMarketBorrowInterestRatePerSecond
viewfunction getMarketBorrowInterestRatePerSecond(uint256 marketId) view returns (tuple)
getMarketCachedIndex
viewfunction getMarketCachedIndex(uint256 marketId) view returns (tuple)
getMarketCurrentIndex
viewfunction getMarketCurrentIndex(uint256 marketId) view returns (tuple)
getMarketEarningsRateOverride
viewfunction getMarketEarningsRateOverride(uint256 marketId) view returns (tuple)
getMarketIdByTokenAddress
viewfunction getMarketIdByTokenAddress(address token) view returns (uint256)
getMarketInterestRate
viewfunction getMarketInterestRate(uint256 marketId) view returns (tuple)
getMarketInterestSetter
viewfunction getMarketInterestSetter(uint256 marketId) view returns (address)
getMarketIsClosing
viewfunction getMarketIsClosing(uint256 marketId) view returns (bool)
getMarketLiquidationSpreadPremium
viewfunction getMarketLiquidationSpreadPremium(uint256 marketId) view returns (tuple)
getMarketMarginPremium
viewfunction getMarketMarginPremium(uint256 marketId) view returns (tuple)
getMarketMaxBorrowWei
viewfunction getMarketMaxBorrowWei(uint256 marketId) view returns (tuple)
getMarketMaxSupplyWei
viewfunction getMarketMaxSupplyWei(uint256 marketId) view returns (tuple)
getMarketMaxWei
viewfunction getMarketMaxWei(uint256 marketId) view returns (tuple)
getMarketPrice
viewfunction getMarketPrice(uint256 marketId) view returns (tuple)
getMarketPriceOracle
viewfunction getMarketPriceOracle(uint256 marketId) view returns (address)
getMarketSpreadPremium
viewfunction getMarketSpreadPremium(uint256 marketId) view returns (tuple)
getMarketSupplyInterestRateApr
viewfunction getMarketSupplyInterestRateApr(uint256 marketId) view returns (tuple)
getMarketTokenAddress
viewfunction getMarketTokenAddress(uint256 marketId) view returns (address)
getMarketTotalPar
viewfunction getMarketTotalPar(uint256 marketId) view returns (tuple)
getMarketTotalWei
viewfunction getMarketTotalWei(uint256 marketId) view returns (tuple)
getMarketWithInfo
viewfunction getMarketWithInfo(uint256 marketId) view returns (tuple, tuple, tuple, tuple)
getMinBorrowedValue
viewfunction getMinBorrowedValue() view returns (tuple)
getNumExcessTokens
viewfunction getNumExcessTokens(uint256 marketId) view returns (tuple)
getNumMarkets
viewfunction getNumMarkets() view returns (uint256)
getOracleSentinel
viewfunction getOracleSentinel() view returns (address)
getRiskLimits
viewfunction getRiskLimits() view returns (tuple)
isOwner
viewfunction isOwner() view returns (bool)
owner
viewfunction owner() view returns (address)
operate
nonpayablefunction operate(tuple[] accounts, tuple[] actions)
ownerAddMarket
nonpayablefunction ownerAddMarket(address token, address priceOracle, address interestSetter, tuple marginPremium, tuple spreadPremium, uint256 maxSupplyWei, uint256 maxBorrowWei, tuple earningsRateOverride, bool isClosing)
ownerSetAccountMaxNumberOfMarketsWithBalances
nonpayablefunction ownerSetAccountMaxNumberOfMarketsWithBalances(uint256 accountMaxNumberOfMarketsWithBalances)
ownerSetAccountRiskOverride
nonpayablefunction ownerSetAccountRiskOverride(address accountOwner, address accountRiskOverrideSetter)
ownerSetAutoTraderSpecial
nonpayablefunction ownerSetAutoTraderSpecial(address autoTrader, bool special)
ownerSetCallbackGasLimit
nonpayablefunction ownerSetCallbackGasLimit(uint256 callbackGasLimit)
ownerSetDefaultAccountRiskOverride
nonpayablefunction ownerSetDefaultAccountRiskOverride(address accountRiskOverrideSetter)
ownerSetEarningsRate
nonpayablefunction ownerSetEarningsRate(tuple earningsRate)
ownerSetEarningsRateOverride
nonpayablefunction ownerSetEarningsRateOverride(uint256 marketId, tuple earningsRateOverride)
ownerSetGlobalOperator
nonpayablefunction ownerSetGlobalOperator(address operator, bool approved)
ownerSetInterestSetter
nonpayablefunction ownerSetInterestSetter(uint256 marketId, address interestSetter)
ownerSetIsClosing
nonpayablefunction ownerSetIsClosing(uint256 marketId, bool isClosing)
ownerSetLiquidationSpread
nonpayablefunction ownerSetLiquidationSpread(tuple spread)
ownerSetLiquidationSpreadPremium
nonpayablefunction ownerSetLiquidationSpreadPremium(uint256 marketId, tuple liquidationSpreadPremium)
ownerSetMarginPremium
nonpayablefunction ownerSetMarginPremium(uint256 marketId, tuple marginPremium)
ownerSetMarginRatio
nonpayablefunction ownerSetMarginRatio(tuple ratio)
ownerSetMaxBorrowWei
nonpayablefunction ownerSetMaxBorrowWei(uint256 marketId, uint256 maxBorrowWei)
ownerSetMaxSupplyWei
nonpayablefunction ownerSetMaxSupplyWei(uint256 marketId, uint256 maxSupplyWei)
ownerSetMinBorrowedValue
nonpayablefunction ownerSetMinBorrowedValue(tuple minBorrowedValue)
ownerSetOracleSentinel
nonpayablefunction ownerSetOracleSentinel(address oracleSentinel)
ownerSetPriceOracle
nonpayablefunction ownerSetPriceOracle(uint256 marketId, address priceOracle)
ownerWithdrawExcessTokens
nonpayablefunction ownerWithdrawExcessTokens(uint256 marketId, address recipient) returns (uint256)
ownerWithdrawUnsupportedTokens
nonpayablefunction ownerWithdrawUnsupportedTokens(address token, address recipient) returns (uint256)
renounceOwnership
nonpayablefunction renounceOwnership()
setOperators
nonpayablefunction setOperators(tuple[] args)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
LogOperatorSet
event LogOperatorSet(address indexed owner, address operator, bool trusted)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b50604051620062583803806200625883398101604081905262000034916200064d565b6000620000496001600160e01b036200049116565b601380546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062006238833981519152908290a35060138054600160a01b60ff60a01b1990911617905587516010805460208b01516040808d015160608e01516001600160401b03199485166001600160401b0397881617600160401b600160801b03191668010000000000000000948816850217600160801b600160c01b031916600160801b92881692909202919091176001600160c01b0316600160c01b918716919091021790935560808c01516011805460a08f015194169190951617600160401b600160a01b0319166001600160601b03909216021790915560c0890151601280546001600160801b0319166001600160801b0390921691909117905551632a6e9a8b60e11b81527308243969ddd1f038473fe0b56172468a91070616906354dd351690620001ac906000908b90600401620007cf565b60006040518083038186803b158015620001c557600080fd5b505af4158015620001da573d6000803e3d6000fd5b50506040516303d139af60e21b81527308243969ddd1f038473fe0b56172468a910706169250630f44e6bc91506200021a906000908a90600401620007cf565b60006040518083038186803b1580156200023357600080fd5b505af415801562000248573d6000803e3d6000fd5b5050604051630311401d60e41b81527308243969ddd1f038473fe0b56172468a91070616925063311401d0915062000288906000908990600401620007cf565b60006040518083038186803b158015620002a157600080fd5b505af4158015620002b6573d6000803e3d6000fd5b5050604051633e72b31360e21b81527308243969ddd1f038473fe0b56172468a91070616925063f9cacc4c9150620002f6906000908890600401620007cf565b60006040518083038186803b1580156200030f57600080fd5b505af415801562000324573d6000803e3d6000fd5b5050604051631c2d854760e21b81527308243969ddd1f038473fe0b56172468a9107061692506370b6151c915062000364906000908790600401620007ee565b60006040518083038186803b1580156200037d57600080fd5b505af415801562000392573d6000803e3d6000fd5b5050604051632e5c853560e11b81527308243969ddd1f038473fe0b56172468a910706169250635cb90a6a9150620003d2906000908690600401620007a9565b60006040518083038186803b158015620003eb57600080fd5b505af415801562000400573d6000803e3d6000fd5b50506040516301cf9adf60e31b81527308243969ddd1f038473fe0b56172468a910706169250630e7cd6f8915062000440906000908590600401620007ee565b60006040518083038186803b1580156200045957600080fd5b505af41580156200046e573d6000803e3d6000fd5b5050505062000483326200049560201b60201c565b5050505050505050620008d0565b3390565b6001600160a01b038116620004c75760405162461bcd60e51b8152600401620004be9062000797565b60405180910390fd5b6013546040516001600160a01b038084169216906000805160206200623883398151915290600090a3601380546001600160a01b0319166001600160a01b0392909216919091179055565b80516200051f816200088a565b92915050565b6000602082840312156200053857600080fd5b6200054460206200080d565b9050600062000554848462000626565b82525092915050565b600060e082840312156200057057600080fd5b6200057c60e06200080d565b905060006200058c848462000633565b82525060206200059f8484830162000633565b6020830152506040620005b58482850162000633565b6040830152506060620005cb8482850162000633565b6060830152506080620005e18482850162000633565b60808301525060a0620005f78482850162000640565b60a08301525060c06200060d8482850162000619565b60c08301525092915050565b80516200051f81620008a4565b80516200051f81620008af565b80516200051f81620008ba565b80516200051f81620008c5565b6000806000806000806000806101c0898b0312156200066b57600080fd5b6000620006798b8b6200055d565b98505060e06200068c8b828c0162000525565b975050610100620006a08b828c0162000525565b965050610120620006b48b828c0162000525565b955050610140620006c88b828c0162000525565b945050610160620006dc8b828c0162000626565b935050610180620006f08b828c0162000512565b9250506101a0620007048b828c0162000626565b9150509295985092959890939650565b6200071f816200084a565b82525050565b60006200073460268362000834565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b805160208301906200078284826200078c565b50505050565b9052565b6200071f816200086f565b602080825281016200051f8162000725565b60408101620007b9828562000788565b620007c8602083018462000714565b9392505050565b60408101620007df828562000788565b620007c860208301846200076f565b60408101620007fe828562000788565b620007c860208301846200078c565b6040518181016001600160401b03811182821017156200082c57600080fd5b604052919050565b90815260200190565b60006200051f8262000863565b60006200051f826200083d565b6001600160801b031690565b6001600160a01b031690565b90565b6001600160401b031690565b6001600160601b031690565b62000895816200084a565b8114620008a157600080fd5b50565b620008958162000857565b62000895816200086f565b620008958162000872565b62000895816200087e565b61595880620008e06000396000f3fe608060405234801561001057600080fd5b50600436106105ac5760003560e01c80638da5cb5b116102ed578063deec053d11610191578063ec6e3987116100ee578063f2385be3116100a2578063f94160521161007c578063f941605214610bcb578063fd04b60614610bde578063fd47eda614610956576105ac565b8063f2385be314610b9d578063f2901ae214610ba5578063f2fde38b14610bb8576105ac565b8063ed4d6f5c116100d3578063ed4d6f5c14610b64578063ef6957d014610b77578063f1061ba814610b8a576105ac565b8063ec6e398714610b3e578063ecef481f14610b51576105ac565b8063e56659fc11610145578063e8e72f751161012a578063e8e72f7514610af6578063eb1c6e6b14610b09578063eb44fdd314610b1e576105ac565b8063e56659fc14610ad0578063e5e23ef214610ae3576105ac565b8063e51bfcb411610176578063e51bfcb414610a95578063e52828c714610ab5578063e552022814610ac8576105ac565b8063deec053d14610a6f578063e0e48d1914610a82576105ac565b8063ba77ea671161024a578063cb04a34c116101fe578063d93c9591116101d8578063d93c959114610796578063dc6d784614610a54578063de8be8e714610a67576105ac565b8063cb04a34c14610a0e578063d24c48bc14610a2e578063d5ecf7c514610a41576105ac565b8063c0e044fc1161022f578063c0e044fc146109eb578063c1460942146109f3578063c190c2ec146109fb576105ac565b8063ba77ea67146109c5578063c0bb72b7146109d8576105ac565b8063ac7bb20b116102a1578063b306e4f811610286578063b306e4f81461097c578063b548b8921461098f578063b64e31ea146109b2576105ac565b8063ac7bb20b14610956578063b0dc49f814610969576105ac565b80638f6bc659116102d25780638f6bc6591461091d5780638fae3be114610930578063a67a6a4514610943576105ac565b80638da5cb5b1461090d5780638f32d59b14610915576105ac565b8063384027621161045457806356ea84b2116103b15780636a8194e7116103655780637e9eaf411161033f5780637e9eaf41146108df57806385b53fc8146108e75780638928378e146108fa576105ac565b80636a8194e7146108ac578063715018a6146108cf578063770e43e0146108d7576105ac565b80635d3c0ce8116103965780635d3c0ce81461087357806363ae56b31461088657806366411ff414610899576105ac565b806356ea84b2146108405780635ac7d17c14610860576105ac565b80634be87414116104085780634e634067116103ed5780634e6340671461081d5780634f3c1542146108255780634f4d66f61461082d576105ac565b80634be87414146108025780634db90d5214610815576105ac565b80633a031bf0116104395780633a031bf0146107bc57806347d1b53c146107cf57806348e648ee146107ef576105ac565b80633840276214610796578063387a498a146107a9576105ac565b806317b505251161050d57806320945e26116104c15780632e822af31161049b5780632e822af3146107705780633063bce2146107835780633305e5bb14610709576105ac565b806320945e2614610742578063295c39a5146107555780632a5608451461075d576105ac565b80631a7777bb116104f25780631a7777bb146107095780631ae4ec521461071c5780631eb120761461072f576105ac565b806317b50525146106d6578063197f0f05146106f6576105ac565b80630f47fab011610564578063121fb72f11610549578063121fb72f14610682578063124f914c1461069557806313368364146106b6576105ac565b80630f47fab014610642578063105de10c14610662576105ac565b80630781d820116105955780630781d820146105fa57806307af15681461060f5780630b28fa3e1461062f576105ac565b8063052f72d7146105b1578063062bd3e9146105da575b600080fd5b6105c46105bf3660046144af565b610bf1565b6040516105d191906152c8565b60405180910390f35b6105ed6105e8366004614a5f565b610c9e565b6040516105d19190615237565b61060d610608366004614a5f565b610d43565b005b61062261061d366004614a5f565b610e3f565b6040516105d19190615692565b61060d61063d366004614af8565b610ee9565b6106556106503660046148d4565b610fdf565b6040516105d19190615260565b6106756106703660046148d4565b6110a7565b6040516105d19190615322565b61060d610690366004614ad9565b611152565b6106a86106a33660046148d4565b611201565b6040516105d1929190615330565b6106c96106c4366004614a5f565b6112bc565b6040516105d191906152d6565b6106e96106e43660046148d4565b611361565b6040516105d191906156a0565b6106c9610704366004614a5f565b611406565b610675610717366004614a5f565b61145b565b61060d61072a366004614b28565b6114b6565b61067561073d366004614922565b611565565b6106756107503660046148d4565b61161e565b6106e9611679565b6106e961076b3660046144eb565b611721565b61060d61077e36600461484a565b61183d565b61060d61079136600461484a565b6118ea565b6106226107a4366004614a5f565b611997565b61060d6107b736600461484a565b6119f2565b6105c46107ca3660046144eb565b611a9f565b6107e26107dd3660046148f2565b611b4f565b6040516105d191906153a1565b6106c96107fd3660046144af565b611bfb565b61060d610810366004614af8565b611c50565b6105c4611cff565b6105c4611da2565b610675611df5565b6106e961083b3660046148d4565b611e9e565b61085361084e366004614a5f565b611ef3565b6040516105d1919061534b565b6105c461086e366004614a5f565b611f9e565b6106756108813660046148d4565b611ff3565b61060d610894366004614a5f565b61204e565b61060d6108a73660046147f0565b6120fb565b6108bf6108ba3660046148d4565b6121a8565b6040516105d19493929190615271565b61060d612269565b6106c96122fc565b61067561239f565b61060d6108f53660046146a8565b6123f8565b610675610908366004614a5f565b6124cf565b6105ed61252a565b6105c4612546565b6106e961092b366004614a9b565b612586565b6106e961093e3660046144af565b612637565b61060d610951366004614649565b61268c565b610675610964366004614a5f565b612717565b61060d610977366004614555565b612772565b61060d61098a366004614b28565b612821565b6109a261099d366004614a5f565b6128d0565b6040516105d19493929190615368565b6106756109c0366004614a5f565b612994565b6106a86109d33660046148d4565b6129ef565b61060d6109e636600461484a565b612aab565b6106e9612b58565b610675612bab565b610622610a093660046148f2565b612c04565b610a21610a1c366004614a5f565b612cb0565b6040516105d19190615684565b610675610a3c366004614b28565b612d5a565b610622610a4f366004614a5f565b612e2d565b610a21610a62366004614a5f565b612e88565b6106e9612ee3565b610853610a7d366004614a5f565b612f36565b6106e9610a903660046148f2565b612f91565b610aa8610aa33660046148d4565b613038565b6040516105d191906152e4565b610675610ac3366004614a5f565b6130dd565b610675613138565b61060d610ade3660046147f0565b613191565b61060d610af1366004614af8565b61323e565b61060d610b04366004614ad9565b6132ed565b610b1161339c565b6040516105d191906153af565b610b31610b2c366004614a5f565b613445565b6040516105d19190615359565b61060d610b4c366004614525565b6134f1565b610675610b5f366004614a5f565b6135a0565b61060d610b72366004614585565b6135fb565b61060d610b85366004614aba565b613706565b6105c4610b983660046144af565b6137b5565b6106c961380a565b61060d610bb3366004614525565b61385d565b61060d610bc63660046144af565b61390c565b6106a8610bd93660046148d4565b61393c565b610675610bec366004614a5f565b61399f565b6040517f288afc6200000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d095750099063288afc6290610c4690849086906004016153cb565b60206040518083038186803b158015610c5e57600080fd5b505af4158015610c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9691908101906147d2565b90505b919050565b6040517fa2169a3a00000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d095750099063a2169a3a90610cf390849086906004016155c8565b60206040518083038186803b158015610d0b57600080fd5b505af4158015610d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9691908101906144cd565b610d4b612546565b610d705760405162461bcd60e51b8152600401610d6790615302565b60405180910390fd5b601354600160a01b900460ff16610d995760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f70b6151c0000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a91070616906370b6151c90610df99060009085906004016155c8565b60006040518083038186803b158015610e1157600080fd5b505af4158015610e25573d6000803e3d6000fd5b50506013805460ff60a01b1916600160a01b179055505050565b610e47613abf565b6040517f7462482a00000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d0957500990637462482a90610e9a9060009086906004016155c8565b604080518083038186803b158015610eb157600080fd5b505af4158015610ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c969190810190614a41565b610ef1612546565b610f0d5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff16610f365760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f1c90d8240000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a9107061690631c90d82490610f989060009086908690600401615634565b60006040518083038186803b158015610fb057600080fd5b505af4158015610fc4573d6000803e3d6000fd5b50506013805460ff60a01b1916600160a01b17905550505050565b6040517fbbf7039800000000000000000000000000000000000000000000000000000000815260609073ba33d91764c06ac4c3e38dcb66567c2d095750099063bbf7039890611035906000908690600401615550565b60006040518083038186803b15801561104d57600080fd5b505af4158015611061573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610c9691908101906146dd565b6110af613ad6565b6040517fc61f66b400000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063c61f66b490611102906000908690600401615550565b60206040518083038186803b15801561111a57600080fd5b505af415801561112e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c969190810190614868565b61115a612546565b6111765760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661119f5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517faa92e3480000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a910706169063aa92e34890610f989060009086908690600401615619565b611209613ad6565b611211613ad6565b6040517fddc7c6f000000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063ddc7c6f090611264906000908790600401615550565b604080518083038186803b15801561127b57600080fd5b505af415801561128f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112b39190810190614886565b91509150915091565b6040517fa18862fc00000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d095750099063a18862fc9061131190849086906004016155c8565b60206040518083038186803b15801561132957600080fd5b505af415801561133d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c96919081019061480e565b6040517f6a0e643300000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d0957500990636a0e6433906113b69084908690600401615550565b60206040518083038186803b1580156113ce57600080fd5b505af41580156113e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c969190810190614a7d565b6040517f35b5d1f600000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d09575009906335b5d1f69061131190849086906004016155c8565b611463613ad6565b6040517f063bf37300000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063063bf373906111029060009086906004016155c8565b6114be612546565b6114da5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166115035760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f3ea418830000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a9107061690633ea4188390610f98906000908690869060040161565c565b61156d613ad6565b6040517ffef3d3cb00000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063fef3d3cb906115c490600090889088908890600401615593565b60206040518083038186803b1580156115dc57600080fd5b505af41580156115f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116149190810190614868565b90505b9392505050565b611626613ad6565b6040517f62f8e1b300000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d09575009906362f8e1b390611102906000908690600401615550565b6040517fe99388d300000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d095750099063e99388d3906116cc9084906004016153bd565b60206040518083038186803b1580156116e457600080fd5b505af41580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171c9190810190614a7d565b905090565b600061172b612546565b6117475760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166117705760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fdd32998a0000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a910706169063dd32998a906117d290600090879087906004016153e6565b60206040518083038186803b1580156117ea57600080fd5b505af41580156117fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118229190810190614a7d565b90506013805460ff60a01b1916600160a01b17905592915050565b611845612546565b6118615760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661188a5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517ff9cacc4c0000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a910706169063f9cacc4c90610df9906000908590600401615542565b6118f2612546565b61190e5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166119375760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f0f44e6bc0000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a9107061690630f44e6bc90610df9906000908590600401615542565b61199f613abf565b6040517fc641ccd100000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063c641ccd190610e9a9060009086906004016155c8565b6119fa612546565b611a165760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff16611a3f5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f311401d00000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a910706169063311401d090610df9906000908590600401615542565b6040517f75bcaa4800000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d09575009906375bcaa4890611af6908490879087906004016153e6565b60206040518083038186803b158015611b0e57600080fd5b505af4158015611b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b4691908101906147d2565b90505b92915050565b611b57613abf565b6040517f787f772700000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063787f772790611bac906000908790879060040161556b565b604080518083038186803b158015611bc357600080fd5b505af4158015611bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b4691908101906149e7565b6040517f2e19a6ea00000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d0957500990632e19a6ea9061131190849086906004016153cb565b611c58612546565b611c745760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff16611c9d5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f7335079b0000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a9107061690637335079b90610f989060009086908690600401615634565b6040517f83fe9e1400000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d09575009906383fe9e1490611d529084906004016153bd565b60206040518083038186803b158015611d6a57600080fd5b505af4158015611d7e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171c91908101906147d2565b6040517f6861138d00000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d0957500990636861138d90611d529084906004016153bd565b611dfd613ad6565b6040517f4f820bd600000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d0957500990634f820bd690611e4e906000906004016153bd565b60206040518083038186803b158015611e6657600080fd5b505af4158015611e7a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171c9190810190614868565b6040517fe647a68700000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d095750099063e647a687906113b69084908690600401615550565b611efb613ae9565b6040517fd23406b600000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063d23406b690611f4e9060009086906004016155c8565b60606040518083038186803b158015611f6657600080fd5b505af4158015611f7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9691908101906148b6565b6040517fd09657e100000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d095750099063d09657e190610c4690849086906004016155c8565b611ffb613ad6565b6040517f58105e3500000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d09575009906358105e3590611102906000908690600401615550565b612056612546565b6120725760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661209b5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f0e7cd6f80000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a9107061690630e7cd6f890610df99060009085906004016155c8565b612103612546565b61211f5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166121485760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fa289756d0000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a910706169063a289756d90610df9906000908590600401615527565b60608060608073ba33d91764c06ac4c3e38dcb66567c2d0957500963edf9c1ec6000876040518363ffffffff1660e01b81526004016121e8929190615550565b60006040518083038186803b15801561220057600080fd5b505af4158015612214573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261225a9190810190614712565b93509350935093509193509193565b612271612546565b61228d5760405162461bcd60e51b8152600401610d6790615302565b60135460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3601380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6040517f5ebcae4c00000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d0957500990635ebcae4c9061234f9084906004016153bd565b60206040518083038186803b15801561236757600080fd5b505af415801561237b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171c919081019061480e565b6123a7613ad6565b6040517f136a1dc700000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063136a1dc790611e4e906000906004016153bd565b805160005b818110156124ca57600083828151811061241357fe5b6020026020010151600001519050600084838151811061242f57fe5b60200260200101516020015190508061244957600261244c565b60015b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff881684529091529081902060ff9390931690925590517f4d7f317d2088d039c2a95a09fcbf9cc9191fad5905f883c937cc3d317c4a6327906124b89085908590615245565b60405180910390a250506001016123fd565b505050565b6124d7613ad6565b6040517f8828244f00000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d0957500990638828244f906111029060009086906004016155c8565b60135473ffffffffffffffffffffffffffffffffffffffff1690565b60135460009073ffffffffffffffffffffffffffffffffffffffff1661256a6139fa565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6000612590612546565b6125ac5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166125d55760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fb25328e00000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a910706169063b25328e0906117d290600090879087906004016155e3565b6040517f92108b1e00000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d09575009906392108b1e906113b690849086906004016153cb565b601354600160a01b900460ff166126b55760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fbd76ecfd00000000000000000000000000000000000000000000000000000000815273460dfe88b642705c588bd55660cc2c4c6578ee649063bd76ecfd90610f9890600090869086906004016154f3565b61271f613ad6565b6040517f2bdf1cf200000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d0957500990632bdf1cf2906111029060009086906004016155c8565b61277a612546565b6127965760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166127bf5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fdf7ff3630000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a910706169063df7ff36390610f989060009086908690600401615436565b612829612546565b6128455760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661286e5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f6f4814100000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a9107061690636f48141090610f98906000908690869060040161565c565b6128d8613b09565b6128e0613ae9565b6128e8613ad6565b6128f0613ad6565b6040517fba25f9d600000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063ba25f9d6906129439060009089906004016155c8565b6102a06040518083038186803b15801561295c57600080fd5b505af4158015612970573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061225a919081019061498e565b61299c613ad6565b6040517fa16184f600000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063a16184f6906111029060009086906004016155c8565b6129f7613ad6565b6129ff613ad6565b6040517fd933f84400000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063d933f84490612a52906000908790600401615550565b604080518083038186803b158015612a6957600080fd5b505af4158015612a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612aa19190810190614886565b9094909350915050565b612ab3612546565b612acf5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff16612af85760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f54dd35160000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a91070616906354dd351690610df9906000908590600401615542565b6040517f4a451be200000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d0957500990634a451be2906116cc9084906004016153bd565b612bb3613ad6565b6040517f8339c50f00000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d0957500990638339c50f90611e4e906000906004016153bd565b612c0c613abf565b6040517f634c50ce00000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063634c50ce90612c61906000908790879060040161556b565b604080518083038186803b158015612c7857600080fd5b505af4158015612c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b469190810190614a41565b612cb8613abf565b6040517f055369d700000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063055369d790612d0b9060009086906004016155c8565b604080518083038186803b158015612d2257600080fd5b505af4158015612d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c969190810190614a23565b612d62613ad6565b612d6a613abf565b5060408051808201825260008082526020820181905291517ffef3d3cb000000000000000000000000000000000000000000000000000000008152909173ba33d91764c06ac4c3e38dcb66567c2d095750099163fef3d3cb91612dd591859089908990600401615593565b60206040518083038186803b158015612ded57600080fd5b505af4158015612e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e259190810190614868565b949350505050565b612e35613abf565b6040517fd2c9ee0000000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063d2c9ee0090610e9a9060009086906004016155c8565b612e90613abf565b6040517f485df94f00000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063485df94f90612d0b9060009086906004016155c8565b6040517f10b9711c00000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d09575009906310b9711c906116cc9084906004016153bd565b612f3e613ae9565b6040517f4aaee58500000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d0957500990634aaee58590611f4e9060009086906004016155c8565b6040517f99c4c00900000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d09575009906399c4c00990612fe89084908790879060040161556b565b60206040518083038186803b15801561300057600080fd5b505af4158015613014573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b469190810190614a7d565b6040517f4af71ebc00000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d0957500990634af71ebc9061308d9084908690600401615550565b60206040518083038186803b1580156130a557600080fd5b505af41580156130b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c96919081019061482c565b6130e5613ad6565b6040517f041f229400000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063041f2294906111029060009086906004016155c8565b613140613ad6565b6040517f22ef216100000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d09575009906322ef216190611e4e906000906004016153bd565b613199612546565b6131b55760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166131de5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f5cb90a6a0000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a9107061690635cb90a6a90610df9906000908590600401615527565b613246612546565b6132625760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661328b5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f692808450000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a9107061690636928084590610f989060009086908690600401615634565b6132f5612546565b6133115760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661333a5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f8c5dabd10000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a9107061690638c5dabd190610f989060009086908690600401615619565b6133a4613b8a565b6040517f8b19f9e800000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d0957500990638b19f9e8906133f5906000906004016153bd565b60e06040518083038186803b15801561340d57600080fd5b505af4158015613421573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171c9190810190614a05565b61344d613b09565b6040517f0b48557f00000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d0957500990630b48557f906134a09060009086906004016155c8565b6102006040518083038186803b1580156134b957600080fd5b505af41580156134cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c96919081019061496f565b6134f9612546565b6135155760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661353e5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f3c0c9ddc0000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a9107061690633c0c9ddc90610f98906000908690869060040161540e565b6135a8613ad6565b6040517fdb32b3ca00000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063db32b3ca906111029060009086906004016155c8565b613603612546565b61361f5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166136485760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fbc54053f0000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a910706169063bc54053f906136b8906000908d908d908d908d908d908d908d908d908d9060040161545e565b60006040518083038186803b1580156136d057600080fd5b505af41580156136e4573d6000803e3d6000fd5b50506013805460ff60a01b1916600160a01b1790555050505050505050505050565b61370e612546565b61372a5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166137535760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f10c87b060000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a91070616906310c87b0690610f9890600090869086906004016155fe565b6040517f3808f21700000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d0957500990633808f21790610c4690849086906004016153cb565b6040517f10f1b88c00000000000000000000000000000000000000000000000000000000815260009073ba33d91764c06ac4c3e38dcb66567c2d09575009906310f1b88c9061234f9084906004016153bd565b613865612546565b6138815760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166138aa5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fe80f80240000000000000000000000000000000000000000000000000000000081527308243969ddd1f038473fe0b56172468a910706169063e80f802490610f98906000908690869060040161540e565b613914612546565b6139305760405162461bcd60e51b8152600401610d6790615302565b613939816139fe565b50565b613944613ad6565b61394c613ad6565b6040517febec2e6c00000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063ebec2e6c90611264906000908790600401615550565b6139a7613ad6565b6040517fa335f47a00000000000000000000000000000000000000000000000000000000815273ba33d91764c06ac4c3e38dcb66567c2d095750099063a335f47a906111029060009086906004016155c8565b3390565b73ffffffffffffffffffffffffffffffffffffffff8116613a315760405162461bcd60e51b8152600401610d67906152f2565b60135460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3601380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b604080518082019091526000808252602082015290565b6040518060200160405280600081525090565b604080516060810182526000808252602082018190529181019190915290565b604080516101608101825260008082526020820152908101613b29613abf565b8152602001613b36613ae9565b81526000602082018190526040820152606001613b51613ad6565b8152602001613b5e613ad6565b8152602001613b6b613abf565b8152602001613b78613abf565b8152602001613b85613ad6565b905290565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b8035611b4981615892565b8051611b4981615892565b600082601f830112613bed57600080fd5b8151613c00613bfb826156d5565b6156ae565b91508181835260208401935060208101905083856020840282011115613c2557600080fd5b60005b83811015613c515781613c3b8882613bd1565b8452506020928301929190910190600101613c28565b5050505092915050565b600082601f830112613c6c57600080fd5b8135613c7a613bfb826156d5565b81815260209384019390925082018360005b83811015613c515781358601613ca28882613f8c565b8452506020928301929190910190600101613c8c565b600082601f830112613cc957600080fd5b8135613cd7613bfb826156d5565b91508181835260208401935060208101905083856040840282011115613cfc57600080fd5b60005b83811015613c515781613d12888261418f565b84525060209092019160409190910190600101613cff565b600082601f830112613d3b57600080fd5b8135613d49613bfb826156d5565b91508181835260208401935060208101905083856040840282011115613d6e57600080fd5b60005b83811015613c515781613d8488826142dc565b84525060209092019160409190910190600101613d71565b600082601f830112613dad57600080fd5b8151613dbb613bfb826156d5565b91508181835260208401935060208101905083856040840282011115613de057600080fd5b60005b83811015613c515781613df68882614317565b84525060209092019160409190910190600101613de3565b600082601f830112613e1f57600080fd5b8151613e2d613bfb826156d5565b91508181835260208401935060208101905083856040840282011115613e5257600080fd5b60005b83811015613c515781613e688882614427565b84525060209092019160409190910190600101613e55565b600082601f830112613e9157600080fd5b8151613e9f613bfb826156d5565b91508181835260208401935060208101905083856020840282011115613ec457600080fd5b60005b83811015613c515781613eda8882614483565b8452506020928301929190910190600101613ec7565b8035611b49816158a6565b8051611b49816158a6565b600082601f830112613f1757600080fd5b8135613f25613bfb826156f6565b91508082526020830160208301858383011115613f4157600080fd5b613f4c838284615814565b50505092915050565b8035611b49816158af565b8051611b49816158af565b8035611b49816158b8565b8035611b49816158c5565b8051611b49816158d2565b60006101608284031215613f9f57600080fd5b613faa6101006156ae565b90506000613fb88484613f6b565b8252506020613fc984848301614478565b6020830152506040613fdd84828501614068565b60408301525060c0613ff184828501614478565b60608301525060e061400584828501614478565b60808301525061010061401a84828501613bc6565b60a08301525061012061402f84828501614478565b60c08301525061014082013567ffffffffffffffff81111561405057600080fd5b61405c84828501613f06565b60e08301525092915050565b60006080828403121561407a57600080fd5b61408460806156ae565b905060006140928484613ef0565b82525060206140a384848301613f76565b60208301525060406140b784828501613f76565b60408301525060606140cb84828501614478565b60608301525092915050565b6000602082840312156140e957600080fd5b6140f360206156ae565b905060006141018484614483565b82525092915050565b60006020828403121561411c57600080fd5b61412660206156ae565b905060006141018484614478565b60006060828403121561414657600080fd5b61415060606156ae565b9050600061415e8484614462565b825250602061416f84848301614462565b60208301525060406141838482850161448e565b60408301525092915050565b6000604082840312156141a157600080fd5b6141ab60406156ae565b905060006141b98484613bc6565b82525060206141ca84848301614478565b60208301525092915050565b600061020082840312156141e957600080fd5b6141f46101606156ae565b905060006142028484613bd1565b825250602061421384848301613efb565b6020830152506040614227848285016143fd565b604083015250608061423b84828501614134565b60608301525060e061424f84828501613f60565b60808301525061010061426484828501613f60565b60a083015250610120614279848285016140d7565b60c08301525061014061428e848285016140d7565b60e0830152506101606142a384828501614427565b610100830152506101a06142b984828501614427565b610120830152506101e06142cf848285016140d7565b6101408301525092915050565b6000604082840312156142ee57600080fd5b6142f860406156ae565b905060006143068484613bc6565b82525060206141ca84848301613ef0565b60006040828403121561432957600080fd5b61433360406156ae565b905060006143418484613efb565b82525060206141ca8484830161446d565b600060e0828403121561436457600080fd5b61436e60e06156ae565b9050600061437c8484614499565b825250602061438d84848301614499565b60208301525060406143a184828501614499565b60408301525060606143b584828501614499565b60608301525060806143c984828501614499565b60808301525060a06143dd848285016144a4565b60a08301525060c06143f18482850161446d565b60c08301525092915050565b60006040828403121561440f57600080fd5b61441960406156ae565b90506000614341848461446d565b60006040828403121561443957600080fd5b61444360406156ae565b905060006144518484613efb565b82525060206141ca84848301614483565b8051611b49816158df565b8051611b49816158e8565b8035611b49816158f1565b8051611b49816158f1565b8051611b49816158fa565b8051611b4981615903565b8051611b498161590c565b6000602082840312156144c157600080fd5b6000612e258484613bc6565b6000602082840312156144df57600080fd5b6000612e258484613bd1565b600080604083850312156144fe57600080fd5b600061450a8585613bc6565b925050602061451b85828601613bc6565b9150509250929050565b6000806040838503121561453857600080fd5b60006145448585613bc6565b925050602061451b85828601613ef0565b6000806040838503121561456857600080fd5b60006145748585613bc6565b925050602061451b85828601613f55565b60008060008060008060008060006101208a8c0312156145a457600080fd5b60006145b08c8c613bc6565b99505060206145c18c828d01613f55565b98505060406145d28c828d01613f55565b97505060606145e38c828d0161410a565b96505060806145f48c828d0161410a565b95505060a06146058c828d01614478565b94505060c06146168c828d01614478565b93505060e06146278c828d0161410a565b9250506101006146398c828d01613ef0565b9150509295985092959850929598565b6000806040838503121561465c57600080fd5b823567ffffffffffffffff81111561467357600080fd5b61467f85828601613cb8565b925050602083013567ffffffffffffffff81111561469c57600080fd5b61451b85828601613c5b565b6000602082840312156146ba57600080fd5b813567ffffffffffffffff8111156146d157600080fd5b612e2584828501613d2a565b6000602082840312156146ef57600080fd5b815167ffffffffffffffff81111561470657600080fd5b612e2584828501613e80565b6000806000806080858703121561472857600080fd5b845167ffffffffffffffff81111561473f57600080fd5b61474b87828801613e80565b945050602085015167ffffffffffffffff81111561476857600080fd5b61477487828801613bdc565b935050604085015167ffffffffffffffff81111561479157600080fd5b61479d87828801613d9c565b925050606085015167ffffffffffffffff8111156147ba57600080fd5b6147c687828801613e0e565b91505092959194509250565b6000602082840312156147e457600080fd5b6000612e258484613efb565b60006020828403121561480257600080fd5b6000612e258484613f55565b60006020828403121561482057600080fd5b6000612e258484613f60565b60006020828403121561483e57600080fd5b6000612e258484613f81565b60006020828403121561485c57600080fd5b6000612e25848461410a565b60006020828403121561487a57600080fd5b6000612e2584846140d7565b6000806040838503121561489957600080fd5b60006148a585856140d7565b925050602061451b858286016140d7565b6000606082840312156148c857600080fd5b6000612e258484614134565b6000604082840312156148e657600080fd5b6000612e25848461418f565b6000806060838503121561490557600080fd5b6000614911858561418f565b925050604061451b85828601614478565b60008060006080848603121561493757600080fd5b6000614943868661418f565b935050604061495486828701614478565b925050606061496586828701614478565b9150509250925092565b6000610200828403121561498257600080fd5b6000612e2584846141d6565b6000806000806102a085870312156149a557600080fd5b60006149b187876141d6565b9450506102006149c387828801614134565b9350506102606149d5878288016140d7565b9250506102806147c6878288016140d7565b6000604082840312156149f957600080fd5b6000612e258484614317565b600060e08284031215614a1757600080fd5b6000612e258484614352565b600060408284031215614a3557600080fd5b6000612e2584846143fd565b600060408284031215614a5357600080fd5b6000612e258484614427565b600060208284031215614a7157600080fd5b6000612e258484614478565b600060208284031215614a8f57600080fd5b6000612e258484614483565b60008060408385031215614aae57600080fd5b600061450a8585614478565b60008060408385031215614acd57600080fd5b60006145448585614478565b60008060408385031215614aec57600080fd5b60006145748585614478565b60008060408385031215614b0b57600080fd5b6000614b178585614478565b925050602061451b8582860161410a565b60008060408385031215614b3b57600080fd5b6000614b478585614478565b925050602061451b85828601614478565b6000614b648383614bb0565b505060200190565b6000611b468383614ef4565b6000614b848383615037565b505060400190565b6000614b848383615134565b6000614b8483836151f0565b6000614b648383615213565b614bb98161574f565b82525050565b6000614bca82615742565b614bd48185615746565b9350614bdf8361573c565b8060005b83811015614c0d578151614bf78882614b58565b9750614c028361573c565b925050600101614be3565b509495945050505050565b6000614c2382615742565b614c2d8185615746565b935083602082028501614c3f8561573c565b8060005b85811015614c795784840389528151614c5c8582614b6c565b9450614c678361573c565b60209a909a0199925050600101614c43565b5091979650505050505050565b6000614c9182615742565b614c9b8185615746565b9350614ca68361573c565b8060005b83811015614c0d578151614cbe8882614b78565b9750614cc98361573c565b925050600101614caa565b6000614cdf82615742565b614ce98185615746565b9350614cf48361573c565b8060005b83811015614c0d578151614d0c8882614b8c565b9750614d178361573c565b925050600101614cf8565b6000614d2d82615742565b614d378185615746565b9350614d428361573c565b8060005b83811015614c0d578151614d5a8882614b98565b9750614d658361573c565b925050600101614d46565b6000614d7b82615742565b614d858185615746565b9350614d908361573c565b8060005b83811015614c0d578151614da88882614ba4565b9750614db38361573c565b925050600101614d94565b614bb98161575a565b6000614dd282615742565b614ddc8185615746565b9350614dec818560208601615820565b614df58161584c565b9093019392505050565b614bb98161575f565b614bb9816157f3565b614bb9816157fe565b614bb981615809565b6000614e30602683615746565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b6000614e8f602083615746565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000614ec8601f83615746565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b8051600090610160840190614f098582614e08565b506020830151614f1c6020860182615213565b506040830151614f2f6040860182614f9f565b506060830151614f4260c0860182615213565b506080830151614f5560e0860182615213565b5060a0830151614f69610100860182614bb0565b5060c0830151614f7d610120860182615213565b5060e0830151848203610140860152614f968282614dc7565b95945050505050565b80516080830190614fb08482614dbe565b506020820151614fc36020850182614e11565b506040820151614fd66040850182614e11565b506060820151614fe96060850182615213565b50505050565b80516020830190614fe98482615213565b805160608301906150118482615201565b5060208201516150246020850182615201565b506040820151614fe9604085018261521c565b805160408301906150488482614bb0565b506020820151614fe96020850182615213565b805161020083019061506d8482614bb0565b5060208201516150806020850182614dbe565b50604082015161509360408501826151df565b5060608201516150a66080850182615000565b5060808201516150b960e0850182614dff565b5060a08201516150cd610100850182614dff565b5060c08201516150e1610120850182614fef565b5060e08201516150f5610140850182614fef565b5061010082015161510a6101608501826151f0565b5061012082015161511f6101a08501826151f0565b50610140820151614fe96101e0850182614fef565b805160408301906151458482614dbe565b506020820151614fe9602085018261520a565b805160e08301906151698482615225565b50602082015161517c6020850182615225565b50604082015161518f6040850182615225565b5060608201516151a26060850182615225565b5060808201516151b56080850182615225565b5060a08201516151c860a085018261522e565b5060c0820151614fe960c085018261520a565b9052565b80516040830190615145848261520a565b805160408301906150488482614dbe565b614bb981615788565b614bb98161579b565b614bb9816157c9565b614bb9816157cc565b614bb9816157d5565b614bb9816157e2565b60208101611b498284614bb0565b604081016152538285614bb0565b6116176020830184614dbe565b60208082528101611b468184614d70565b608080825281016152828187614d70565b905081810360208301526152968186614bbf565b905081810360408301526152aa8185614cd4565b905081810360608301526152be8184614d22565b9695505050505050565b60208101611b498284614dbe565b60208101611b498284614dff565b60208101611b498284614e1a565b60208082528101610c9681614e23565b60208082528101610c9681614e82565b60208082528101610c9681614ebb565b60208101611b498284614fef565b6040810161533e8285614fef565b6116176020830184614fef565b60608101611b498284615000565b6102008101611b49828461505b565b6102a08101615377828761505b565b615385610200830186615000565b615393610260830185614fef565b614f96610280830184614fef565b60408101611b498284615134565b60e08101611b498284615158565b60208101611b4982846151db565b604081016153d982856151db565b6116176020830184614bb0565b606081016153f482866151db565b6154016020830185614bb0565b612e256040830184614bb0565b6060810161541c82866151db565b6154296020830185614bb0565b612e256040830184614dbe565b6060810161544482866151db565b6154516020830185614bb0565b612e256040830184614dff565b610140810161546d828d6151db565b61547a602083018c614bb0565b615487604083018b614dff565b615494606083018a614dff565b6154a16080830189614fef565b6154ae60a0830188614fef565b6154bb60c0830187615213565b6154c860e0830186615213565b6154d6610100830185614fef565b6154e4610120830184614dbe565b9b9a5050505050505050505050565b6060810161550182866151db565b81810360208301526155138185614c86565b90508181036040830152614f968184614c18565b6040810161553582856151db565b6116176020830184614dff565b6040810161533e82856151db565b6060810161555e82856151db565b6116176020830184615037565b6080810161557982866151db565b6155866020830185615037565b612e256060830184615213565b60a081016155a182876151db565b6155ae6020830186615037565b6155bb6060830185615213565b614f966080830184615213565b604081016155d682856151db565b6116176020830184615213565b606081016155f182866151db565b6154016020830185615213565b6060810161560c82866151db565b6154296020830185615213565b6060810161562782866151db565b6154516020830185615213565b6060810161564282866151db565b61564f6020830185615213565b612e256040830184614fef565b6060810161566a82866151db565b6156776020830185615213565b612e256040830184615213565b60408101611b4982846151df565b60408101611b4982846151f0565b60208101611b498284615213565b60405181810167ffffffffffffffff811182821017156156cd57600080fd5b604052919050565b600067ffffffffffffffff8211156156ec57600080fd5b5060209081020190565b600067ffffffffffffffff82111561570d57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b6000610c96826157b0565b151590565b6000610c968261574f565b80610c9981615874565b80610c998161587e565b80610c9981615888565b6dffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b90565b63ffffffff1690565b67ffffffffffffffff1690565b6bffffffffffffffffffffffff1690565b6000610c968261576a565b6000610c9682615774565b6000610c968261577e565b82818337506000910152565b60005b8381101561583b578181015183820152602001615823565b83811115614fe95750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6009811061393957fe5b6002811061393957fe5b6003811061393957fe5b61589b8161574f565b811461393957600080fd5b61589b8161575a565b61589b8161575f565b6009811061393957600080fd5b6002811061393957600080fd5b6003811061393957600080fd5b61589b81615788565b61589b8161579b565b61589b816157c9565b61589b816157cc565b61589b816157d5565b61589b816157e256fea365627a7a72315820d2f238e8d8e9b0eefe9743e5b402282b8273d72f42fa8f60236492455c86c3cb6c6578706572696d656e74616cf564736f6c634300051000408be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e00000000000000000000000000000000000000000000000001bc16d674ec8000000000000000000000000000000000000000000000000000006f05b59d3b200000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000000000000000000000000000004563918244f400000000000000000000000000000000000000000000000000056bc75e2d63100000000000000000000000000000000000004b3b4ca85a86c47a098a2240000000000000000000000000000000000000000000000000000000000214e8348c4f000000000000000000000000000000000000000000000000000000b1a2bc2ec500000000000000000000000000000000000000000000000000000bcbce7f1b15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000c20e1058d2bcb26ad1a801130aee77c09500bf4000000000000000000000000000000000000000000000000000000000001e8480